[librsvg: 22/31] Shape now contains its Stroke
- From: Federico Mena Quintero <federico src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [librsvg: 22/31] Shape now contains its Stroke
- Date: Thu, 3 Jun 2021 02:27:11 +0000 (UTC)
commit 11db795348fea483a4436203ccc0041f040dcb0f
Author: Federico Mena Quintero <federico gnome org>
Date: Wed Jun 2 19:59:32 2021 -0500
Shape now contains its Stroke
src/drawing_ctx.rs | 17 ++++++-----------
src/shapes.rs | 8 +++++++-
2 files changed, 13 insertions(+), 12 deletions(-)
---
diff --git a/src/drawing_ctx.rs b/src/drawing_ctx.rs
index 7fc1e9e4..f8cc599c 100644
--- a/src/drawing_ctx.rs
+++ b/src/drawing_ctx.rs
@@ -1194,6 +1194,7 @@ impl DrawingCtx {
pub fn draw_shape(
&mut self,
+ view_params: &ViewParams,
shape: &Shape,
node: &Node,
acquired_nodes: &mut AcquiredNodes<'_>,
@@ -1217,7 +1218,7 @@ impl DrawingCtx {
let cr = dc.cr.clone();
let transform = dc.get_transform();
let mut path_helper =
- PathHelper::new(&cr, transform, &shape.path, values.stroke_line_cap());
+ PathHelper::new(&cr, transform, &shape.path, shape.stroke.line_cap);
if clipping {
if values.is_visible() {
@@ -1229,13 +1230,7 @@ impl DrawingCtx {
cr.set_antialias(cairo::Antialias::from(values.shape_rendering()));
- let view_params = dc.get_view_params();
- let stroke = {
- let params = NormalizeParams::new(values, &view_params);
- Stroke::new(values, ¶ms)
- };
-
- setup_cr_for_stroke(&cr, &stroke);
+ setup_cr_for_stroke(&cr, &shape.stroke);
cr.set_fill_rule(cairo::FillRule::from(values.fill_rule()));
@@ -1252,13 +1247,13 @@ impl DrawingCtx {
.resolve(an, values.fill_opacity().0, values.color().0);
path_helper.set()?;
- let bbox = compute_stroke_and_fill_box(&cr, &stroke, &stroke_paint_source);
+ let bbox = compute_stroke_and_fill_box(&cr, &shape.stroke, &stroke_paint_source);
let stroke_paint_source =
- stroke_paint_source.to_user_space(&bbox, &view_params, values);
+ stroke_paint_source.to_user_space(&bbox, view_params, values);
let fill_paint_source =
- fill_paint_source.to_user_space(&bbox, &view_params, values);
+ fill_paint_source.to_user_space(&bbox, view_params, values);
if values.is_visible() {
for &target in &values.paint_order().targets {
diff --git a/src/shapes.rs b/src/shapes.rs
index a0df8aa4..6cf806b6 100644
--- a/src/shapes.rs
+++ b/src/shapes.rs
@@ -11,6 +11,7 @@ use crate::document::AcquiredNodes;
use crate::drawing_ctx::DrawingCtx;
use crate::element::{Draw, ElementResult, SetAttributes};
use crate::error::*;
+use crate::layout::Stroke;
use crate::length::*;
use crate::node::{CascadedValues, Node};
use crate::parsers::{optional_comma, Parse, ParseValue};
@@ -32,6 +33,7 @@ struct ShapeDef {
pub struct Shape {
pub path: Rc<SvgPath>,
pub markers: Markers,
+ pub stroke: Stroke,
}
impl ShapeDef {
@@ -59,11 +61,15 @@ macro_rules! impl_draw {
let view_params = draw_ctx.get_view_params();
let params = NormalizeParams::new(values, &view_params);
let shape_def = self.make_shape(¶ms);
+
+ let stroke = Stroke::new(values, ¶ms);
+
let shape = Shape {
path: shape_def.path,
markers: shape_def.markers,
+ stroke,
};
- draw_ctx.draw_shape(&shape, node, acquired_nodes, values, clipping)
+ draw_ctx.draw_shape(&view_params, &shape, node, acquired_nodes, values, clipping)
}
}
};
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]