diff --git a/render-wasm/src/render.rs b/render-wasm/src/render.rs index f4d4401fbd..976f3695db 100644 --- a/render-wasm/src/render.rs +++ b/render-wasm/src/render.rs @@ -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(()) diff --git a/render-wasm/src/render/ui.rs b/render-wasm/src/render/ui.rs index bb7cc72c0f..dd2530e6d5 100644 --- a/render-wasm/src/render/ui.rs +++ b/render-wasm/src/render/ui.rs @@ -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()); +} \ No newline at end of file diff --git a/render-wasm/src/render/ui/themes.rs b/render-wasm/src/render/ui/themes.rs new file mode 100644 index 0000000000..087c8bd144 --- /dev/null +++ b/render-wasm/src/render/ui/themes.rs @@ -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) + } +} \ No newline at end of file