skip apple pencil first n samples to overcome the initial pressure spike

This commit is contained in:
2018-10-24 13:10:23 +02:00
parent 73228a4bf1
commit 46a4b217bf
5 changed files with 16 additions and 11 deletions

View File

@@ -1861,15 +1861,14 @@
DEVELOPMENT_TEAM = ERD9AYQ49S; DEVELOPMENT_TEAM = ERD9AYQ49S;
FRAMEWORK_SEARCH_PATHS = ( FRAMEWORK_SEARCH_PATHS = (
"$(inherited)", "$(inherited)",
"$(PROJECT_DIR)/libs/hockeyapp/HockeySDK-iOS", "libs/hockeyapp/HockeySDK-iOS",
"$(PROJECT_DIR)/libs/hockeyapp/HockeySDK-iOS/HockeySDK.embeddedframework", "libs/hockeyapp/HockeySDK-iOS/HockeySDK.embeddedframework",
); );
HEADER_SEARCH_PATHS = ( HEADER_SEARCH_PATHS = (
libs/stb, libs/stb,
libs/glm, libs/glm,
libs/yoga, libs/yoga,
libs/tinyxml2, libs/tinyxml2,
/opt/local/include,
libs/jpeg, libs/jpeg,
libs/poly2tri/poly2tri, libs/poly2tri/poly2tri,
libs/base64, libs/base64,
@@ -1881,7 +1880,7 @@
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
LIBRARY_SEARCH_PATHS = ( LIBRARY_SEARCH_PATHS = (
"libs/curl-android-ios/iOS", "libs/curl-android-ios/iOS",
"$(PROJECT_DIR)/libs/libSonarPen", libs/libSonarPen,
); );
PRODUCT_BUNDLE_IDENTIFIER = com.omixlab.panopainter.ios; PRODUCT_BUNDLE_IDENTIFIER = com.omixlab.panopainter.ios;
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";
@@ -1900,15 +1899,14 @@
DEVELOPMENT_TEAM = ERD9AYQ49S; DEVELOPMENT_TEAM = ERD9AYQ49S;
FRAMEWORK_SEARCH_PATHS = ( FRAMEWORK_SEARCH_PATHS = (
"$(inherited)", "$(inherited)",
"$(PROJECT_DIR)/libs/hockeyapp/HockeySDK-iOS", "libs/hockeyapp/HockeySDK-iOS",
"$(PROJECT_DIR)/libs/hockeyapp/HockeySDK-iOS/HockeySDK.embeddedframework", "libs/hockeyapp/HockeySDK-iOS/HockeySDK.embeddedframework",
); );
HEADER_SEARCH_PATHS = ( HEADER_SEARCH_PATHS = (
libs/stb, libs/stb,
libs/glm, libs/glm,
libs/yoga, libs/yoga,
libs/tinyxml2, libs/tinyxml2,
/opt/local/include,
libs/jpeg, libs/jpeg,
libs/poly2tri/poly2tri, libs/poly2tri/poly2tri,
libs/base64, libs/base64,
@@ -1920,7 +1918,7 @@
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
LIBRARY_SEARCH_PATHS = ( LIBRARY_SEARCH_PATHS = (
"libs/curl-android-ios/iOS", "libs/curl-android-ios/iOS",
"$(PROJECT_DIR)/libs/libSonarPen", libs/libSonarPen,
); );
PRODUCT_BUNDLE_IDENTIFIER = com.omixlab.panopainter.ios; PRODUCT_BUNDLE_IDENTIFIER = com.omixlab.panopainter.ios;
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";

View File

@@ -206,6 +206,11 @@ void ui::Stroke::add_point(glm::vec2 pos, float pressure)
#ifdef __IOS__ #ifdef __IOS__
m_curve = glm::min(m_curve + 0.1f, 1.f); m_curve = glm::min(m_curve + 0.1f, 1.f);
//pressure = pressure * glm::pow(m_curve, 2.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__ #endif // __IOS__
//m_pressure_buff.add(pressure); //m_pressure_buff.add(pressure);
//pressure = m_pressure_buff.average(); //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) void ui::Stroke::start(const ui::Brush& brush)
{ {
m_hold_points.clear();
m_curve = 0.f; m_curve = 0.f;
m_curve_angles.clear(); m_curve_angles.clear();
m_pressure_buff.clear(); m_pressure_buff.clear();

View File

@@ -96,6 +96,7 @@ public:
cbuffer<glm::vec3, 3> m_hsv_jitter; cbuffer<glm::vec3, 3> m_hsv_jitter;
StrokeSample m_prev_sample; StrokeSample m_prev_sample;
std::vector<Keypoint> m_keypoints; std::vector<Keypoint> m_keypoints;
std::vector<std::pair<glm::vec2, float>> m_hold_points;
std::vector<StrokeSample> m_samples; std::vector<StrokeSample> m_samples;
int m_last_kp; int m_last_kp;
std::minstd_rand prng; std::minstd_rand prng;

View File

@@ -86,7 +86,7 @@ void CanvasModeBasicCamera::on_GestureEvent(GestureEvent* ge)
void CanvasModePen::on_MouseEvent(MouseEvent* me, glm::vec2& loc) 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) if (canvas->m_touch_lock && me->m_source == kEventSource::Touch)
return; 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) 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; auto pos = m_resizing ? m_size_pos_start : m_cur_pos;
if (App::I.keys[(int)kKey::KeyAlt] && !m_resizing) if (App::I.keys[(int)kKey::KeyAlt] && !m_resizing)

View File

@@ -38,7 +38,7 @@ public:
class CanvasModePen : public CanvasMode class CanvasModePen : public CanvasMode
{ {
bool m_touching = true; bool m_draw_tip = false;
bool m_dragging = false; bool m_dragging = false;
glm::vec2 m_pan_start; glm::vec2 m_pan_start;
glm::vec2 m_cur_pos; glm::vec2 m_cur_pos;