Indicators
@ -1,6 +1,5 @@
|
||||
SVGS = $(wildcard ./*.svg)
|
||||
TARGET_BMPS = $(SVGS:.svg=.bmp)
|
||||
SIZE = 45
|
||||
BACKCOLOR = 080808
|
||||
|
||||
.PHONY: all
|
||||
@ -15,5 +14,5 @@ clean:
|
||||
@convert $< -background "#$(BACKCOLOR)" -alpha remove -define bmp:subtype=RGB565 $@
|
||||
|
||||
%.png: %.svg
|
||||
inkscape -h $(SIZE) -w $(SIZE) $< -o $@
|
||||
inkscape $< -o $@
|
||||
|
||||
|
||||
BIN
assets/a.bmp
Normal file
|
After Width: | Height: | Size: 4.2 KiB |
52
assets/a.svg
Normal file
@ -0,0 +1,52 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
width="45"
|
||||
height="45"
|
||||
viewBox="0 0 28.421052 28.421053"
|
||||
stroke-width="1.6"
|
||||
fill="none"
|
||||
color="#bababa"
|
||||
data-darkreader-inline-color=""
|
||||
version="1.1"
|
||||
id="svg1"
|
||||
sodipodi:docname="humidity-icon.svg"
|
||||
inkscape:version="1.4.2 (ebf0e940d0, 2025-05-08)"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg">
|
||||
<defs
|
||||
id="defs1" />
|
||||
<sodipodi:namedview
|
||||
id="namedview1"
|
||||
pagecolor="#000000"
|
||||
bordercolor="#000000"
|
||||
borderopacity="0.25"
|
||||
inkscape:showpageshadow="2"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pagecheckerboard="0"
|
||||
inkscape:deskcolor="#d1d1d1"
|
||||
inkscape:zoom="9.5273334"
|
||||
inkscape:cx="19.942621"
|
||||
inkscape:cy="22.829053"
|
||||
inkscape:window-width="1916"
|
||||
inkscape:window-height="1032"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="0"
|
||||
inkscape:current-layer="svg1" />
|
||||
<rect
|
||||
style="fill:#242424;stroke-width:11.5955;paint-order:markers stroke fill;fill-opacity:1"
|
||||
id="rect1"
|
||||
width="28.421053"
|
||||
height="28.421053"
|
||||
x="-2.1636963e-07"
|
||||
y="-2.1636963e-07" />
|
||||
<path
|
||||
d="m 23.127726,16.838624 c 0,-5.022692 -9.094383,-13.6415758 -9.094383,-13.6415758 0,0 -9.0943834,8.6188838 -9.0943834,13.6415758 0,5.022714 4.0716919,9.094383 9.0943834,9.094383 5.022714,0 9.094383,-4.071669 9.094383,-9.094383 z"
|
||||
stroke="#bababa"
|
||||
stroke-width="1.6"
|
||||
data-darkreader-inline-stroke=""
|
||||
style="stroke:#0137f1;stroke-width:4.04437;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="path1" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.7 KiB |
|
Before Width: | Height: | Size: 4.2 KiB After Width: | Height: | Size: 4.2 KiB |
@ -2,9 +2,9 @@
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
width="100mm"
|
||||
height="100mm"
|
||||
viewBox="0 0 100 100"
|
||||
width="45"
|
||||
height="45"
|
||||
viewBox="0 0 11.90625 11.90625"
|
||||
version="1.1"
|
||||
id="svg1"
|
||||
inkscape:version="1.4.2 (ebf0e940d0, 2025-05-08)"
|
||||
@ -23,9 +23,9 @@
|
||||
inkscape:pagecheckerboard="0"
|
||||
inkscape:deskcolor="#d1d1d1"
|
||||
inkscape:document-units="mm"
|
||||
inkscape:zoom="0.64"
|
||||
inkscape:cx="-160.15625"
|
||||
inkscape:cy="294.53125"
|
||||
inkscape:zoom="7.6922777"
|
||||
inkscape:cx="29.510115"
|
||||
inkscape:cy="28.27511"
|
||||
inkscape:window-width="1916"
|
||||
inkscape:window-height="1032"
|
||||
inkscape:window-x="0"
|
||||
@ -37,45 +37,53 @@
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1">
|
||||
id="layer1"
|
||||
transform="translate(0.08272917,0.15224179)">
|
||||
<rect
|
||||
style="fill:#242424;fill-opacity:1;stroke:none;stroke-width:1.6006;stroke-dasharray:6.40237, 3.20118, 1.6006, 3.20118;paint-order:markers stroke fill"
|
||||
id="rect1"
|
||||
width="11.90625"
|
||||
height="11.90625"
|
||||
x="-0.082729168"
|
||||
y="-0.1522418" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:36.3189px;font-family:'ProFont IIx Nerd Font Propo';-inkscape-font-specification:'ProFont IIx Nerd Font Propo';text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;fill:#00ade7;fill-opacity:1;stroke-width:2.26994;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:0.2"
|
||||
x="76.022087"
|
||||
y="74.254074"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.74984px;font-family:'ProFont IIx Nerd Font Propo';-inkscape-font-specification:'ProFont IIx Nerd Font Propo';text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;fill:#00ade7;fill-opacity:1;stroke-width:0.296867;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:0.2"
|
||||
x="9.2658949"
|
||||
y="8.814003"
|
||||
id="text1-3"
|
||||
transform="scale(0.98156475,1.0187815)"
|
||||
inkscape:label="2"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan1-6"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:36.3189px;font-family:'ProFont IIx Nerd Font Propo';-inkscape-font-specification:'ProFont IIx Nerd Font Propo';fill:#00ade7;fill-opacity:1;stroke-width:2.26994"
|
||||
x="76.022087"
|
||||
y="74.254074">2</tspan></text>
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.74984px;font-family:'ProFont IIx Nerd Font Propo';-inkscape-font-specification:'ProFont IIx Nerd Font Propo';fill:#00ade7;fill-opacity:1;stroke-width:0.296867"
|
||||
x="9.2658949"
|
||||
y="8.814003">2</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:56.1282px;font-family:'ProFont IIx Nerd Font Propo';-inkscape-font-specification:'ProFont IIx Nerd Font Propo';text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;fill:#00ade7;fill-opacity:1;stroke-width:3.50802;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:0.2"
|
||||
x="5.6048326"
|
||||
y="81.050644"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.34054px;font-family:'ProFont IIx Nerd Font Propo';-inkscape-font-specification:'ProFont IIx Nerd Font Propo';text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;fill:#00ade7;fill-opacity:1;stroke-width:0.458785;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:0.2"
|
||||
x="0.056607485"
|
||||
y="9.7028713"
|
||||
id="text1-3-3"
|
||||
transform="scale(0.98156475,1.0187815)"
|
||||
inkscape:label="2"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan1-6-5"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:56.1282px;font-family:'ProFont IIx Nerd Font Propo';-inkscape-font-specification:'ProFont IIx Nerd Font Propo';fill:#00ade7;fill-opacity:1;stroke-width:3.50802"
|
||||
x="5.6048326"
|
||||
y="81.050644">C</tspan></text>
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.34054px;font-family:'ProFont IIx Nerd Font Propo';-inkscape-font-specification:'ProFont IIx Nerd Font Propo';fill:#00ade7;fill-opacity:1;stroke-width:0.458785"
|
||||
x="0.056607485"
|
||||
y="9.7028713">C</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:56.1282px;font-family:'ProFont IIx Nerd Font Propo';-inkscape-font-specification:'ProFont IIx Nerd Font Propo';text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;fill:#00ade7;fill-opacity:1;stroke-width:3.50802;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:0.2"
|
||||
x="40.805176"
|
||||
y="63.398773"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.34054px;font-family:'ProFont IIx Nerd Font Propo';-inkscape-font-specification:'ProFont IIx Nerd Font Propo';text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;fill:#00ade7;fill-opacity:1;stroke-width:0.458785;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:0.2"
|
||||
x="4.6601677"
|
||||
y="7.3943286"
|
||||
id="text1-3-3-7"
|
||||
transform="scale(0.98156475,1.0187815)"
|
||||
inkscape:label="2"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan1-6-5-9"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:56.1282px;font-family:'ProFont IIx Nerd Font Propo';-inkscape-font-specification:'ProFont IIx Nerd Font Propo';fill:#00ade7;fill-opacity:1;stroke-width:3.50802"
|
||||
x="40.805176"
|
||||
y="63.398773">O</tspan></text>
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.34054px;font-family:'ProFont IIx Nerd Font Propo';-inkscape-font-specification:'ProFont IIx Nerd Font Propo';fill:#00ade7;fill-opacity:1;stroke-width:0.458785"
|
||||
x="4.6601677"
|
||||
y="7.3943286">O</tspan></text>
|
||||
</g>
|
||||
</svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 4.0 KiB After Width: | Height: | Size: 4.3 KiB |
|
Before Width: | Height: | Size: 4.2 KiB After Width: | Height: | Size: 4.2 KiB |
@ -1,22 +1,20 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
width="38px"
|
||||
height="38px"
|
||||
viewBox="0 0 24 24"
|
||||
<svg:svg
|
||||
width="45"
|
||||
height="45"
|
||||
viewBox="0 0 28.421053 28.421053"
|
||||
stroke-width="1.6"
|
||||
fill="none"
|
||||
color="#bababa"
|
||||
data-darkreader-inline-color=""
|
||||
style="--darkreader-inline-color: var(--darkreader-text-bababa, #bcb7ae);"
|
||||
version="1.1"
|
||||
id="svg1"
|
||||
sodipodi:docname="humidity-icon.svg"
|
||||
inkscape:version="1.4.2 (ebf0e940d0, 2025-05-08)"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg">
|
||||
<defs
|
||||
<svg:defs
|
||||
id="defs1" />
|
||||
<sodipodi:namedview
|
||||
id="namedview1"
|
||||
@ -28,19 +26,35 @@
|
||||
inkscape:pagecheckerboard="0"
|
||||
inkscape:deskcolor="#d1d1d1"
|
||||
inkscape:zoom="9.5273334"
|
||||
inkscape:cx="19.785179"
|
||||
inkscape:cy="22.829053"
|
||||
inkscape:cx="19.83766"
|
||||
inkscape:cy="22.724092"
|
||||
inkscape:window-width="1916"
|
||||
inkscape:window-height="1032"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="0"
|
||||
inkscape:current-layer="svg1" />
|
||||
<path
|
||||
d="M20 14C20 9.58172 12 2 12 2C12 2 4 9.58172 4 14C4 18.4183 7.58172 22 12 22C16.4183 22 20 18.4183 20 14Z"
|
||||
<svg:rect
|
||||
style="fill:#242424;stroke-width:6.22986;stroke-dasharray:none;paint-order:markers stroke fill"
|
||||
id="rect1"
|
||||
width="28.421053"
|
||||
height="28.421053"
|
||||
x="3.3630371e-08"
|
||||
y="3.3630371e-08" />
|
||||
<svg:path
|
||||
d="m 23.392462,16.891615 c 0,-5.071045 -9.181935,-13.7729019 -9.181935,-13.7729019 0,0 -9.1819355,8.7018569 -9.1819355,13.7729019 0,5.071068 4.1108899,9.181935 9.1819355,9.181935 5.071068,0 9.181935,-4.110867 9.181935,-9.181935 z"
|
||||
stroke="#bababa"
|
||||
stroke-width="1.6"
|
||||
data-darkreader-inline-stroke=""
|
||||
style="--darkreader-inline-stroke:#bababa;stroke:#0137f1;stroke-opacity:1"
|
||||
style="stroke:#0137f1;stroke-width:4.0833;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="path1" />
|
||||
</svg>
|
||||
<style
|
||||
class="darkreader darkreader--fallback">html, body, body :not(iframe) {
|
||||
background-color: var(--darkreader-background-ffffff, #181a1b) !important;
|
||||
border-color: var(--darkreader-border-404040, #776e62) !important;
|
||||
color: var(--darkreader-text-000000, #e8e6e3) !important;
|
||||
}
|
||||
div[style*="background-color: rgb(135, 135, 135)"] {
|
||||
background-color: #878787 !important;
|
||||
}</style>
|
||||
</svg:svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 2.1 KiB |
BIN
assets/indic-falling.bmp
Normal file
|
After Width: | Height: | Size: 538 B |
97
assets/indic-falling.svg
Normal file
@ -0,0 +1,97 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
width="10"
|
||||
height="20"
|
||||
viewBox="0 0 10 20"
|
||||
version="1.1"
|
||||
id="svg1"
|
||||
inkscape:version="1.4.2 (ebf0e940d0, 2025-05-08)"
|
||||
sodipodi:docname="indic-falling.svg"
|
||||
inkscape:export-filename="indic-rising.svg"
|
||||
inkscape:export-xdpi="102.28008"
|
||||
inkscape:export-ydpi="102.28008"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg">
|
||||
<sodipodi:namedview
|
||||
id="namedview1"
|
||||
pagecolor="#000000"
|
||||
bordercolor="#000000"
|
||||
borderopacity="0.25"
|
||||
inkscape:showpageshadow="2"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pagecheckerboard="0"
|
||||
inkscape:deskcolor="#d1d1d1"
|
||||
inkscape:document-units="mm"
|
||||
inkscape:export-bgcolor="#080808ff"
|
||||
inkscape:zoom="32"
|
||||
inkscape:cx="3.46875"
|
||||
inkscape:cy="9.140625"
|
||||
inkscape:window-width="1916"
|
||||
inkscape:window-height="1032"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="0"
|
||||
inkscape:current-layer="layer1" />
|
||||
<defs
|
||||
id="defs1" />
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="matrix(0.10139507,0,0,0.10139507,4.4930246,0.14783758)">
|
||||
<rect
|
||||
style="fill:#080808;fill-opacity:1;stroke:none;stroke-width:95.2216;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:0.2;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke fill markers"
|
||||
id="rect4"
|
||||
width="98.624123"
|
||||
height="197.24825"
|
||||
x="-44.312061"
|
||||
y="-1.4580333" />
|
||||
<rect
|
||||
style="fill:#3e3e3e;fill-opacity:1;stroke:none;stroke-width:10.4178;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:0.2;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect3"
|
||||
width="92.56852"
|
||||
height="34.62767"
|
||||
x="-41.28426"
|
||||
y="79.852249"
|
||||
rx="10.363558"
|
||||
ry="15.606441" />
|
||||
<path
|
||||
sodipodi:type="star"
|
||||
style="fill:#3e3e3e;fill-opacity:1;stroke:#080808;stroke-width:6.94267343;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:0.2;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke fill markers"
|
||||
id="path1"
|
||||
inkscape:flatsided="true"
|
||||
sodipodi:sides="3"
|
||||
sodipodi:cx="25.63151"
|
||||
sodipodi:cy="24.391275"
|
||||
sodipodi:r1="55.859524"
|
||||
sodipodi:r2="27.929762"
|
||||
sodipodi:arg1="0.52359878"
|
||||
sodipodi:arg2="1.5707963"
|
||||
inkscape:rounded="0.1"
|
||||
inkscape:randomized="0"
|
||||
d="m 74.007276,52.321038 c -4.837576,8.378928 -91.913956,8.378928 -96.751533,-1e-6 -4.837577,-8.378929 38.700614,-83.789285 48.375767,-83.789285 9.675153,0 53.213343,75.410357 48.375766,83.789286 z"
|
||||
inkscape:transform-center-y="-12.4031"
|
||||
transform="matrix(0.82051985,0,0,0.88816373,-16.031162,29.570393)" />
|
||||
<path
|
||||
sodipodi:type="star"
|
||||
style="fill:#db0000;fill-opacity:1;stroke:#080808;stroke-width:6.94267343;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:0.2;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke fill markers"
|
||||
id="path1-1"
|
||||
inkscape:flatsided="true"
|
||||
sodipodi:sides="3"
|
||||
sodipodi:cx="25.63151"
|
||||
sodipodi:cy="24.391275"
|
||||
sodipodi:r1="55.859524"
|
||||
sodipodi:r2="27.929762"
|
||||
sodipodi:arg1="0.52359878"
|
||||
sodipodi:arg2="1.5707963"
|
||||
inkscape:rounded="0.1"
|
||||
inkscape:randomized="0"
|
||||
d="m 74.007276,52.321038 c -4.837576,8.378928 -91.913956,8.378928 -96.751533,-1e-6 -4.837577,-8.378929 38.700614,-83.789285 48.375767,-83.789285 9.675153,0 53.213343,75.410357 48.375766,83.789286 z"
|
||||
inkscape:transform-center-y="12.403106"
|
||||
transform="matrix(-0.82051985,0,0,-0.88816373,26.031162,164.76177)" />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 3.9 KiB |
|
Before Width: | Height: | Size: 4.2 KiB After Width: | Height: | Size: 538 B |
@ -29,7 +29,7 @@
|
||||
inkscape:export-bgcolor="#080808ff"
|
||||
inkscape:zoom="32"
|
||||
inkscape:cx="3.46875"
|
||||
inkscape:cy="9.15625"
|
||||
inkscape:cy="9.140625"
|
||||
inkscape:window-width="1916"
|
||||
inkscape:window-height="1032"
|
||||
inkscape:window-x="0"
|
||||
|
||||
|
Before Width: | Height: | Size: 3.9 KiB After Width: | Height: | Size: 3.9 KiB |
BIN
assets/indic-steady.bmp
Normal file
|
After Width: | Height: | Size: 538 B |
97
assets/indic-steady.svg
Normal file
@ -0,0 +1,97 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
width="10"
|
||||
height="20"
|
||||
viewBox="0 0 10 20"
|
||||
version="1.1"
|
||||
id="svg1"
|
||||
inkscape:version="1.4.2 (ebf0e940d0, 2025-05-08)"
|
||||
sodipodi:docname="indic-steady.svg"
|
||||
inkscape:export-filename="indic-rising.svg"
|
||||
inkscape:export-xdpi="102.28008"
|
||||
inkscape:export-ydpi="102.28008"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg">
|
||||
<sodipodi:namedview
|
||||
id="namedview1"
|
||||
pagecolor="#000000"
|
||||
bordercolor="#000000"
|
||||
borderopacity="0.25"
|
||||
inkscape:showpageshadow="2"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pagecheckerboard="0"
|
||||
inkscape:deskcolor="#d1d1d1"
|
||||
inkscape:document-units="mm"
|
||||
inkscape:export-bgcolor="#080808ff"
|
||||
inkscape:zoom="32"
|
||||
inkscape:cx="3.46875"
|
||||
inkscape:cy="9.140625"
|
||||
inkscape:window-width="1916"
|
||||
inkscape:window-height="1032"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="0"
|
||||
inkscape:current-layer="layer1" />
|
||||
<defs
|
||||
id="defs1" />
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="matrix(0.10139507,0,0,0.10139507,4.4930246,0.14783758)">
|
||||
<rect
|
||||
style="fill:#080808;fill-opacity:1;stroke:none;stroke-width:95.2216;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:0.2;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke fill markers"
|
||||
id="rect4"
|
||||
width="98.624123"
|
||||
height="197.24825"
|
||||
x="-44.312061"
|
||||
y="-1.4580333" />
|
||||
<rect
|
||||
style="fill:#f6ab00;fill-opacity:1;stroke:none;stroke-width:10.4178;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:0.2;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect3"
|
||||
width="92.56852"
|
||||
height="34.62767"
|
||||
x="-41.28426"
|
||||
y="79.852249"
|
||||
rx="10.363558"
|
||||
ry="15.606441" />
|
||||
<path
|
||||
sodipodi:type="star"
|
||||
style="fill:#3e3e3e;fill-opacity:1;stroke:#080808;stroke-width:6.94267343;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:0.2;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke fill markers"
|
||||
id="path1"
|
||||
inkscape:flatsided="true"
|
||||
sodipodi:sides="3"
|
||||
sodipodi:cx="25.63151"
|
||||
sodipodi:cy="24.391275"
|
||||
sodipodi:r1="55.859524"
|
||||
sodipodi:r2="27.929762"
|
||||
sodipodi:arg1="0.52359878"
|
||||
sodipodi:arg2="1.5707963"
|
||||
inkscape:rounded="0.1"
|
||||
inkscape:randomized="0"
|
||||
d="m 74.007276,52.321038 c -4.837576,8.378928 -91.913956,8.378928 -96.751533,-1e-6 -4.837577,-8.378929 38.700614,-83.789285 48.375767,-83.789285 9.675153,0 53.213343,75.410357 48.375766,83.789286 z"
|
||||
inkscape:transform-center-y="-12.4031"
|
||||
transform="matrix(0.82051985,0,0,0.88816373,-16.031162,29.570393)" />
|
||||
<path
|
||||
sodipodi:type="star"
|
||||
style="fill:#3e3e3e;fill-opacity:1;stroke:#080808;stroke-width:6.94267343;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:0.2;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke fill markers"
|
||||
id="path1-1"
|
||||
inkscape:flatsided="true"
|
||||
sodipodi:sides="3"
|
||||
sodipodi:cx="25.63151"
|
||||
sodipodi:cy="24.391275"
|
||||
sodipodi:r1="55.859524"
|
||||
sodipodi:r2="27.929762"
|
||||
sodipodi:arg1="0.52359878"
|
||||
sodipodi:arg2="1.5707963"
|
||||
inkscape:rounded="0.1"
|
||||
inkscape:randomized="0"
|
||||
d="m 74.007276,52.321038 c -4.837576,8.378928 -91.913956,8.378928 -96.751533,-1e-6 -4.837577,-8.378929 38.700614,-83.789285 48.375767,-83.789285 9.675153,0 53.213343,75.410357 48.375766,83.789286 z"
|
||||
inkscape:transform-center-y="12.403106"
|
||||
transform="matrix(-0.82051985,0,0,-0.88816373,26.031162,164.76177)" />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 3.9 KiB |
|
Before Width: | Height: | Size: 4.2 KiB After Width: | Height: | Size: 4.2 KiB |
@ -1,22 +1,20 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
width="24px"
|
||||
height="24px"
|
||||
viewBox="0 0 24 24"
|
||||
<svg:svg
|
||||
width="45"
|
||||
height="45"
|
||||
viewBox="0 0 45 45"
|
||||
stroke-width="1.5"
|
||||
fill="none"
|
||||
color="#ff6600"
|
||||
data-darkreader-inline-color=""
|
||||
style="--darkreader-inline-color: var(--darkreader-text-000000, #e8e6e3);"
|
||||
version="1.1"
|
||||
id="svg7"
|
||||
sodipodi:docname="temperature-icon.svg"
|
||||
inkscape:version="1.4.2 (ebf0e940d0, 2025-05-08)"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg">
|
||||
<defs
|
||||
<svg:defs
|
||||
id="defs7" />
|
||||
<sodipodi:namedview
|
||||
id="namedview7"
|
||||
@ -27,76 +25,92 @@
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pagecheckerboard="0"
|
||||
inkscape:deskcolor="#d1d1d1"
|
||||
inkscape:zoom="30.169889"
|
||||
inkscape:cx="10.523738"
|
||||
inkscape:cy="14.103466"
|
||||
inkscape:zoom="10.216728"
|
||||
inkscape:cx="24.861188"
|
||||
inkscape:cy="27.748609"
|
||||
inkscape:window-width="1916"
|
||||
inkscape:window-height="1032"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="0"
|
||||
inkscape:current-layer="svg7" />
|
||||
<path
|
||||
d="M6 11.9995C4.78555 12.9117 4 14.3641 4 15.9999C4 18.7613 6.23858 20.9999 9 20.9999C11.7614 20.9999 14 18.7613 14 15.9999C14 14.3641 13.2144 12.9117 12 11.9995"
|
||||
stroke="#ff6600"
|
||||
stroke-width="1.5"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
data-darkreader-inline-stroke=""
|
||||
style="--darkreader-inline-stroke: #ff6600;"
|
||||
id="path1" />
|
||||
<path
|
||||
d="M6 12V3H12V12"
|
||||
stroke="#ff6600"
|
||||
stroke-width="1.5"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
data-darkreader-inline-stroke=""
|
||||
style="--darkreader-inline-stroke: #ff6600;"
|
||||
id="path2" />
|
||||
<path
|
||||
d="M12 3L14 3"
|
||||
stroke="#ff6600"
|
||||
stroke-width="1.5"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
data-darkreader-inline-stroke=""
|
||||
style="--darkreader-inline-stroke: #ff6600;"
|
||||
id="path3" />
|
||||
<path
|
||||
d="M12 6L14 6"
|
||||
stroke="#ff6600"
|
||||
stroke-width="1.5"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
data-darkreader-inline-stroke=""
|
||||
style="--darkreader-inline-stroke: #ff6600;"
|
||||
id="path4" />
|
||||
<path
|
||||
d="M12 9H14"
|
||||
stroke="#ff6600"
|
||||
stroke-width="1.5"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
data-darkreader-inline-stroke=""
|
||||
style="--darkreader-inline-stroke: #ff6600;"
|
||||
id="path5" />
|
||||
<path
|
||||
d="M19 7C20.1046 7 21 6.10457 21 5C21 3.89543 20.1046 3 19 3C17.8954 3 17 3.89543 17 5C17 6.10457 17.8954 7 19 7Z"
|
||||
stroke="#ff6600"
|
||||
stroke-width="1.5"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
data-darkreader-inline-stroke=""
|
||||
style="--darkreader-inline-stroke: #ff6600;"
|
||||
id="path6" />
|
||||
<path
|
||||
d="M9 14C7.89543 14 7 14.8954 7 16C7 17.1046 7.89543 18 9 18C10.1046 18 11 17.1046 11 16C11 14.8954 10.1046 14 9 14ZM9 14V11"
|
||||
stroke="#ff6600"
|
||||
stroke-width="1.5"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
data-darkreader-inline-stroke=""
|
||||
style="--darkreader-inline-stroke: #ff6600;"
|
||||
id="path7" />
|
||||
</svg>
|
||||
inkscape:current-layer="layer1" />
|
||||
<style
|
||||
class="darkreader darkreader--fallback">html, body, body :not(iframe) {
|
||||
background-color: var(--darkreader-background-ffffff, #181a1b) !important;
|
||||
border-color: var(--darkreader-border-404040, #776e62) !important;
|
||||
color: var(--darkreader-text-000000, #e8e6e3) !important;
|
||||
}
|
||||
div[style*="background-color: rgb(135, 135, 135)"] {
|
||||
background-color: #878787 !important;
|
||||
}</style>
|
||||
<svg:g
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
inkscape:label="Layer 1"
|
||||
transform="matrix(2.0390253,0,0,2.0390253,-3.3768322,-2.3378069)">
|
||||
<svg:rect
|
||||
style="fill:#242424;fill-opacity:1;stroke-width:5.46432;paint-order:markers stroke fill"
|
||||
id="rect1"
|
||||
width="22.069368"
|
||||
height="22.069368"
|
||||
x="1.6561011"
|
||||
y="1.1465315" />
|
||||
<svg:path
|
||||
d="m 6,11.9995 c -1.21445,0.9122 -2,2.3646 -2,4.0004 0,2.7614 2.23858,5 5,5 2.7614,0 5,-2.2386 5,-5 0,-1.6358 -0.7856,-3.0882 -2,-4.0004"
|
||||
stroke="#ff6600"
|
||||
stroke-width="1.5"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
data-darkreader-inline-stroke=""
|
||||
id="path1" />
|
||||
<svg:path
|
||||
d="M 6,12 V 3 h 6 v 9"
|
||||
stroke="#ff6600"
|
||||
stroke-width="1.5"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
data-darkreader-inline-stroke=""
|
||||
id="path2" />
|
||||
<svg:path
|
||||
d="m 12,3 h 2"
|
||||
stroke="#ff6600"
|
||||
stroke-width="1.5"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
data-darkreader-inline-stroke=""
|
||||
id="path3" />
|
||||
<svg:path
|
||||
d="m 12,6 h 2"
|
||||
stroke="#ff6600"
|
||||
stroke-width="1.5"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
data-darkreader-inline-stroke=""
|
||||
id="path4" />
|
||||
<svg:path
|
||||
d="m 12,9 h 2"
|
||||
stroke="#ff6600"
|
||||
stroke-width="1.5"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
data-darkreader-inline-stroke=""
|
||||
id="path5" />
|
||||
<svg:path
|
||||
d="m 19,7 c 1.1046,0 2,-0.89543 2,-2 0,-1.10457 -0.8954,-2 -2,-2 -1.1046,0 -2,0.89543 -2,2 0,1.10457 0.8954,2 2,2 z"
|
||||
stroke="#ff6600"
|
||||
stroke-width="1.5"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
data-darkreader-inline-stroke=""
|
||||
id="path6" />
|
||||
<svg:path
|
||||
d="m 9,14 c -1.10457,0 -2,0.8954 -2,2 0,1.1046 0.89543,2 2,2 1.1046,0 2,-0.8954 2,-2 0,-1.1046 -0.8954,-2 -2,-2 z m 0,0 v -3"
|
||||
stroke="#ff6600"
|
||||
stroke-width="1.5"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
data-darkreader-inline-stroke=""
|
||||
id="path7"
|
||||
inkscape:label="path7" />
|
||||
</svg:g>
|
||||
</svg:svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 3.2 KiB After Width: | Height: | Size: 3.6 KiB |
|
Before Width: | Height: | Size: 4.2 KiB After Width: | Height: | Size: 4.2 KiB |
@ -1,11 +1,13 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
viewBox="0 0 24 24"
|
||||
viewBox="0 0 45 45"
|
||||
fill="currentColor"
|
||||
version="1.1"
|
||||
id="svg1"
|
||||
sodipodi:docname="voc-icon.svg"
|
||||
inkscape:version="1.4.2 (ebf0e940d0, 2025-05-08)"
|
||||
width="45"
|
||||
height="45"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
@ -21,17 +23,24 @@
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pagecheckerboard="0"
|
||||
inkscape:deskcolor="#d1d1d1"
|
||||
inkscape:zoom="21.333333"
|
||||
inkscape:cx="6.2109375"
|
||||
inkscape:cy="14.226563"
|
||||
inkscape:zoom="12.529602"
|
||||
inkscape:cx="23.624054"
|
||||
inkscape:cy="30.687327"
|
||||
inkscape:window-width="1916"
|
||||
inkscape:window-height="1032"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="0"
|
||||
inkscape:current-layer="svg1" />
|
||||
<rect
|
||||
style="fill:#242424;stroke-width:12.8688;stroke-dasharray:51.4753, 25.7377, 12.8688, 25.7377;paint-order:markers stroke fill;fill-opacity:1"
|
||||
id="rect1"
|
||||
width="45"
|
||||
height="45"
|
||||
x="0"
|
||||
y="0" />
|
||||
<path
|
||||
d="M4 4H8V6H4V4ZM16 19H20V21H16V19ZM2 9H7V11H2V9ZM9 9H12V11H9V9ZM14 9H20V11H14V9ZM4 14H10V16H4V14ZM12 14H15V16H12V14ZM17 14H22V16H17V14ZM10 4H22V6H10V4ZM2 19H14V21H2V19Z"
|
||||
d="M 6.3874472,5.380413 H 14.443723 V 9.4085512 H 6.3874472 Z M 30.556276,35.591449 h 8.056276 v 4.028138 H 30.556276 Z M 2.359309,15.450758 h 10.070345 v 4.028139 H 2.359309 Z m 14.098484,0 H 22.5 v 4.028139 h -6.042207 z m 10.070345,0 h 12.084414 v 4.028139 H 26.528138 Z M 6.3874472,25.521104 H 18.471862 v 4.028138 H 6.3874472 Z m 16.1125528,0 h 6.042207 v 4.028138 H 22.5 Z m 10.070345,0 h 10.070346 v 4.028138 H 32.570345 Z M 18.471862,5.380413 H 42.640691 V 9.4085512 H 18.471862 Z M 2.359309,35.591449 h 24.168829 v 4.028138 H 2.359309 Z"
|
||||
id="path1"
|
||||
style="stroke:none;stroke-opacity:1;fill:#cacaca;fill-opacity:1" />
|
||||
style="fill:#cacaca;fill-opacity:1;stroke:none;stroke-width:2.01407;stroke-opacity:1" />
|
||||
</svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.9 KiB |
@ -8,6 +8,11 @@ thread_local! {
|
||||
pub static TEMPERATURE_ICON: UnsafeCell<MaybeUninit<Bmp<'static, Rgb565>>> = const { UnsafeCell::new(MaybeUninit::zeroed()) };
|
||||
pub static VOC_ICON: UnsafeCell<MaybeUninit<Bmp<'static, Rgb565>>> = const { UnsafeCell::new(MaybeUninit::zeroed()) };
|
||||
pub static CO2_ICON: UnsafeCell<MaybeUninit<Bmp<'static, Rgb565>>> = const { UnsafeCell::new(MaybeUninit::zeroed()) };
|
||||
|
||||
// Tendency indicators
|
||||
pub static TENDENCY_RISING: UnsafeCell<MaybeUninit<Bmp<'static, Rgb565>>> = const { UnsafeCell::new(MaybeUninit::zeroed()) };
|
||||
pub static TENDENCY_STEADY: UnsafeCell<MaybeUninit<Bmp<'static, Rgb565>>> = const { UnsafeCell::new(MaybeUninit::zeroed()) };
|
||||
pub static TENDENCY_FALLING: UnsafeCell<MaybeUninit<Bmp<'static, Rgb565>>> = const { UnsafeCell::new(MaybeUninit::zeroed()) };
|
||||
}
|
||||
|
||||
macro_rules! load_image {
|
||||
@ -28,12 +33,15 @@ macro_rules! get_image {
|
||||
};
|
||||
}
|
||||
|
||||
pub fn prepare_images()
|
||||
{
|
||||
pub fn prepare_images() {
|
||||
unsafe {
|
||||
load_image!(HUMIDITY_ICON, "../assets/humidity-icon.bmp");
|
||||
load_image!(TEMPERATURE_ICON, "../assets/temperature-icon.bmp");
|
||||
load_image!(VOC_ICON, "../assets/voc-icon.bmp");
|
||||
load_image!(CO2_ICON, "../assets/co2-icon.bmp");
|
||||
|
||||
load_image!(TENDENCY_RISING, "../assets/indic-rising.bmp");
|
||||
load_image!(TENDENCY_STEADY, "../assets/indic-steady.bmp");
|
||||
load_image!(TENDENCY_FALLING, "../assets/indic-falling.bmp");
|
||||
}
|
||||
}
|
||||
|
||||
57
src/main.rs
@ -1,4 +1,4 @@
|
||||
#![feature(unsafe_cell_access)]
|
||||
//#![feature(unsafe_cell_access)]
|
||||
|
||||
mod images;
|
||||
|
||||
@ -45,13 +45,13 @@ fn main() {
|
||||
fn hello_view() -> impl View<Rgb565> {
|
||||
VStack::new((
|
||||
HStack::new((
|
||||
main_menu_indicator(MenuIndicatorType::Temperature(31.5)),
|
||||
main_menu_indicator(MenuIndicatorType::Humidity(36.2)),
|
||||
main_menu_indicator(MenuIndicatorType::Temperature(31.5), Tendency::Falling),
|
||||
main_menu_indicator(MenuIndicatorType::Humidity(36.2), Tendency::Steady),
|
||||
))
|
||||
.with_spacing(5),
|
||||
HStack::new((
|
||||
main_menu_indicator(MenuIndicatorType::Co2(1329)),
|
||||
main_menu_indicator(MenuIndicatorType::Voc(29)),
|
||||
main_menu_indicator(MenuIndicatorType::Co2(1329), Tendency::Rising),
|
||||
main_menu_indicator(MenuIndicatorType::Voc(29), Tendency::Falling),
|
||||
))
|
||||
.with_spacing(5),
|
||||
))
|
||||
@ -99,7 +99,7 @@ impl MenuIndicatorType {
|
||||
}
|
||||
}
|
||||
|
||||
fn main_menu_indicator(indicator_type: MenuIndicatorType) -> impl View<Rgb565> {
|
||||
fn main_menu_indicator(indicator_type: MenuIndicatorType, tendency: Tendency) -> impl View<Rgb565> {
|
||||
Rectangle
|
||||
.corner_radius(10)
|
||||
.stroked(FRAME_STROKE)
|
||||
@ -112,14 +112,23 @@ fn main_menu_indicator(indicator_type: MenuIndicatorType) -> impl View<Rgb565> {
|
||||
VStack::new((
|
||||
HStack::new((
|
||||
Spacer::default(),
|
||||
buoyant::view::Image::new(get_image!(
|
||||
indicator_type.get_corresponding_icon()
|
||||
)),
|
||||
ZStack::new((
|
||||
Rectangle
|
||||
.corner_radius(10)
|
||||
//.stroked_offset(5, StrokeOffset::Outer)
|
||||
.foreground_color(Rgb565::new(4, 9, 4)),
|
||||
buoyant::view::Image::new(get_image!(
|
||||
indicator_type.get_corresponding_icon()
|
||||
)),
|
||||
))
|
||||
.flex_frame()
|
||||
.with_max_size(53, 53)
|
||||
.with_min_size(53, 53),
|
||||
Spacer::default(),
|
||||
)),
|
||||
HStack::new((
|
||||
Spacer::default(),
|
||||
tendency_indicator(Tendency::Rising),
|
||||
tendency_indicator(tendency),
|
||||
Text::new(indicator_type.get_value_str(), &PROFONT_24_POINT),
|
||||
Text::new(
|
||||
indicator_type.get_corresponding_unit_string(),
|
||||
@ -145,10 +154,26 @@ pub enum Tendency {
|
||||
Falling,
|
||||
}
|
||||
|
||||
fn tendency_indicator(tendency: Tendency) -> impl View<Rgb565> {
|
||||
Rectangle
|
||||
.foreground_color(Rgb565::WHITE)
|
||||
.flex_frame()
|
||||
.with_min_size(10, 20)
|
||||
.with_max_size(10, 20)
|
||||
impl Tendency {
|
||||
pub fn get_corresponding_icon(
|
||||
&self,
|
||||
) -> &'static std::thread::LocalKey<UnsafeCell<MaybeUninit<Bmp<'static, Rgb565>>>> {
|
||||
match self {
|
||||
Self::Rising => &images::TENDENCY_RISING,
|
||||
Self::Steady => &images::TENDENCY_STEADY,
|
||||
Self::Falling => &images::TENDENCY_FALLING,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fn tendency_indicator(tendency: Tendency) -> impl View<Rgb565> {
|
||||
HStack::new((
|
||||
Image::new(get_image!(tendency.get_corresponding_icon()))
|
||||
.flex_frame()
|
||||
.with_min_size(10, 20)
|
||||
.with_max_size(10, 20),
|
||||
Spacer::default(),
|
||||
))
|
||||
.flex_frame()
|
||||
.with_max_width(15)
|
||||
}
|
||||
|
||||