summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFederico Mena Quintero <federico@gnome.org>2020-11-03 19:45:30 -0600
committerFederico Mena Quintero <federico@gnome.org>2020-11-05 12:50:23 -0600
commitc529089800a4b461a2c9dd8fd62a812ec0c457f2 (patch)
treed1866b584e61a6394e9a1fa9a62622b0f491a1e2
parent5d10a047a215d748f4487765b32570613ba4c1a0 (diff)
downloadlibrsvg-c529089800a4b461a2c9dd8fd62a812ec0c457f2.tar.gz
text: Propagate dx/dy across nested <tspan>
-rw-r--r--rsvg_internals/src/text.rs11
1 files changed, 9 insertions, 2 deletions
diff --git a/rsvg_internals/src/text.rs b/rsvg_internals/src/text.rs
index 32223ea2..03f2be5d 100644
--- a/rsvg_internals/src/text.rs
+++ b/rsvg_internals/src/text.rs
@@ -293,6 +293,8 @@ fn children_to_chunks(
&cascaded,
draw_ctx,
chunks,
+ dx,
+ dy,
depth + 1,
);
}
@@ -603,6 +605,8 @@ impl TSpan {
cascaded: &CascadedValues<'_>,
draw_ctx: &mut DrawingCtx,
chunks: &mut Vec<Chunk>,
+ dx: f64,
+ dy: f64,
depth: usize,
) {
let values = cascaded.get();
@@ -611,8 +615,11 @@ impl TSpan {
let x = self.x.map(|l| l.normalize(&values, &params));
let y = self.y.map(|l| l.normalize(&values, &params));
- let dx = self.dx.map_or(0.0, |l| l.normalize(&values, &params));
- let dy = self.dy.map_or(0.0, |l| l.normalize(&values, &params));
+ let span_dx = self.dx.map_or(0.0, |l| l.normalize(&values, &params));
+ let span_dy = self.dy.map_or(0.0, |l| l.normalize(&values, &params));
+
+ let dx = dx + span_dx;
+ let dy = dy + span_dy;
chunks.push(Chunk::new(values, x, y));