summaryrefslogtreecommitdiff
path: root/src/export/render.rs
diff options
context:
space:
mode:
authorLaurenz <laurmaedje@gmail.com>2023-03-09 13:07:36 +0100
committerLaurenz <laurmaedje@gmail.com>2023-03-09 13:07:36 +0100
commit2c13ff9bfe9aea9537938fc957d90a2b798bba2f (patch)
tree2c6a1e07f3ec3bd37432b30d035cf0ef391219fa /src/export/render.rs
parentab841188e3d2687ee8f436336e6fde337985a83e (diff)
Make render background color configurable
Diffstat (limited to 'src/export/render.rs')
-rw-r--r--src/export/render.rs16
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);