aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorTuomas Siipola <tuomas@zpl.fi>2020-06-29 00:46:42 +0300
committerHarry Jeffery <harry@exec64.co.uk>2020-07-21 01:54:17 +0100
commitafe155dceaa47b51709c8a0bdd6934459089a61a (patch)
treefb1d25bc74632d407a9492cdfe8b31f880e0baba /src
parentbb4a609cc0d69c43ebb8ad5eef58c7490734ed61 (diff)
downloadimv-afe155dceaa47b51709c8a0bdd6934459089a61a.tar.gz
Support rotate and flip commands on SVG
Diffstat (limited to 'src')
-rw-r--r--src/canvas.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/canvas.c b/src/canvas.c
index c9b5ed7..7e21b2e 100644
--- a/src/canvas.c
+++ b/src/canvas.c
@@ -11,6 +11,7 @@
#include <stdbool.h>
#include <stdio.h>
#include <stdlib.h>
+#include <math.h>
#ifdef IMV_BACKEND_LIBRSVG
#include <librsvg/rsvg.h>
@@ -301,6 +302,12 @@ void imv_canvas_draw_image(struct imv_canvas *canvas, struct imv_image *image,
imv_canvas_clear(canvas);
cairo_translate(canvas->cairo, x, y);
cairo_scale(canvas->cairo, scale, scale);
+ cairo_translate(canvas->cairo, imv_image_width(image) / 2, imv_image_height(image) / 2);
+ if (mirrored) {
+ cairo_scale(canvas->cairo, -1, 1);
+ }
+ cairo_rotate(canvas->cairo, rotation * M_PI / 180.0);
+ cairo_translate(canvas->cairo, -imv_image_width(image) / 2, -imv_image_height(image) / 2);
rsvg_handle_render_cairo(svg, canvas->cairo);
cairo_identity_matrix(canvas->cairo);
imv_canvas_draw(canvas);