diff options
| author | Martin Haug <mhaug@live.de> | 2023-03-12 09:58:47 +0100 |
|---|---|---|
| committer | Martin Haug <mhaug@live.de> | 2023-03-12 09:58:47 +0100 |
| commit | 2720a44b965d29e9c3453c732e38554fdb6413bb (patch) | |
| tree | 10f888085c4b354773a5eb8cfe9aaad74564b109 /src | |
| parent | ca6edf5283c258d8410134d678347977cb273cdd (diff) | |
| parent | 902c2ea1215ab98db7e7047ac7b8e5fc0b50c3fe (diff) | |
Merge branch 'main' into ng
Diffstat (limited to 'src')
| -rw-r--r-- | src/export/render.rs | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/src/export/render.rs b/src/export/render.rs index fcf7458a..03160d97 100644 --- a/src/export/render.rs +++ b/src/export/render.rs @@ -11,7 +11,7 @@ use usvg::FitTo; use crate::doc::{Element, Frame, Group, Meta, Text}; use crate::geom::{ - self, Abs, Geometry, Paint, PathElement, Shape, Size, Stroke, Transform, + self, Abs, Color, Geometry, Paint, PathElement, Shape, Size, Stroke, Transform, }; use crate::image::{DecodedImage, Image}; @@ -19,13 +19,13 @@ use crate::image::{DecodedImage, Image}; /// /// This renders the frame at the given number of pixels per point and returns /// the resulting `tiny-skia` pixel buffer. -pub fn render(frame: &Frame, pixel_per_pt: f32) -> sk::Pixmap { +pub fn render(frame: &Frame, pixel_per_pt: f32, fill: Color) -> sk::Pixmap { let size = frame.size(); let pxw = (pixel_per_pt * size.x.to_f32()).round().max(1.0) as u32; let pxh = (pixel_per_pt * size.y.to_f32()).round().max(1.0) as u32; let mut canvas = sk::Pixmap::new(pxw, pxh).unwrap(); - canvas.fill(sk::Color::WHITE); + canvas.fill(fill.into()); let ts = sk::Transform::from_scale(pixel_per_pt, pixel_per_pt); render_frame(&mut canvas, ts, None, frame); @@ -432,13 +432,19 @@ impl From<Paint> for sk::Paint<'static> { fn from(paint: Paint) -> Self { let mut sk_paint = sk::Paint::default(); let Paint::Solid(color) = paint; - let c = color.to_rgba(); - sk_paint.set_color_rgba8(c.r, c.g, c.b, c.a); + sk_paint.set_color(color.into()); sk_paint.anti_alias = true; sk_paint } } +impl From<Color> for sk::Color { + fn from(color: Color) -> Self { + let c = color.to_rgba(); + sk::Color::from_rgba8(c.r, c.g, c.b, c.a) + } +} + /// Allows to build tiny-skia paths from glyph outlines. struct WrappedPathBuilder(sk::PathBuilder); |
