mirror of
https://github.com/trezor/trezor-firmware.git
synced 2025-07-30 02:18:16 +00:00
fixup! feat(core): introduce new drawing library
This commit is contained in:
parent
bb2c84b153
commit
d909275c6d
@ -63,7 +63,8 @@ pub trait BasicCanvas {
|
||||
|
||||
/// Fills the canvas background with the specified color.
|
||||
fn fill_background(&mut self, color: Color) {
|
||||
self.fill_rect(self.viewport().clip, color, 255);
|
||||
let vp = self.viewport();
|
||||
self.fill_rect(vp.clip.translate(-vp.origin), color, 255);
|
||||
}
|
||||
|
||||
/// Draws a bitmap of bitmap into to the rectangle.
|
||||
|
@ -1,10 +1,9 @@
|
||||
use crate::ui::{
|
||||
display::Color,
|
||||
geometry::Rect,
|
||||
shape::{DirectRenderer, Mono8Canvas},
|
||||
shape::{DirectRenderer, Mono8Canvas, Viewport},
|
||||
};
|
||||
|
||||
pub fn render_on_display<'a, F>(_clip: Option<Rect>, _bg_color: Option<Color>, _func: F)
|
||||
pub fn render_on_display<'a, F>(_viewport: Option<Viewport>, _bg_color: Option<Color>, _func: F)
|
||||
where
|
||||
F: FnOnce(&mut DirectRenderer<'_, 'a, Mono8Canvas<'a>>),
|
||||
{
|
||||
|
@ -1,6 +1,6 @@
|
||||
use crate::ui::{
|
||||
display::Color,
|
||||
geometry::{Offset, Rect},
|
||||
geometry::Offset,
|
||||
shape::{BasicCanvas, DirectRenderer, DrawingCache, Mono8Canvas, Viewport},
|
||||
};
|
||||
|
||||
@ -18,7 +18,7 @@ use static_alloc::Bump;
|
||||
/// `bg_color` specifies a background color with which the clip is filled before
|
||||
/// the drawing starts. If the background color is None, the background
|
||||
/// is undefined, and the user has to fill it themselves.
|
||||
pub fn render_on_display<'a, F>(clip: Option<Rect>, bg_color: Option<Color>, func: F)
|
||||
pub fn render_on_display<'a, F>(viewport: Option<Viewport>, bg_color: Option<Color>, func: F)
|
||||
where
|
||||
F: FnOnce(&mut DirectRenderer<'_, 'a, Mono8Canvas<'a>>),
|
||||
{
|
||||
@ -44,8 +44,8 @@ where
|
||||
fb
|
||||
));
|
||||
|
||||
if let Some(clip) = clip {
|
||||
canvas.set_viewport(Viewport::new(clip));
|
||||
if let Some(viewport) = viewport {
|
||||
canvas.set_viewport(viewport);
|
||||
}
|
||||
|
||||
let mut target = DirectRenderer::new(&mut canvas, bg_color, &cache);
|
||||
|
@ -1,6 +1,6 @@
|
||||
use crate::ui::{
|
||||
display::Color,
|
||||
geometry::{Offset, Rect},
|
||||
geometry::Offset,
|
||||
shape::{BasicCanvas, DirectRenderer, DrawingCache, Rgb565Canvas, Viewport},
|
||||
};
|
||||
|
||||
@ -18,7 +18,7 @@ use static_alloc::Bump;
|
||||
/// `bg_color` specifies a background color with which the clip is filled before
|
||||
/// the drawing starts. If the background color is None, the background
|
||||
/// is undefined, and the user has to fill it themselves.
|
||||
pub fn render_on_display<'a, F>(clip: Option<Rect>, bg_color: Option<Color>, func: F)
|
||||
pub fn render_on_display<'a, F>(viewport: Option<Viewport>, bg_color: Option<Color>, func: F)
|
||||
where
|
||||
F: FnOnce(&mut DirectRenderer<'_, 'a, Rgb565Canvas<'a>>),
|
||||
{
|
||||
@ -51,8 +51,8 @@ where
|
||||
fb
|
||||
));
|
||||
|
||||
if let Some(clip) = clip {
|
||||
canvas.set_viewport(Viewport::new(clip));
|
||||
if let Some(viewport) = viewport {
|
||||
canvas.set_viewport(viewport);
|
||||
}
|
||||
|
||||
let mut target = DirectRenderer::new(&mut canvas, bg_color, &cache);
|
||||
|
@ -1,6 +1,6 @@
|
||||
use crate::ui::{
|
||||
display::Color,
|
||||
geometry::{Offset, Rect},
|
||||
geometry::Offset,
|
||||
shape::{BasicCanvas, DirectRenderer, DrawingCache, Rgba8888Canvas, Viewport},
|
||||
};
|
||||
|
||||
@ -18,7 +18,7 @@ use crate::trezorhal::display;
|
||||
/// `bg_color` specifies a background color with which the clip is filled before
|
||||
/// the drawing starts. If the background color is None, the background
|
||||
/// is undefined, and the user has to fill it themselves.
|
||||
pub fn render_on_display<'a, F>(clip: Option<Rect>, bg_color: Option<Color>, func: F)
|
||||
pub fn render_on_display<'a, F>(viewport: Option<Viewport>, bg_color: Option<Color>, func: F)
|
||||
where
|
||||
F: FnOnce(&mut DirectRenderer<'_, 'a, Rgba8888Canvas<'a>>),
|
||||
{
|
||||
@ -51,8 +51,8 @@ where
|
||||
fb
|
||||
));
|
||||
|
||||
if let Some(clip) = clip {
|
||||
canvas.set_viewport(Viewport::new(clip));
|
||||
if let Some(viewport) = viewport {
|
||||
canvas.set_viewport(Viewport::new(viewport));
|
||||
}
|
||||
|
||||
let mut target = DirectRenderer::new(&mut canvas, bg_color, &cache);
|
||||
|
@ -30,7 +30,7 @@ const BUMP_B_SIZE: usize = DrawingCache::get_bump_b_size();
|
||||
/// `bg_color` specifies a background color with which the clip is filled before
|
||||
/// the drawing starts. If the background color is None, the background
|
||||
/// is undefined, and the user has to fill it themselves.
|
||||
pub fn render_on_display<'a, F>(clip: Option<Rect>, bg_color: Option<Color>, func: F)
|
||||
pub fn render_on_display<'a, F>(viewport: Option<Viewport>, bg_color: Option<Color>, func: F)
|
||||
where
|
||||
F: FnOnce(&mut ProgressiveRenderer<'_, 'a, Bump<[u8; BUMP_A_SIZE]>, DisplayCanvas>),
|
||||
{
|
||||
@ -49,8 +49,8 @@ where
|
||||
let cache = DrawingCache::new(bump_a, bump_b);
|
||||
let mut canvas = DisplayCanvas::new();
|
||||
|
||||
if let Some(clip) = clip {
|
||||
canvas.set_viewport(Viewport::new(clip));
|
||||
if let Some(viewport) = viewport {
|
||||
canvas.set_viewport(viewport);
|
||||
}
|
||||
|
||||
let mut target =
|
||||
|
@ -170,7 +170,10 @@ where
|
||||
/// Renders stored shapes onto the specified canvas
|
||||
pub fn render(&mut self, lines: usize) {
|
||||
let canvas_clip = self.canvas.viewport().clip;
|
||||
let canvas_origin = self.canvas.viewport().origin;
|
||||
|
||||
if canvas_clip.is_empty() {
|
||||
return;
|
||||
}
|
||||
|
||||
let buff = &mut unwrap!(self.cache.render_buff(), "No render buffer");
|
||||
|
||||
@ -190,8 +193,7 @@ where
|
||||
// slice_r is in absolute coordinates
|
||||
Point::new(canvas_clip.x0, y),
|
||||
Point::new(canvas_clip.x1, y + lines as i16),
|
||||
)
|
||||
.translate(-canvas_origin);
|
||||
);
|
||||
|
||||
// Clear the slice background
|
||||
if let Some(color) = self.bg_color {
|
||||
|
Loading…
Reference in New Issue
Block a user