mirror of
https://github.com/trezor/trezor-firmware.git
synced 2025-07-01 20:32:35 +00:00
fixup! refactor(core): integrate new drawing library
This commit is contained in:
parent
924664aeb3
commit
d734d0a132
@ -1,4 +1,3 @@
|
||||
use cty::int16_t;
|
||||
use trezor_tjpgdec::{BlackHoleOutput, JpegOutput};
|
||||
pub use trezor_tjpgdec::{BufferInput, Error, JDEC};
|
||||
|
||||
|
@ -528,6 +528,7 @@ where
|
||||
} else {
|
||||
let toif_data = unwrap!(Toif::new(image_data));
|
||||
shape::ToifImage::new(TOP_CENTER, toif_data)
|
||||
.with_align(Alignment2D::TOP_CENTER)
|
||||
.with_fg(theme::FG)
|
||||
.render(target);
|
||||
};
|
||||
|
@ -1,9 +1,14 @@
|
||||
#[cfg(feature = "micropython")]
|
||||
use crate::micropython::buffer::StrBuffer;
|
||||
use crate::ui::{
|
||||
component::base::Component, constant::screen, display, model_tr::component::WelcomeScreen,
|
||||
component::base::Component, constant::screen, model_tr::component::WelcomeScreen,
|
||||
};
|
||||
|
||||
#[cfg(not(feature = "new_rendering"))]
|
||||
use crate::ui::display;
|
||||
#[cfg(feature = "new_rendering")]
|
||||
use crate::ui::{display::Color, shape::render_on_display};
|
||||
|
||||
use super::{component::ErrorScreen, constant};
|
||||
|
||||
#[cfg(not(feature = "micropython"))]
|
||||
@ -27,6 +32,13 @@ pub fn screen_fatal_error(title: &str, msg: &str, footer: &str) {
|
||||
|
||||
let mut frame = ErrorScreen::new(title, msg, footer);
|
||||
frame.place(constant::screen());
|
||||
|
||||
#[cfg(feature = "new_rendering")]
|
||||
render_on_display(None, Some(Color::black()), |target| {
|
||||
frame.render(target);
|
||||
});
|
||||
|
||||
#[cfg(not(feature = "new_rendering"))]
|
||||
frame.paint();
|
||||
}
|
||||
|
||||
@ -34,7 +46,16 @@ pub fn screen_fatal_error(title: &str, msg: &str, footer: &str) {
|
||||
extern "C" fn screen_boot_full() {
|
||||
let mut frame = WelcomeScreen::new(false);
|
||||
frame.place(screen());
|
||||
display::sync();
|
||||
frame.paint();
|
||||
display::refresh();
|
||||
|
||||
#[cfg(feature = "new_rendering")]
|
||||
render_on_display(None, Some(Color::black()), |target| {
|
||||
frame.render(target);
|
||||
});
|
||||
|
||||
#[cfg(not(feature = "new_rendering"))]
|
||||
{
|
||||
display::sync();
|
||||
frame.paint();
|
||||
display::refresh();
|
||||
}
|
||||
}
|
||||
|
@ -141,8 +141,8 @@ where
|
||||
let background_color = theme::BG;
|
||||
let inactive_color = background_color.blend(active_color, 85);
|
||||
|
||||
let start = (self.value - 100) % 1000;
|
||||
let end = (self.value + 100) % 1000;
|
||||
let start = (self.value as i16 - 100) % 1000;
|
||||
let end = (self.value as i16 + 100) % 1000;
|
||||
let start = ((start as i32 * 8 * PI4 as i32) / 1000) as i16;
|
||||
let end = ((end as i32 * 8 * PI4 as i32) / 1000) as i16;
|
||||
|
||||
|
@ -22,7 +22,7 @@ use crate::{
|
||||
ui::{
|
||||
constant::HEIGHT,
|
||||
display::{
|
||||
tjpgd::{jpeg_test, BufferInput},
|
||||
tjpgd::BufferInput,
|
||||
toif::{Toif, ToifFormat},
|
||||
},
|
||||
model_tt::component::homescreen::render::{
|
||||
@ -288,6 +288,13 @@ impl Component for Homescreen {
|
||||
}
|
||||
|
||||
self.label.map(|t| {
|
||||
let r = Rect::new(Point::new(6, 198), Point::new(234, 233));
|
||||
shape::Bar::new(r)
|
||||
.with_bg(Color::black())
|
||||
.with_alpha(89)
|
||||
.with_radius(3)
|
||||
.render(target);
|
||||
|
||||
let style = theme::TEXT_DEMIBOLD;
|
||||
let pos = Point::new(self.pad.area.center().x, LABEL_Y);
|
||||
shape::Text::new(pos, t)
|
||||
@ -470,7 +477,7 @@ impl Component for Lockscreen {
|
||||
shape::JpegImage::new(center, img_data)
|
||||
.with_align(Alignment2D::CENTER)
|
||||
.with_blur(4)
|
||||
.with_dim(130)
|
||||
.with_dim(140)
|
||||
.render(target);
|
||||
} else if is_image_toif(img_data) {
|
||||
shape::ToifImage::new(center, unwrap!(Toif::new(img_data)))
|
||||
@ -559,7 +566,7 @@ impl Component for Lockscreen {
|
||||
|
||||
pub fn check_homescreen_format(buffer: &[u8]) -> bool {
|
||||
#[cfg(not(feature = "new_rendering"))]
|
||||
let result = is_image_jpeg(buffer) && jpeg_test(buffer);
|
||||
let result = is_image_jpeg(buffer) && crate::ui::display::tjpgd::jpeg_test(buffer);
|
||||
#[cfg(feature = "new_rendering")]
|
||||
let result = is_image_jpeg(buffer); // !@# TODO: test like if `new_rendering` is off
|
||||
|
||||
|
@ -184,9 +184,12 @@ where
|
||||
}
|
||||
|
||||
fn render<'s>(&'s self, target: &mut impl Renderer<'s>) {
|
||||
self.prompt.render(target);
|
||||
self.input.render(target);
|
||||
self.back.render(target);
|
||||
if self.input.inner().inner().is_empty() {
|
||||
self.prompt.render(target);
|
||||
} else {
|
||||
self.input.render(target);
|
||||
self.back.render(target);
|
||||
}
|
||||
|
||||
for btn in &self.keys {
|
||||
btn.render(target);
|
||||
|
@ -132,8 +132,8 @@ where
|
||||
let inactive_color = background_color.blend(active_color, 85);
|
||||
|
||||
let (start, end) = if self.indeterminate {
|
||||
let start = (self.value - 100) % 1000;
|
||||
let end = (self.value + 100) % 1000;
|
||||
let start = (self.value as i16 - 100) % 1000;
|
||||
let end = (self.value as i16 + 100) % 1000;
|
||||
let start = ((start as i32 * 8 * PI4 as i32) / 1000) as i16;
|
||||
let end = ((end as i32 * 8 * PI4 as i32) / 1000) as i16;
|
||||
(start, end)
|
||||
|
@ -1,13 +1,12 @@
|
||||
use crate::ui::{
|
||||
component::{Component, Event, EventCtx, Never},
|
||||
display::toif::Toif,
|
||||
geometry::{Alignment2D, Offset, Rect},
|
||||
model_tt::theme,
|
||||
shape,
|
||||
shape::Renderer,
|
||||
};
|
||||
#[cfg(feature = "bootloader")]
|
||||
use crate::ui::{display::Icon, model_tt::theme::bootloader::DEVICE_NAME};
|
||||
use crate::ui::{display::{Icon, toif::Toif}, model_tt::theme::bootloader::DEVICE_NAME};
|
||||
|
||||
const TEXT_BOTTOM_MARGIN: i16 = 24; // matching the homescreen label margin
|
||||
const ICON_TOP_MARGIN: i16 = 48;
|
||||
|
@ -7,8 +7,13 @@ pub const HEIGHT: i16 = DISPLAY_RESY as _;
|
||||
pub const LINE_SPACE: i16 = 4;
|
||||
pub const FONT_BPP: i16 = 4;
|
||||
|
||||
#[cfg(not(feature = "new_rendering"))]
|
||||
pub const LOADER_OUTER: i16 = 60;
|
||||
#[cfg(feature = "new_rendering")]
|
||||
pub const LOADER_OUTER: i16 = 59;
|
||||
|
||||
pub const LOADER_INNER: i16 = 42;
|
||||
|
||||
pub const LOADER_ICON_MAX_SIZE: i16 = 64;
|
||||
|
||||
pub const fn size() -> Offset {
|
||||
|
@ -3,13 +3,18 @@ use crate::micropython::buffer::StrBuffer;
|
||||
use crate::ui::{
|
||||
component::Component,
|
||||
constant::screen,
|
||||
display,
|
||||
model_tt::{
|
||||
component::{ErrorScreen, WelcomeScreen},
|
||||
constant,
|
||||
},
|
||||
};
|
||||
|
||||
#[cfg(not(feature = "new_rendering"))]
|
||||
use crate::ui::display;
|
||||
#[cfg(feature = "new_rendering")]
|
||||
use crate::ui::{display::Color, shape::render_on_display};
|
||||
|
||||
|
||||
#[cfg(not(feature = "micropython"))]
|
||||
// SAFETY: Actually safe but see below
|
||||
unsafe fn get_str(text: &str) -> &str {
|
||||
@ -31,6 +36,13 @@ pub fn screen_fatal_error(title: &str, msg: &str, footer: &str) {
|
||||
|
||||
let mut frame = ErrorScreen::new(title, msg, footer);
|
||||
frame.place(constant::screen());
|
||||
|
||||
#[cfg(feature = "new_rendering")]
|
||||
render_on_display(None, Some(Color::black()), |target| {
|
||||
frame.render(target);
|
||||
});
|
||||
|
||||
#[cfg(not(feature = "new_rendering"))]
|
||||
frame.paint();
|
||||
}
|
||||
|
||||
@ -38,7 +50,16 @@ pub fn screen_fatal_error(title: &str, msg: &str, footer: &str) {
|
||||
extern "C" fn screen_boot_full() {
|
||||
let mut frame = WelcomeScreen::new(false);
|
||||
frame.place(screen());
|
||||
display::sync();
|
||||
frame.paint();
|
||||
display::refresh();
|
||||
|
||||
#[cfg(feature = "new_rendering")]
|
||||
render_on_display(None, Some(Color::black()), |target| {
|
||||
frame.render(target);
|
||||
});
|
||||
|
||||
#[cfg(not(feature = "new_rendering"))]
|
||||
{
|
||||
display::sync();
|
||||
frame.paint();
|
||||
display::refresh();
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user