Skip to content

Commit

Permalink
fix(core): rebase on current drawlib
Browse files Browse the repository at this point in the history
Port new render function signature to model_mercury.
Fix some rebase errors.
Also port recent changes from mp <-> rust iface.

[no changelog]
  • Loading branch information
obrusvit committed Mar 12, 2024
1 parent 242f7f9 commit 6e19858
Show file tree
Hide file tree
Showing 38 changed files with 327 additions and 742 deletions.
88 changes: 0 additions & 88 deletions core/embed/rust/src/ui/component/painter.rs

This file was deleted.

1 change: 0 additions & 1 deletion core/embed/rust/src/ui/display/tjpgd.rs
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@ use crate::{
},
};

#[cfg(not(feature = "new_rendering"))]
pub fn jpeg(data: &[u8], pos: Point, scale: u8) {
let mut buffer = BufferJpegWork::get_cleared();
let pool = buffer.buffer.as_mut_slice();
Expand Down
2 changes: 1 addition & 1 deletion core/embed/rust/src/ui/model_mercury/bootloader/intro.rs
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,7 @@ impl<'a> Component for Intro<'a> {
self.menu.paint();
}

fn render(&mut self, target: &mut impl Renderer) {
fn render<'s>(&'s self, target: &mut impl Renderer<'s>) {
self.bg.render(target);
self.title.render(target);
self.text.render(target);
Expand Down
2 changes: 1 addition & 1 deletion core/embed/rust/src/ui/model_mercury/bootloader/menu.rs
Original file line number Diff line number Diff line change
Expand Up @@ -109,7 +109,7 @@ impl Component for Menu {
self.reset.paint();
}

fn render(&mut self, target: &mut impl Renderer) {
fn render<'s>(&'s self, target: &mut impl Renderer<'s>) {
self.bg.render(target);
self.title.render(target);
self.close.render(target);
Expand Down
2 changes: 1 addition & 1 deletion core/embed/rust/src/ui/model_mercury/bootloader/welcome.rs
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ impl Component for Welcome {
);
}

fn render(&mut self, target: &mut impl Renderer) {
fn render<'s>(&'s self, target: &mut impl Renderer<'s>) {
self.bg.render(target);
shape::Text::new(screen().top_center() + Offset::y(102), "Get started with")
.with_align(Alignment::Center)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -182,7 +182,7 @@ where
}
}

fn render(&mut self, target: &mut impl Renderer) {
fn render<'s>(&'s self, target: &mut impl Renderer<'s>) {
match self.current_page {
0 => self.qr_code.render(target),
1 => self.details.render(target),
Expand Down
6 changes: 3 additions & 3 deletions core/embed/rust/src/ui/model_mercury/component/bl_confirm.rs
Original file line number Diff line number Diff line change
Expand Up @@ -236,11 +236,11 @@ where
}
}

fn render(&mut self, target: &mut impl Renderer) {
fn render<'s>(&'s self, target: &mut impl Renderer<'s>) {
self.bg.render(target);
self.content_pad.render(target);

if let Some(info) = self.info.as_mut() {
if let Some(info) = self.info.as_ref() {
if self.show_info {
info.close_button.render(target);
info.title.render(target);
Expand All @@ -259,7 +259,7 @@ where
self.alert.render(target);
self.left_button.render(target);
self.right_button.render(target);
match &mut self.title {
match &self.title {
ConfirmTitle::Text(label) => label.render(target),
ConfirmTitle::Icon(icon) => {
shape::ToifImage::new(Point::new(screen().center().x, ICON_TOP), icon.toif)
Expand Down
6 changes: 3 additions & 3 deletions core/embed/rust/src/ui/model_mercury/component/button.rs
Original file line number Diff line number Diff line change
Expand Up @@ -191,7 +191,7 @@ impl<T> Button<T> {
}
}

pub fn render_background(&self, target: &mut impl Renderer, style: &ButtonStyle) {
pub fn render_background<'s>(&self, target: &mut impl Renderer<'s>, style: &ButtonStyle) {
match &self.content {
ButtonContent::IconBlend(_, _, _) => {}
_ => shape::Bar::new(self.area)
Expand Down Expand Up @@ -244,7 +244,7 @@ impl<T> Button<T> {
}
}

pub fn render_content(&self, target: &mut impl Renderer, style: &ButtonStyle)
pub fn render_content<'s>(&self, target: &mut impl Renderer<'s>, style: &ButtonStyle)
where
T: AsRef<str>,
{
Expand Down Expand Up @@ -375,7 +375,7 @@ where
self.paint_content(style);
}

fn render(&mut self, target: &mut impl Renderer) {
fn render<'s>(&'s self, target: &mut impl Renderer<'s>) {
let style = self.style();
self.render_background(target, style);
self.render_content(target, style);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,7 @@ use crate::{
ui::{
canvas::algo::PI4,
component::{
base::Never, painter, Child, Component, ComponentExt, Empty, Event, EventCtx, Label,
Split,
base::Never, Bar, Child, Component, ComponentExt, Empty, Event, EventCtx, Label, Split,
},
constant,
display::loader::{loader_circular_uncompress, LoaderDimensions},
Expand Down Expand Up @@ -55,7 +54,7 @@ where
style,
)
.vertically_centered();
let bg = painter::rect_painter(style.background_color, theme::BG);
let bg = Bar::new(style.background_color, theme::BG, 2);
let inner = (bg, label);
CoinJoinProgress::with_background(text, inner, indeterminate)
}
Expand Down Expand Up @@ -133,7 +132,7 @@ where
self.label.paint();
}

fn render(&mut self, target: &mut impl Renderer) {
fn render<'s>(&'s self, target: &mut impl Renderer<'s>) {
self.content.render(target);

let center = constant::screen().center() + Offset::y(LOADER_OFFSET);
Expand Down
4 changes: 2 additions & 2 deletions core/embed/rust/src/ui/model_mercury/component/dialog.rs
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ where
self.controls.paint();
}

fn render(&mut self, target: &mut impl Renderer) {
fn render<'s>(&'s self, target: &mut impl Renderer<'s>) {
self.content.render(target);
self.controls.render(target);
}
Expand Down Expand Up @@ -204,7 +204,7 @@ where
self.controls.paint();
}

fn render(&mut self, target: &mut impl Renderer) {
fn render<'s>(&'s self, target: &mut impl Renderer<'s>) {
self.image.render(target);
self.paragraphs.render(target);
self.controls.render(target);
Expand Down
2 changes: 1 addition & 1 deletion core/embed/rust/src/ui/model_mercury/component/error.rs
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,7 @@ impl<T: AsRef<str>> Component for ErrorScreen<'_, T> {
self.footer.paint();
}

fn render(&mut self, target: &mut impl Renderer) {
fn render<'s>(&'s self, target: &mut impl Renderer<'s>) {
self.bg.render(target);

let icon = ICON_WARNING40;
Expand Down
40 changes: 19 additions & 21 deletions core/embed/rust/src/ui/model_mercury/component/fido.rs
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ use crate::ui::{
};

use super::CancelConfirmMsg;
use core::cell::Cell;

const ICON_HEIGHT: i16 = 70;
const SCROLLBAR_INSET_TOP: i16 = 5;
Expand All @@ -32,7 +33,7 @@ pub struct FidoConfirm<F: Fn(usize) -> T, T, U> {
/// Function/closure that will return appropriate page on demand.
get_account: F,
scrollbar: ScrollBar,
fade: bool,
fade: Cell<bool>,
controls: U,
}

Expand Down Expand Up @@ -61,14 +62,16 @@ where
page_swipe.allow_right = scrollbar.has_previous_page();
page_swipe.allow_left = scrollbar.has_next_page();

let current_account = get_account(scrollbar.active_page);

Self {
app_name: Label::centered(app_name, theme::TEXT_DEMIBOLD),
account_name: Label::centered("".into(), theme::TEXT_DEMIBOLD),
account_name: Label::centered(current_account, theme::TEXT_DEMIBOLD),
page_swipe,
icon: Child::new(Image::new(icon_data)),
get_account,
scrollbar,
fade: false,
fade: Cell::new(false),
controls,
}
}
Expand All @@ -89,11 +92,14 @@ where
self.page_swipe.allow_right = self.scrollbar.has_previous_page();
self.page_swipe.allow_left = self.scrollbar.has_next_page();

let current_account = (self.get_account)(self.active_page());
self.account_name.set_text(current_account);

// Redraw the page.
ctx.request_paint();

// Reset backlight to normal level on next paint.
self.fade = true;
self.fade.set(true);
}

fn active_page(&self) -> usize {
Expand Down Expand Up @@ -168,8 +174,6 @@ where
self.scrollbar.paint();
}

let current_account = (self.get_account)(self.active_page());

// Erasing the old text content before writing the new one.
let account_name_area = self.account_name.area();
let real_area = account_name_area
Expand All @@ -179,21 +183,19 @@ where
// Account name is optional.
// Showing it only if it differs from app name.
// (Dummy requests usually have some text as both app_name and account_name.)
if !current_account.as_ref().is_empty()
&& current_account.as_ref() != self.app_name.text().as_ref()
{
self.account_name.set_text(current_account);
let account_name = self.account_name.text().as_ref();
let app_name = self.app_name.text().as_ref();
if !account_name.is_empty() && account_name != app_name {
self.account_name.paint();
}

if self.fade {
self.fade = false;
if self.fade.take() {
// Note that this is blocking and takes some time.
display::fade_backlight(theme::BACKLIGHT_NORMAL);
}
}

fn render(&mut self, target: &mut impl Renderer) {
fn render<'s>(&'s self, target: &mut impl Renderer<'s>) {
self.icon.render(target);
self.controls.render(target);
self.app_name.render(target);
Expand All @@ -202,8 +204,6 @@ where
self.scrollbar.render(target);
}

let current_account = (self.get_account)(self.active_page());

// Erasing the old text content before writing the new one.
let account_name_area = self.account_name.area();
let real_area = account_name_area
Expand All @@ -213,15 +213,13 @@ where
// Account name is optional.
// Showing it only if it differs from app name.
// (Dummy requests usually have some text as both app_name and account_name.)
if !current_account.as_ref().is_empty()
&& current_account.as_ref() != self.app_name.text().as_ref()
{
self.account_name.set_text(current_account);
let account_name = self.account_name.text().as_ref();
let app_name = self.app_name.text().as_ref();
if !account_name.is_empty() && account_name != app_name {
self.account_name.render(target);
}

if self.fade {
self.fade = false;
if self.fade.take() {
// Note that this is blocking and takes some time.
display::fade_backlight(theme::BACKLIGHT_NORMAL);
}
Expand Down
2 changes: 1 addition & 1 deletion core/embed/rust/src/ui/model_mercury/component/frame.rs
Original file line number Diff line number Diff line change
Expand Up @@ -161,7 +161,7 @@ where
self.content.paint();
}

fn render(&mut self, target: &mut impl Renderer) {
fn render<'s>(&'s self, target: &mut impl Renderer<'s>) {
self.title.render(target);
self.subtitle.render(target);
self.button.render(target);
Expand Down
Loading

0 comments on commit 6e19858

Please sign in to comment.