diff options
Diffstat (limited to 'watch-library')
-rw-r--r-- | watch-library/simulator/shell.html | 10 | ||||
-rw-r--r-- | watch-library/simulator/watch/watch_led.c | 11 |
2 files changed, 19 insertions, 2 deletions
diff --git a/watch-library/simulator/shell.html b/watch-library/simulator/shell.html index 80e1e2ea..7b38a9aa 100644 --- a/watch-library/simulator/shell.html +++ b/watch-library/simulator/shell.html @@ -51,6 +51,14 @@ <stop offset="0.94" stop-color="#000d00" stop-opacity="0.05"/> <stop offset="1" stop-opacity="0"/> </radialGradient> + <filter id="ledcolor"> + <feColorMatrix in="SourceGraphic" type="matrix" + values=" 0 0 0 0 0 + 0 1 0 0 0 + 0 0 0 0 0 + 0 0 0 1 0 "/> + + </filter> </defs> <g id="Calque"> <g id="Contours"> @@ -71,7 +79,7 @@ <rect x="293.5" y="520" width="683" height="334" rx="34.68" style="fill: #777b7a"/> </g> <g id="light" style="opacity: 0"> - <rect x="293.5" y="520" width="683" height="334" rx="34.68" style="fill: url(#Dégradé_sans_nom_3)"/> + <rect x="293.5" y="520" width="683" height="334" rx="34.68" style="fill: url(#Dégradé_sans_nom_3)" filter="url(#ledcolor)"/> </g> </g> <g id="Textes"> diff --git a/watch-library/simulator/watch/watch_led.c b/watch-library/simulator/watch/watch_led.c index 068da8bd..249be056 100644 --- a/watch-library/simulator/watch/watch_led.c +++ b/watch-library/simulator/watch/watch_led.c @@ -32,7 +32,16 @@ void watch_disable_leds(void) {} void watch_set_led_color(uint8_t red, uint8_t green) { EM_ASM({ - document.getElementById('light').style.opacity = $1 / 255; + // the watch svg contains an feColorMatrix filter with id ledcolor + // and a green svg gradient that mimics the led being on + // https://developer.mozilla.org/en-US/docs/Web/SVG/Element/feColorMatrix + // this changes the color of the gradient to match the red+green combination + let filter = document.getElementById("ledcolor"); + let color_matrix = filter.children[0].values.baseVal; + console.log($0, $1); + color_matrix[1].value = $0 / 255; // red value + color_matrix[6].value = $1 / 255; // green value + document.getElementById('light').style.opacity = Math.min(255, $0 + $1) / 255; }, red, green); } |