From 46a4b217bfc43f63c4a3e70610bbafdd192148c0 Mon Sep 17 00:00:00 2001 From: omigamedev Date: Wed, 24 Oct 2018 13:10:23 +0200 Subject: [PATCH] skip apple pencil first n samples to overcome the initial pressure spike --- PanoPainter.xcodeproj/project.pbxproj | 14 ++++++-------- src/brush.cpp | 6 ++++++ src/brush.h | 1 + src/canvas_modes.cpp | 4 ++-- src/canvas_modes.h | 2 +- 5 files changed, 16 insertions(+), 11 deletions(-) diff --git a/PanoPainter.xcodeproj/project.pbxproj b/PanoPainter.xcodeproj/project.pbxproj index 6794ba6..ae94591 100644 --- a/PanoPainter.xcodeproj/project.pbxproj +++ b/PanoPainter.xcodeproj/project.pbxproj @@ -1861,15 +1861,14 @@ DEVELOPMENT_TEAM = ERD9AYQ49S; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", - "$(PROJECT_DIR)/libs/hockeyapp/HockeySDK-iOS", - "$(PROJECT_DIR)/libs/hockeyapp/HockeySDK-iOS/HockeySDK.embeddedframework", + "libs/hockeyapp/HockeySDK-iOS", + "libs/hockeyapp/HockeySDK-iOS/HockeySDK.embeddedframework", ); HEADER_SEARCH_PATHS = ( libs/stb, libs/glm, libs/yoga, libs/tinyxml2, - /opt/local/include, libs/jpeg, libs/poly2tri/poly2tri, libs/base64, @@ -1881,7 +1880,7 @@ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; LIBRARY_SEARCH_PATHS = ( "libs/curl-android-ios/iOS", - "$(PROJECT_DIR)/libs/libSonarPen", + libs/libSonarPen, ); PRODUCT_BUNDLE_IDENTIFIER = com.omixlab.panopainter.ios; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -1900,15 +1899,14 @@ DEVELOPMENT_TEAM = ERD9AYQ49S; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", - "$(PROJECT_DIR)/libs/hockeyapp/HockeySDK-iOS", - "$(PROJECT_DIR)/libs/hockeyapp/HockeySDK-iOS/HockeySDK.embeddedframework", + "libs/hockeyapp/HockeySDK-iOS", + "libs/hockeyapp/HockeySDK-iOS/HockeySDK.embeddedframework", ); HEADER_SEARCH_PATHS = ( libs/stb, libs/glm, libs/yoga, libs/tinyxml2, - /opt/local/include, libs/jpeg, libs/poly2tri/poly2tri, libs/base64, @@ -1920,7 +1918,7 @@ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; LIBRARY_SEARCH_PATHS = ( "libs/curl-android-ios/iOS", - "$(PROJECT_DIR)/libs/libSonarPen", + libs/libSonarPen, ); PRODUCT_BUNDLE_IDENTIFIER = com.omixlab.panopainter.ios; PRODUCT_NAME = "$(TARGET_NAME)"; diff --git a/src/brush.cpp b/src/brush.cpp index 9bed6f8..004d6b8 100644 --- a/src/brush.cpp +++ b/src/brush.cpp @@ -206,6 +206,11 @@ void ui::Stroke::add_point(glm::vec2 pos, float pressure) #ifdef __IOS__ m_curve = glm::min(m_curve + 0.1f, 1.f); //pressure = pressure * glm::pow(m_curve, 2.f); + if (m_hold_points.size() < 5) + { + m_hold_points.push_back({pos, pressure}); + return; + } #endif // __IOS__ //m_pressure_buff.add(pressure); //pressure = m_pressure_buff.average(); @@ -227,6 +232,7 @@ void ui::Stroke::add_point(glm::vec2 pos, float pressure) } void ui::Stroke::start(const ui::Brush& brush) { + m_hold_points.clear(); m_curve = 0.f; m_curve_angles.clear(); m_pressure_buff.clear(); diff --git a/src/brush.h b/src/brush.h index d1bb393..36d132b 100644 --- a/src/brush.h +++ b/src/brush.h @@ -96,6 +96,7 @@ public: cbuffer m_hsv_jitter; StrokeSample m_prev_sample; std::vector m_keypoints; + std::vector> m_hold_points; std::vector m_samples; int m_last_kp; std::minstd_rand prng; diff --git a/src/canvas_modes.cpp b/src/canvas_modes.cpp index 81df12f..fc0d69b 100644 --- a/src/canvas_modes.cpp +++ b/src/canvas_modes.cpp @@ -86,7 +86,7 @@ void CanvasModeBasicCamera::on_GestureEvent(GestureEvent* ge) void CanvasModePen::on_MouseEvent(MouseEvent* me, glm::vec2& loc) { - m_touching = (me->m_source == kEventSource::Touch); + m_draw_tip = (me->m_source == kEventSource::Mouse); if (canvas->m_touch_lock && me->m_source == kEventSource::Touch) return; @@ -178,7 +178,7 @@ void CanvasModePen::on_MouseEvent(MouseEvent* me, glm::vec2& loc) void CanvasModePen::on_Draw(const glm::mat4& ortho, const glm::mat4& proj, const glm::mat4& camera) { - if (!m_touching) + if (m_draw_tip) { auto pos = m_resizing ? m_size_pos_start : m_cur_pos; if (App::I.keys[(int)kKey::KeyAlt] && !m_resizing) diff --git a/src/canvas_modes.h b/src/canvas_modes.h index 3c6c55e..fb76c8c 100644 --- a/src/canvas_modes.h +++ b/src/canvas_modes.h @@ -38,7 +38,7 @@ public: class CanvasModePen : public CanvasMode { - bool m_touching = true; + bool m_draw_tip = false; bool m_dragging = false; glm::vec2 m_pan_start; glm::vec2 m_cur_pos;