From cff3a993809d50bf1ba79f6116395c2d50f8bf48 Mon Sep 17 00:00:00 2001 From: crazysaem Date: Tue, 14 Dec 2021 10:34:42 +0000 Subject: [PATCH 1/4] ptlaunch: Respect theme colors. Fix: Do not pollute global space with internal variables ans functions in boot.js --- apps.json | 2 +- apps/ptlaunch/ChangeLog | 3 +- apps/ptlaunch/app.js | 14 +- apps/ptlaunch/boot.js | 326 ++++++++++++++++++++-------------------- 4 files changed, 173 insertions(+), 172 deletions(-) diff --git a/apps.json b/apps.json index c379a1de4..0a69096c8 100644 --- a/apps.json +++ b/apps.json @@ -4858,7 +4858,7 @@ "id": "ptlaunch", "name": "Pattern Launcher", "shortName": "Pattern Launcher", - "version": "0.10", + "version": "0.11", "description": "Directly launch apps from the clock screen with custom patterns.", "icon": "app.png", "screenshots": [{"url":"main_menu_add.png"}, {"url":"add_pattern.png"}, {"url":"select_app.png"}, {"url":"main_menu_manage.png"}, {"url":"manage_patterns.png"}], diff --git a/apps/ptlaunch/ChangeLog b/apps/ptlaunch/ChangeLog index de38d715a..23031cff3 100644 --- a/apps/ptlaunch/ChangeLog +++ b/apps/ptlaunch/ChangeLog @@ -1,4 +1,5 @@ 0.01: Initial creation of the pattern launch app 0.02: Turn on lcd when launching an app if the lock screen was disabled in the settings 0.03: Make tap to confirm new pattern more reliable. Also allow for easier creation of single circle patterns. -0.10: Improve the management of existing patterns: Draw the linked pattern on the left hand side of the app name within a scroller, similar to the default launcher. Slighlty clean up the code to make it less horrible. \ No newline at end of file +0.10: Improve the management of existing patterns: Draw the linked pattern on the left hand side of the app name within a scroller, similar to the default launcher. Slighlty clean up the code to make it less horrible. +0.11: Respect theme colors. Fix: Do not pollute global space with internal variables ans functions in boot.js \ No newline at end of file diff --git a/apps/ptlaunch/app.js b/apps/ptlaunch/app.js index b5a3bf610..9cd566e3d 100644 --- a/apps/ptlaunch/app.js +++ b/apps/ptlaunch/app.js @@ -119,8 +119,7 @@ var recognizeAndDrawPattern = () => { return new Promise((resolve) => { E.showMenu(); g.clear(); - g.setColor(0, 0, 0); - CIRCLES.forEach((circle) => drawCircle(circle)); + drawCirclesWithPattern([]); var pattern = []; @@ -369,7 +368,6 @@ var drawAppWithPattern = (i, r, storedPatterns) => { offset: { x: 1, y: 3 + r.y }, }); - g.setColor(0, 0, 0); if (!storedPattern.wrappedAppName) { storedPattern.wrappedAppName = g .wrapString(app.name, g.getWidth() - 64) @@ -490,7 +488,10 @@ var drawCircle = (circle, drawBuffer, scale) => { log("drawing circle"); log({ x: x, y: y, r: r }); + drawBuffer.setColor(0); drawBuffer.fillCircle(x, y, r); + drawBuffer.setColor(1); + drawBuffer.drawCircle(x, y, r); }; var cachedCirclesDrawings = {}; @@ -535,17 +536,16 @@ var drawCirclesWithPattern = (pattern, options) => { { msb: true } ); - drawBuffer.setColor(1); CIRCLES.forEach((circle) => drawCircle(circle, drawBuffer, scale)); - drawBuffer.setColor(0); + drawBuffer.setColor(1); drawBuffer.setFontAlign(0, 0); - drawBuffer.setFont("6x8", 4 * scale); + drawBuffer.setFont("Vector", scale === 1 ? 40 : 20); pattern.forEach((circleIndex, patternIndex) => { var circle = CIRCLES[circleIndex]; drawBuffer.drawString( patternIndex + 1, - circle.x * scale, + (circle.x + 5) * scale, circle.y * scale ); }); diff --git a/apps/ptlaunch/boot.js b/apps/ptlaunch/boot.js index a23607768..6fbd3ca41 100644 --- a/apps/ptlaunch/boot.js +++ b/apps/ptlaunch/boot.js @@ -1,167 +1,167 @@ -var DEBUG = true; -var log = (message) => { - if (DEBUG) { - console.log(JSON.stringify(message)); - } -}; - -var storedPatterns; -var positions = []; -var dragHandler = (position) => { - positions.push(position); - - debounce().then(() => { - log(positions.length); - - var CIRCLE_RADIUS = 25; - var CIRCLE_RADIUS_2 = CIRCLE_RADIUS * CIRCLE_RADIUS; - - var circles = [ - { x: 25, y: 25, i: 0 }, - { x: 87, y: 25, i: 1 }, - { x: 150, y: 25, i: 2 }, - { x: 25, y: 87, i: 3 }, - { x: 87, y: 87, i: 4 }, - { x: 150, y: 87, i: 5 }, - { x: 25, y: 150, i: 6 }, - { x: 87, y: 150, i: 7 }, - { x: 150, y: 150, i: 8 }, - ]; - var pattern = []; - - var step = Math.floor(positions.length / 100) + 1; - - var p, a, b, circle; - - for (var i = 0; i < positions.length; i += step) { - p = positions[i]; - - circle = circles[0]; - if (circle) { - a = p.x - circle.x; - b = p.y - circle.y; - if (CIRCLE_RADIUS_2 - (a * a + b * b) >= 0) { - pattern.push(circle.i); - circles.splice(0, 1); - } - } - - circle = circles[1]; - if (circle) { - a = p.x - circle.x; - b = p.y - circle.y; - if (CIRCLE_RADIUS_2 - (a * a + b * b) >= 0) { - pattern.push(circle.i); - circles.splice(1, 1); - } - } - - circle = circles[2]; - if (circle) { - a = p.x - circle.x; - b = p.y - circle.y; - if (CIRCLE_RADIUS_2 - (a * a + b * b) >= 0) { - pattern.push(circle.i); - circles.splice(2, 1); - } - } - - circle = circles[3]; - if (circle) { - a = p.x - circle.x; - b = p.y - circle.y; - if (CIRCLE_RADIUS_2 - (a * a + b * b) >= 0) { - pattern.push(circle.i); - circles.splice(3, 1); - } - } - - circle = circles[4]; - if (circle) { - a = p.x - circle.x; - b = p.y - circle.y; - if (CIRCLE_RADIUS_2 - (a * a + b * b) >= 0) { - pattern.push(circle.i); - circles.splice(4, 1); - } - } - - circle = circles[5]; - if (circle) { - a = p.x - circle.x; - b = p.y - circle.y; - if (CIRCLE_RADIUS_2 - (a * a + b * b) >= 0) { - pattern.push(circle.i); - circles.splice(5, 1); - } - } - - circle = circles[6]; - if (circle) { - a = p.x - circle.x; - b = p.y - circle.y; - if (CIRCLE_RADIUS_2 - (a * a + b * b) >= 0) { - pattern.push(circle.i); - circles.splice(6, 1); - } - } - circle = circles[7]; - if (circle) { - a = p.x - circle.x; - b = p.y - circle.y; - if (CIRCLE_RADIUS_2 - (a * a + b * b) >= 0) { - pattern.push(circle.i); - circles.splice(7, 1); - } - } - - circle = circles[8]; - if (circle) { - a = p.x - circle.x; - b = p.y - circle.y; - if (CIRCLE_RADIUS_2 - (a * a + b * b) >= 0) { - pattern.push(circle.i); - circles.splice(8, 1); - } - } - } - positions = []; - - pattern = pattern.join(""); - - if (pattern) { - if (storedPatterns[pattern]) { - var app = storedPatterns[pattern].app; - if (!!app && !!app.src) { - if (storedPatterns.settings) { - if (storedPatterns.settings.lockDisabled) { - Bangle.setLCDPower(true); - } - } - - Bangle.removeListener("drag", dragHandler); - load(app.src); - } - } - } - }); -}; - -var debounceTimeoutId; -var debounce = (delay) => { - if (debounceTimeoutId) { - clearTimeout(debounceTimeoutId); - } - - return new Promise((resolve) => { - debounceTimeoutId = setTimeout(() => { - debounceTimeoutId = undefined; - resolve(); - }, delay || 500); - }); -}; - (function () { + var DEBUG = false; + var log = (message) => { + if (DEBUG) { + console.log(JSON.stringify(message)); + } + }; + + var storedPatterns; + var positions = []; + var dragHandler = (position) => { + positions.push(position); + + debounce().then(() => { + log(positions.length); + + var CIRCLE_RADIUS = 25; + var CIRCLE_RADIUS_2 = CIRCLE_RADIUS * CIRCLE_RADIUS; + + var circles = [ + { x: 25, y: 25, i: 0 }, + { x: 87, y: 25, i: 1 }, + { x: 150, y: 25, i: 2 }, + { x: 25, y: 87, i: 3 }, + { x: 87, y: 87, i: 4 }, + { x: 150, y: 87, i: 5 }, + { x: 25, y: 150, i: 6 }, + { x: 87, y: 150, i: 7 }, + { x: 150, y: 150, i: 8 }, + ]; + var pattern = []; + + var step = Math.floor(positions.length / 100) + 1; + + var p, a, b, circle; + + for (var i = 0; i < positions.length; i += step) { + p = positions[i]; + + circle = circles[0]; + if (circle) { + a = p.x - circle.x; + b = p.y - circle.y; + if (CIRCLE_RADIUS_2 - (a * a + b * b) >= 0) { + pattern.push(circle.i); + circles.splice(0, 1); + } + } + + circle = circles[1]; + if (circle) { + a = p.x - circle.x; + b = p.y - circle.y; + if (CIRCLE_RADIUS_2 - (a * a + b * b) >= 0) { + pattern.push(circle.i); + circles.splice(1, 1); + } + } + + circle = circles[2]; + if (circle) { + a = p.x - circle.x; + b = p.y - circle.y; + if (CIRCLE_RADIUS_2 - (a * a + b * b) >= 0) { + pattern.push(circle.i); + circles.splice(2, 1); + } + } + + circle = circles[3]; + if (circle) { + a = p.x - circle.x; + b = p.y - circle.y; + if (CIRCLE_RADIUS_2 - (a * a + b * b) >= 0) { + pattern.push(circle.i); + circles.splice(3, 1); + } + } + + circle = circles[4]; + if (circle) { + a = p.x - circle.x; + b = p.y - circle.y; + if (CIRCLE_RADIUS_2 - (a * a + b * b) >= 0) { + pattern.push(circle.i); + circles.splice(4, 1); + } + } + + circle = circles[5]; + if (circle) { + a = p.x - circle.x; + b = p.y - circle.y; + if (CIRCLE_RADIUS_2 - (a * a + b * b) >= 0) { + pattern.push(circle.i); + circles.splice(5, 1); + } + } + + circle = circles[6]; + if (circle) { + a = p.x - circle.x; + b = p.y - circle.y; + if (CIRCLE_RADIUS_2 - (a * a + b * b) >= 0) { + pattern.push(circle.i); + circles.splice(6, 1); + } + } + circle = circles[7]; + if (circle) { + a = p.x - circle.x; + b = p.y - circle.y; + if (CIRCLE_RADIUS_2 - (a * a + b * b) >= 0) { + pattern.push(circle.i); + circles.splice(7, 1); + } + } + + circle = circles[8]; + if (circle) { + a = p.x - circle.x; + b = p.y - circle.y; + if (CIRCLE_RADIUS_2 - (a * a + b * b) >= 0) { + pattern.push(circle.i); + circles.splice(8, 1); + } + } + } + positions = []; + + pattern = pattern.join(""); + + if (pattern) { + if (storedPatterns[pattern]) { + var app = storedPatterns[pattern].app; + if (!!app && !!app.src) { + if (storedPatterns.settings) { + if (storedPatterns.settings.lockDisabled) { + Bangle.setLCDPower(true); + } + } + + Bangle.removeListener("drag", dragHandler); + load(app.src); + } + } + } + }); + }; + + var debounceTimeoutId; + var debounce = (delay) => { + if (debounceTimeoutId) { + clearTimeout(debounceTimeoutId); + } + + return new Promise((resolve) => { + debounceTimeoutId = setTimeout(() => { + debounceTimeoutId = undefined; + resolve(); + }, delay || 500); + }); + }; + var sui = Bangle.setUI; Bangle.setUI = function (mode, cb) { sui(mode, cb); From fd6fa1522a5ddaa5b92661cdc06fb44f8f056d00 Mon Sep 17 00:00:00 2001 From: crazysaem Date: Tue, 14 Dec 2021 20:54:35 +0000 Subject: [PATCH 2/4] ptlaunch: update screenshots --- apps.json | 2 +- apps/ptlaunch/README.md | 17 ++++++++++++----- apps/ptlaunch/add_pattern.png | Bin 2642 -> 0 bytes apps/ptlaunch/add_pattern_dark.png | Bin 0 -> 3185 bytes apps/ptlaunch/add_pattern_light.png | Bin 0 -> 3202 bytes apps/ptlaunch/app.js | 7 ++----- apps/ptlaunch/main_menu_add_dark.png | Bin 0 -> 2872 bytes ...in_menu_add.png => main_menu_add_light.png} | Bin apps/ptlaunch/main_menu_manage_dark.png | Bin 0 -> 2863 bytes ...u_manage.png => main_menu_manage_light.png} | Bin apps/ptlaunch/manage_patterns.png | Bin 2670 -> 0 bytes apps/ptlaunch/manage_patterns_dark.png | Bin 0 -> 3008 bytes apps/ptlaunch/manage_patterns_light.png | Bin 0 -> 3027 bytes apps/ptlaunch/select_app_dark.png | Bin 0 -> 2898 bytes .../{select_app.png => select_app_light.png} | Bin 15 files changed, 15 insertions(+), 11 deletions(-) delete mode 100644 apps/ptlaunch/add_pattern.png create mode 100644 apps/ptlaunch/add_pattern_dark.png create mode 100644 apps/ptlaunch/add_pattern_light.png create mode 100644 apps/ptlaunch/main_menu_add_dark.png rename apps/ptlaunch/{main_menu_add.png => main_menu_add_light.png} (100%) create mode 100644 apps/ptlaunch/main_menu_manage_dark.png rename apps/ptlaunch/{main_menu_manage.png => main_menu_manage_light.png} (100%) delete mode 100644 apps/ptlaunch/manage_patterns.png create mode 100644 apps/ptlaunch/manage_patterns_dark.png create mode 100644 apps/ptlaunch/manage_patterns_light.png create mode 100644 apps/ptlaunch/select_app_dark.png rename apps/ptlaunch/{select_app.png => select_app_light.png} (100%) diff --git a/apps.json b/apps.json index 0a69096c8..c28c6686c 100644 --- a/apps.json +++ b/apps.json @@ -4861,7 +4861,7 @@ "version": "0.11", "description": "Directly launch apps from the clock screen with custom patterns.", "icon": "app.png", - "screenshots": [{"url":"main_menu_add.png"}, {"url":"add_pattern.png"}, {"url":"select_app.png"}, {"url":"main_menu_manage.png"}, {"url":"manage_patterns.png"}], + "screenshots": [{"url":"manage_patterns_light.png"}], "tags": "tools", "supports": ["BANGLEJS2"], "readme": "README.md", diff --git a/apps/ptlaunch/README.md b/apps/ptlaunch/README.md index 8d61afece..7cc39e3d6 100644 --- a/apps/ptlaunch/README.md +++ b/apps/ptlaunch/README.md @@ -10,14 +10,21 @@ Then launch the linked apps directly from the clock screen by simply drawing the ## Add Pattern Screenshots -![](main_menu_add.png) -![](add_pattern.png) -![](select_app.png) +![](main_menu_add_light.png) +![](add_pattern_light.png) +![](select_app_light.png) + +![](main_menu_add_dark.png) +![](add_pattern_dark.png) +![](select_app_dark.png) ## Manage Pattern Screenshots -![](main_menu_manage.png) -![](manage_patterns.png) +![](main_menu_manage_light.png) +![](manage_patterns_light.png) + +![](main_menu_manage_dark.png) +![](manage_patterns_dark.png) ## Detailed Steps diff --git a/apps/ptlaunch/add_pattern.png b/apps/ptlaunch/add_pattern.png deleted file mode 100644 index c7cc38e82c25b4661bc026ce7dd5901c77fb9f7f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2642 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 literal 0 HcmV?d00001 diff --git a/apps/ptlaunch/add_pattern_light.png b/apps/ptlaunch/add_pattern_light.png new file mode 100644 index 0000000000000000000000000000000000000000..47549b43e718f0929a1b58bb7dd71e3ff71f6b2d GIT binary patch literal 3202 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 l8rwYIwsec%<81V { }, }; - var appList = getAppList(); - appList.forEach((app) => { - selectAppMenu[app.name] = () => { + [].forEach((app) => { + selectAppMenu[app] = () => { log("app selected"); - log(app); - resolve(app); }; }); diff --git a/apps/ptlaunch/main_menu_add_dark.png b/apps/ptlaunch/main_menu_add_dark.png new file mode 100644 index 0000000000000000000000000000000000000000..4c1564ecadefd9f7289ecd436e1b166208a8ee39 GIT binary patch literal 2872 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 G{eJ*RlwsQd literal 0 HcmV?d00001 diff --git a/apps/ptlaunch/main_menu_manage.png b/apps/ptlaunch/main_menu_manage_light.png similarity index 100% rename from apps/ptlaunch/main_menu_manage.png rename to apps/ptlaunch/main_menu_manage_light.png diff --git a/apps/ptlaunch/manage_patterns.png b/apps/ptlaunch/manage_patterns.png deleted file mode 100644 index 82b10ad43a60ea3b38c39c2bb1f4491235f0dabc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2670 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 aeV|ihqCHlzjQt}A082A8^66P@^#1^?Kzw)r literal 0 HcmV?d00001 diff --git a/apps/ptlaunch/manage_patterns_light.png b/apps/ptlaunch/manage_patterns_light.png new file mode 100644 index 0000000000000000000000000000000000000000..5e4b27131e5531a7b3191c7664543c5e542d3607 GIT binary patch literal 3027 zcmb`Jc{tSD8^FKwWirOjBqmEt%35lW$Pi-&*|!*L_LynNa)+PGSP~IQu|$nw*b_1#$c%>bkg?Ga5sKqXJt%j$V9%IeA3Qk^X&sw%58bTYEA zGOSP63sqMV%nS2N&&)Dgk{yu}n-`P^>Gs-io_c&I{^Vw6NJeUSiU`EL;tLO`SC08> zxYxODqW&xi{oov$cNT`stV=Qm_RV3w!&YD}% zxIkQEwKNC1+KwDul37lj1goA*yxwU7aKI-*(nz#D?N zN5W!SIJB-r53F{IC-7%vWTHqY5(Q+~jUbppO0K|Y{uaZs-E*BO6%JVrYB!4gLP5hf zUv^#8aBEB3vvUGwtk0yk!(puUZo42C2qZ)MzNrtCH}vbQvQ`xp=sOjT(U8b|u7k&GfXYGQ;28oLW?p%kv@7iiz z=6c#zGjHDB2$=tHyOdw`1T`tK`%*5rq4h;N%Al~!HPxMeQUeKLxOE&0sogsz{OYI` zsbuC=d`Hnsm3yszl zdwrYhyeEZNj~cb>41k7d`s$G!amv{vY?myrA#1t!m@9O-onI;rWTqj+tRs>Afp5lH zZ<%Mt{b-!XM(0+S=|?!_m!DzFoSzuq-q~&9_Ct5P_JKoGsa4^;NzSnG!s*HondR|)+iF*52%C+Spb*cn|S`~wki{a+sdXY zdX1A+jBWcsMbN)J%9$bd8>}U}6IzFE^%?#)m2`!-v1zP~ZzuNgwHpf6Uvi_R)??(? zA9svW=ByAOQhznb@2|*h(Vy7wBu~H!#4kmul+ES1TBZ2pDOANyJz=6~dTrU0Nmjr#&wEl=E~$fA4s5^b1LkE!}tXm1uhOYN%TqlC(-^Koh443C61d!&t(B}>+i zj2BB4U-1iF$6W&J_-eIFn+^iztWm3;*lFQV8*_2UPB7o7+WrceQw^Y3aS*=%g;H78 z{`JXn=!O;{M6Ws!S^X%tP++TOm>pj1SUdKI5`e*v&K#;a#DtVlIL_DI_P^|Uyon?T zyo|jwa^tb{lj_3hIk)mnW=}bVb0iqw@sAp$>>_F>jUbGuxLk5!Fe_f=^_yE0`Bwuf zjMCGk<)1te|?lXZX|FAbqJl&U}Jh;-|2aYs2f= z@$8+hkj#zYLCFZ={ZnUJ_UGxEgm-Ryoug=-XI_3;;>npN35K1WS<6=^7AB@jalKE>uNL`E&_A);dgprfkOQf7?IWWCu!AS-c1HX-jvm9|eGm6X!& zNo~`kw8Jh*u*{atMm^>DiZgRWDbma356D7hA2^PqJx9= zpPAWWrwPZlFL|2=vx-K&cw%^loVKRe6^1K@JsuaryPR;M2R0$m3LNB>2<%HR z4bM{htcQ6#ZOWV33O8nXCRR+`+1CWKZ{x5L6UaF`p1|Ek+@H!Yu|1e(MXax!%zyBM zMZ$g_0=t*1nnl7kH6$*#Kad%)7K7xx^5; zHxQ*>D{6*l6R;X%We!H{gu!Q6h$-SzW=1NZ-m0A2M&yb^5q3rZe&{|)k6Rd99wPSMp+uE2t({1jV9sO7iWBwL^$$twRgN&|?y(p9hP)b%)jmqbpAv}dU0qTJe;zCg*^pVHK#H>yAB#e69j>J>!C_>9Yr;8E)ON#7&R zN9@zVjd>@H5tv{EW2>7R2kQ?hd))FM ucK=Gp7($decD|Hi%xyXDxu5SVW5%~*$4A3zqPMwSI$&;Ujjb{EPW&&J#d#wD literal 0 HcmV?d00001 diff --git a/apps/ptlaunch/select_app_dark.png b/apps/ptlaunch/select_app_dark.png new file mode 100644 index 0000000000000000000000000000000000000000..422f2b5e2ef60255a751c81fd8599eaa70d2fa0b GIT binary patch literal 2898 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 literal 0 HcmV?d00001 diff --git a/apps/ptlaunch/select_app.png b/apps/ptlaunch/select_app_light.png similarity index 100% rename from apps/ptlaunch/select_app.png rename to apps/ptlaunch/select_app_light.png From c52f57f5bad9a50cae8931ec56ebf160eacf4f49 Mon Sep 17 00:00:00 2001 From: crazysaem Date: Tue, 14 Dec 2021 20:59:06 +0000 Subject: [PATCH 3/4] ptlaunch: fix setup for screenshots --- apps/ptlaunch/app.js | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/apps/ptlaunch/app.js b/apps/ptlaunch/app.js index 06c38e391..d3b4dd1aa 100644 --- a/apps/ptlaunch/app.js +++ b/apps/ptlaunch/app.js @@ -323,9 +323,12 @@ var getSelectedApp = () => { }, }; - [].forEach((app) => { - selectAppMenu[app] = () => { + var appList = getAppList(); + appList.forEach((app) => { + selectAppMenu[app.name] = () => { log("app selected"); + log(app); + resolve(app); }; }); @@ -537,12 +540,12 @@ var drawCirclesWithPattern = (pattern, options) => { drawBuffer.setColor(1); drawBuffer.setFontAlign(0, 0); - drawBuffer.setFont("Vector", scale === 1 ? 40 : 20); + drawBuffer.setFont("Vector", 40 * scale); pattern.forEach((circleIndex, patternIndex) => { var circle = CIRCLES[circleIndex]; drawBuffer.drawString( patternIndex + 1, - (circle.x + 5) * scale, + (circle.x + (scale === 1 ? 1 : 5)) * scale, circle.y * scale ); }); From eeed392782d92a6f10c9d0083de8e92d584fa19e Mon Sep 17 00:00:00 2001 From: crazysaem Date: Wed, 15 Dec 2021 20:12:30 +0000 Subject: [PATCH 4/4] ptlaunch: remove now redundant draw call, and also remove all setColor calls since we now only need the fg color which is the default anyways --- apps/ptlaunch/app.js | 4 ---- 1 file changed, 4 deletions(-) diff --git a/apps/ptlaunch/app.js b/apps/ptlaunch/app.js index d3b4dd1aa..062cc3c62 100644 --- a/apps/ptlaunch/app.js +++ b/apps/ptlaunch/app.js @@ -488,9 +488,6 @@ var drawCircle = (circle, drawBuffer, scale) => { log("drawing circle"); log({ x: x, y: y, r: r }); - drawBuffer.setColor(0); - drawBuffer.fillCircle(x, y, r); - drawBuffer.setColor(1); drawBuffer.drawCircle(x, y, r); }; @@ -538,7 +535,6 @@ var drawCirclesWithPattern = (pattern, options) => { CIRCLES.forEach((circle) => drawCircle(circle, drawBuffer, scale)); - drawBuffer.setColor(1); drawBuffer.setFontAlign(0, 0); drawBuffer.setFont("Vector", 40 * scale); pattern.forEach((circleIndex, patternIndex) => {