1
0
mirror of https://github.com/trezor/trezor-firmware.git synced 2025-03-06 10:16:07 +00:00

fix(rust): fix drawing of 1px bar shape

[no changelog]
This commit is contained in:
cepetr 2025-03-03 20:01:33 +01:00 committed by cepetr
parent c0134518da
commit 80ce57c5c4

View File

@ -77,13 +77,22 @@ impl Shape<'_> for Bar {
// TODO: fatal_error! in unsupported scenarious
let th = match self.fg_color {
Some(_) => self.thickness,
None => 0,
let (fg_color, bg_color, th) = if self.fg_color.is_some() {
let th = self.thickness;
if th * 2 < self.area.width() && th * 2 < self.area.height() {
// Draw a rectangle with a border
(self.fg_color, self.bg_color, th)
} else {
// Too thick border => draw a filled rectangle
(None, self.fg_color, 0)
}
} else {
// No foreground color => draw a filled rectangle
(None, self.bg_color, 0)
};
if self.radius == 0 {
if let Some(fg_color) = self.fg_color {
if let Some(fg_color) = fg_color {
// outline
if th > 0 {
let r = self.area;
@ -129,13 +138,13 @@ impl Shape<'_> for Bar {
);
}
}
if let Some(bg_color) = self.bg_color {
if let Some(bg_color) = bg_color {
// background
let bg_r = self.area.shrink(th);
canvas.fill_rect(bg_r, bg_color, self.alpha);
}
} else {
if let Some(fg_color) = self.fg_color {
if let Some(fg_color) = fg_color {
if th > 0 {
if self.bg_color.is_some() {
canvas.fill_round_rect(self.area, self.radius, fg_color, self.alpha);
@ -145,7 +154,7 @@ impl Shape<'_> for Bar {
}
}
}
if let Some(bg_color) = self.bg_color {
if let Some(bg_color) = bg_color {
let bg_r = self.area.shrink(th);
canvas.fill_round_rect(bg_r, self.radius, bg_color, self.alpha);
}