fixup! feat(core): introduce new drawing library

pull/3695/merge^2
cepetr 4 weeks ago
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…
Cancel
Save