create ui theme type (wasm)

This commit is contained in:
Belén Albeza
2026-04-02 17:02:27 +02:00
parent 08d21302d3
commit 68a86fbd88
3 changed files with 56 additions and 3 deletions

View File

@@ -414,6 +414,10 @@ impl RenderState {
})
}
pub fn options(&self) -> RenderOptions {
self.options
}
/// Combines every visible layer blur currently active (ancestors + shape)
/// into a single equivalent blur. Layer blur radii compound by adding their
/// variances (σ² = radius²), so we:
@@ -1446,7 +1450,8 @@ impl RenderState {
debug::render(self);
}
ui::render(self, shapes);
// FIXME: get actual theme from options
ui::render(self, shapes, &ui::DarkTheme::default());
debug::render_wasm_label(self);
self.flush_and_submit();
@@ -2669,7 +2674,8 @@ impl RenderState {
debug::render(self);
}
ui::render(self, tree);
// FIXME: get actual theme from options
ui::render(self, tree, &ui::DarkTheme::default());
debug::render_wasm_label(self);
Ok(())

View File

@@ -4,7 +4,14 @@ use super::{RenderState, ShapesPoolRef, SurfaceId};
use crate::render::grid_layout;
use crate::shapes::{Layout, Type};
pub fn render(render_state: &mut RenderState, shapes: ShapesPoolRef) {
mod themes;
use themes::UITheme;
#[allow(unused_imports)]
pub use themes::{DarkTheme, LightTheme};
pub fn render(render_state: &mut RenderState, shapes: ShapesPoolRef, theme: &impl UITheme) {
let render_options = render_state.options();
let canvas = render_state.surfaces.canvas(SurfaceId::UI);
canvas.clear(Color4f::new(0.0, 0.0, 0.0, 0.0));
@@ -67,9 +74,18 @@ pub fn render(render_state: &mut RenderState, shapes: ShapesPoolRef) {
}
canvas.restore();
if render_options.are_rulers_enabled() {
render_rulers(canvas, theme);
}
render_state.surfaces.draw_into(
SurfaceId::UI,
SurfaceId::Target,
Some(&skia::Paint::default()),
);
}
fn render_rulers(canvas: &skia::Canvas, _theme: &impl UITheme) {
canvas.draw_rect(skia::Rect::new(0.0, 0.0, 100.0, 100.0), &skia::Paint::default());
}

View File

@@ -0,0 +1,31 @@
use crate::shapes::Color;
pub trait UITheme {
fn panel_background_color(&self) -> Color;
fn panel_border_color(&self) -> Color;
}
#[derive(Default, Clone, Copy, PartialEq)]
pub struct LightTheme {}
impl UITheme for LightTheme {
fn panel_background_color(&self) -> Color {
Color::new(0xffffffff)
}
fn panel_border_color(&self) -> Color {
Color::new(0xffeef0f2)
}
}
#[derive(Default, Clone, Copy, PartialEq)]
pub struct DarkTheme {}
impl UITheme for DarkTheme {
fn panel_background_color(&self) -> Color {
Color::new(0xff18181a)
}
fn panel_border_color(&self) -> Color {
Color::new(0xff2e3434)
}
}