diff --git a/assets/Makefile b/assets/Makefile
index a260f5c..c4b9027 100644
--- a/assets/Makefile
+++ b/assets/Makefile
@@ -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 $@
diff --git a/assets/a.bmp b/assets/a.bmp
new file mode 100644
index 0000000..3141fb5
Binary files /dev/null and b/assets/a.bmp differ
diff --git a/assets/a.svg b/assets/a.svg
new file mode 100644
index 0000000..7d84e84
--- /dev/null
+++ b/assets/a.svg
@@ -0,0 +1,52 @@
+
+
diff --git a/assets/co2-icon.bmp b/assets/co2-icon.bmp
index 8078667..a74e213 100644
Binary files a/assets/co2-icon.bmp and b/assets/co2-icon.bmp differ
diff --git a/assets/co2-icon.svg b/assets/co2-icon.svg
index d91abb8..391b8ec 100644
--- a/assets/co2-icon.svg
+++ b/assets/co2-icon.svg
@@ -2,9 +2,9 @@
diff --git a/assets/humidity-icon.bmp b/assets/humidity-icon.bmp
index 320db13..1b72f13 100644
Binary files a/assets/humidity-icon.bmp and b/assets/humidity-icon.bmp differ
diff --git a/assets/humidity-icon.svg b/assets/humidity-icon.svg
index 948aac0..6ac5f37 100644
--- a/assets/humidity-icon.svg
+++ b/assets/humidity-icon.svg
@@ -1,22 +1,20 @@
-
+
+
diff --git a/assets/indic-falling.bmp b/assets/indic-falling.bmp
new file mode 100644
index 0000000..c56a035
Binary files /dev/null and b/assets/indic-falling.bmp differ
diff --git a/assets/indic-falling.svg b/assets/indic-falling.svg
new file mode 100644
index 0000000..ef69cb6
--- /dev/null
+++ b/assets/indic-falling.svg
@@ -0,0 +1,97 @@
+
+
+
+
diff --git a/assets/indic-rising.bmp b/assets/indic-rising.bmp
index 704080e..0fb32f0 100644
Binary files a/assets/indic-rising.bmp and b/assets/indic-rising.bmp differ
diff --git a/assets/indic-rising.svg b/assets/indic-rising.svg
index b2fce48..2507ddb 100644
--- a/assets/indic-rising.svg
+++ b/assets/indic-rising.svg
@@ -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"
diff --git a/assets/indic-steady.bmp b/assets/indic-steady.bmp
new file mode 100644
index 0000000..af79bb9
Binary files /dev/null and b/assets/indic-steady.bmp differ
diff --git a/assets/indic-steady.svg b/assets/indic-steady.svg
new file mode 100644
index 0000000..a5e3a98
--- /dev/null
+++ b/assets/indic-steady.svg
@@ -0,0 +1,97 @@
+
+
+
+
diff --git a/assets/temperature-icon.bmp b/assets/temperature-icon.bmp
index 29cdf13..67e6285 100644
Binary files a/assets/temperature-icon.bmp and b/assets/temperature-icon.bmp differ
diff --git a/assets/temperature-icon.svg b/assets/temperature-icon.svg
index be31f2b..2ada07b 100644
--- a/assets/temperature-icon.svg
+++ b/assets/temperature-icon.svg
@@ -1,22 +1,20 @@
-
+ inkscape:current-layer="layer1" />
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/assets/voc-icon.bmp b/assets/voc-icon.bmp
index 57c0fba..7ffb243 100644
Binary files a/assets/voc-icon.bmp and b/assets/voc-icon.bmp differ
diff --git a/assets/voc-icon.svg b/assets/voc-icon.svg
index 32d241c..8aec3ee 100644
--- a/assets/voc-icon.svg
+++ b/assets/voc-icon.svg
@@ -1,11 +1,13 @@
+
+ style="fill:#cacaca;fill-opacity:1;stroke:none;stroke-width:2.01407;stroke-opacity:1" />
diff --git a/src/images.rs b/src/images.rs
index 2d7244a..a8b4a9f 100644
--- a/src/images.rs
+++ b/src/images.rs
@@ -8,6 +8,11 @@ thread_local! {
pub static TEMPERATURE_ICON: UnsafeCell>> = const { UnsafeCell::new(MaybeUninit::zeroed()) };
pub static VOC_ICON: UnsafeCell>> = const { UnsafeCell::new(MaybeUninit::zeroed()) };
pub static CO2_ICON: UnsafeCell>> = const { UnsafeCell::new(MaybeUninit::zeroed()) };
+
+ // Tendency indicators
+ pub static TENDENCY_RISING: UnsafeCell>> = const { UnsafeCell::new(MaybeUninit::zeroed()) };
+ pub static TENDENCY_STEADY: UnsafeCell>> = const { UnsafeCell::new(MaybeUninit::zeroed()) };
+ pub static TENDENCY_FALLING: UnsafeCell>> = 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");
}
}
diff --git a/src/main.rs b/src/main.rs
index cb7c2f1..0672883 100644
--- a/src/main.rs
+++ b/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 {
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 {
+fn main_menu_indicator(indicator_type: MenuIndicatorType, tendency: Tendency) -> impl View {
Rectangle
.corner_radius(10)
.stroked(FRAME_STROKE)
@@ -112,14 +112,23 @@ fn main_menu_indicator(indicator_type: MenuIndicatorType) -> impl View {
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 {
- 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>>> {
+ match self {
+ Self::Rising => &images::TENDENCY_RISING,
+ Self::Steady => &images::TENDENCY_STEADY,
+ Self::Falling => &images::TENDENCY_FALLING,
+ }
+ }
+}
+
+fn tendency_indicator(tendency: Tendency) -> impl View {
+ 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)
}