diff options
author | Federico Mena Quintero <federico@gnome.org> | 2020-09-28 19:29:23 -0500 |
---|---|---|
committer | Federico Mena Quintero <federico@gnome.org> | 2020-10-02 11:55:05 -0500 |
commit | 81ec44d17c687ac32c1b790c276898a31c13a82f (patch) | |
tree | 4b43addb6b1ca6d241f6da0e669ca1c818c1a95e | |
parent | d199595ca34aef85cae8beb4f5f955a068e37a32 (diff) | |
download | librsvg-81ec44d17c687ac32c1b790c276898a31c13a82f.tar.gz |
Really make the initial viewport have its upper-left corner at (0, 0)
-rw-r--r-- | rsvg_internals/src/drawing_ctx.rs | 9 |
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, }; |