summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFederico Mena Quintero <federico@gnome.org>2020-09-28 19:29:23 -0500
committerFederico Mena Quintero <federico@gnome.org>2020-10-02 11:55:05 -0500
commit81ec44d17c687ac32c1b790c276898a31c13a82f (patch)
tree4b43addb6b1ca6d241f6da0e669ca1c818c1a95e
parentd199595ca34aef85cae8beb4f5f955a068e37a32 (diff)
downloadlibrsvg-81ec44d17c687ac32c1b790c276898a31c13a82f.tar.gz
Really make the initial viewport have its upper-left corner at (0, 0)
-rw-r--r--rsvg_internals/src/drawing_ctx.rs9
1 files changed, 8 insertions, 1 deletions
diff --git a/rsvg_internals/src/drawing_ctx.rs b/rsvg_internals/src/drawing_ctx.rs
index b7ded244..ff0aa5a8 100644
--- a/rsvg_internals/src/drawing_ctx.rs
+++ b/rsvg_internals/src/drawing_ctx.rs
@@ -205,10 +205,17 @@ impl DrawingCtx {
// "... the initial viewport coordinate system (and therefore
// the initial user coordinate system) must have its origin at
// the top/left of the viewport"
+
+ // Translate so (0, 0) is at the viewport's upper-left corner.
+ cr.translate(viewport.x0, viewport.y0);
+ let transform = Transform::from(cr.get_matrix());
+
+ // Per the spec, so the viewport has (0, 0) as upper-left.
+ let viewport = viewport.translate((-viewport.x0, -viewport.y0));
let vbox = ViewBox::from(viewport);
let initial_viewport = Viewport {
- transform: Transform::from(cr.get_matrix()),
+ transform,
vbox,
};