mirror of
https://github.com/penpot/penpot.git
synced 2026-04-25 11:18:36 +00:00
draw rulers background
This commit is contained in:
parent
68a86fbd88
commit
fd50ac3d4a
@ -137,12 +137,11 @@ pub extern "C" fn clean_up() -> Result<()> {
|
||||
#[no_mangle]
|
||||
#[wasm_error]
|
||||
pub extern "C" fn set_render_options(debug: u32, dpr: f32) -> Result<()> {
|
||||
// TODO: add a theme selector here
|
||||
with_state_mut!(state, {
|
||||
let render_state = state.render_state_mut();
|
||||
render_state.set_debug_flags(debug);
|
||||
render_state.set_dpr(dpr)?;
|
||||
|
||||
println!("rulers enabled? {:?}", render_state.options.are_rulers_enabled());
|
||||
});
|
||||
Ok(())
|
||||
}
|
||||
|
||||
@ -3,6 +3,7 @@ use skia_safe::{self as skia, Color4f};
|
||||
use super::{RenderState, ShapesPoolRef, SurfaceId};
|
||||
use crate::render::grid_layout;
|
||||
use crate::shapes::{Layout, Type};
|
||||
use crate::view::Viewbox;
|
||||
|
||||
mod themes;
|
||||
use themes::UITheme;
|
||||
@ -76,7 +77,7 @@ pub fn render(render_state: &mut RenderState, shapes: ShapesPoolRef, theme: &imp
|
||||
canvas.restore();
|
||||
|
||||
if render_options.are_rulers_enabled() {
|
||||
render_rulers(canvas, theme);
|
||||
render_rulers(canvas, theme, viewbox, render_options.dpr());
|
||||
}
|
||||
|
||||
render_state.surfaces.draw_into(
|
||||
@ -86,6 +87,37 @@ pub fn render(render_state: &mut RenderState, shapes: ShapesPoolRef, theme: &imp
|
||||
);
|
||||
}
|
||||
|
||||
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());
|
||||
}
|
||||
fn render_rulers(canvas: &skia::Canvas, theme: &impl UITheme, viewbox: Viewbox, dpr: f32) {
|
||||
let width = viewbox.width;
|
||||
let height = viewbox.height;
|
||||
|
||||
let offset_x = 22.0;
|
||||
let offset_y = 25.0;
|
||||
|
||||
let mut paint = skia::Paint::default();
|
||||
paint.set_color(theme.panel_background_color());
|
||||
|
||||
let full = skia::Rect::new(0.0, 0.0, width * dpr, height * dpr);
|
||||
// bottom-right content rect; top/left strips remain as ruler chrome.
|
||||
let inner = skia::Rect::new(offset_x * dpr, offset_y * dpr, width * dpr, height * dpr);
|
||||
let rr = 8.0 * dpr;
|
||||
let inner_radii = [
|
||||
skia::Point::new(rr, rr),
|
||||
skia::Point::new(rr, rr),
|
||||
skia::Point::new(rr, rr),
|
||||
skia::Point::new(rr, rr),
|
||||
];
|
||||
let inner_rrect = skia::RRect::new_rect_radii(inner, &inner_radii);
|
||||
|
||||
// draw a clipped background to build the rulers
|
||||
canvas.save();
|
||||
canvas.clip_rrect(inner_rrect, skia::ClipOp::Difference, true);
|
||||
canvas.draw_rect(full, &paint);
|
||||
canvas.restore();
|
||||
|
||||
// paint the inner border on the clipping
|
||||
paint.set_style(skia::PaintStyle::Stroke);
|
||||
paint.set_stroke_width(2.0 * dpr);
|
||||
paint.set_color(theme.panel_border_color());
|
||||
canvas.draw_rrect(inner_rrect, &paint);
|
||||
}
|
||||
|
||||
@ -5,6 +5,7 @@ pub trait UITheme {
|
||||
fn panel_border_color(&self) -> Color;
|
||||
}
|
||||
|
||||
#[allow(dead_code)]
|
||||
#[derive(Default, Clone, Copy, PartialEq)]
|
||||
pub struct LightTheme {}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user