From 518ecf2a8f79005f7f2fc1d46bd034201a5e6d3b Mon Sep 17 00:00:00 2001 From: Yousef Khadadeh Date: Fri, 17 Apr 2026 10:14:48 +0300 Subject: [PATCH] Fixed selection tool dash movement in Emscripten --- src/DrawingProgram/DrawingProgram.cpp | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/DrawingProgram/DrawingProgram.cpp b/src/DrawingProgram/DrawingProgram.cpp index 022827a..997b06b 100644 --- a/src/DrawingProgram/DrawingProgram.cpp +++ b/src/DrawingProgram/DrawingProgram.cpp @@ -576,11 +576,14 @@ bool DrawingProgram::prevent_undo_or_redo() { } std::pair DrawingProgram::select_tool_line_paint(const DrawData& drawData) { - SkScalar intervals[] = {10, 10}; - SkScalar intervalSum = intervals[0] + intervals[1]; - float timeSinceEpoch = std::chrono::duration_cast>(std::chrono::steady_clock::now().time_since_epoch()).count(); - sk_sp lassoLineDashEffect1 = SkDashPathEffect::Make({intervals, 2}, -std::fmod(timeSinceEpoch * 10, intervalSum)); - sk_sp lassoLineDashEffect2 = SkDashPathEffect::Make({intervals, 2}, -std::fmod(timeSinceEpoch * 10, intervalSum) + 10); + constexpr uint64_t INTERVAL_LENGTH = 10; + constexpr uint64_t INTERVAL_SUM = INTERVAL_LENGTH * 2; + constexpr uint64_t DURATION_FACTOR = 10; + + SkScalar intervals[] = {INTERVAL_LENGTH, INTERVAL_LENGTH}; + uint64_t timeSinceEpoch = std::chrono::duration_cast(std::chrono::steady_clock::now().time_since_epoch()).count() % (INTERVAL_SUM * DURATION_FACTOR); + sk_sp lassoLineDashEffect1 = SkDashPathEffect::Make({intervals, 2}, -std::fmod(timeSinceEpoch / DURATION_FACTOR, INTERVAL_SUM)); + sk_sp lassoLineDashEffect2 = SkDashPathEffect::Make({intervals, 2}, -std::fmod(timeSinceEpoch / DURATION_FACTOR, INTERVAL_SUM) + INTERVAL_LENGTH); std::pair selectLinePaintPair; selectLinePaintPair.first.setStyle(SkPaint::kStroke_Style);