Skip to content

Commit 84ea912

Browse files
committed
CairoHelper: fix scale
1 parent 00ef270 commit 84ea912

File tree

2 files changed

+15
-1
lines changed

2 files changed

+15
-1
lines changed

Helpers/CairoHelper.cpp

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,17 @@ CairoHelper::applyScale(cairo_t *cr,
4545
cairo_scale(cr, scale.x, scale.y);
4646
}
4747

48+
void
49+
CairoHelper::applyScale(cairo_t *cr,
50+
const _XY &scale,
51+
const _XY &origin)
52+
{
53+
if (!cr || (scale.x == 0. && scale.y == 0.)) { return; }
54+
cairo_translate(cr, origin.x, origin.y);
55+
cairo_scale(cr, scale.x, scale.y);
56+
cairo_translate(cr, -origin.x, -origin.y);
57+
}
58+
4859
void
4960
CairoHelper::applySkew(cairo_t *cr,
5061
const _XY &skew,
@@ -83,7 +94,7 @@ CairoHelper::applyTransform(cairo_t *cr,
8394
if (!cr) { return; }
8495
if (transform.flip) { applyFlip(cr, transform.height); }
8596
if (transform.position) { applyPosition(cr, transform.origin); }
86-
applyScale(cr, transform.scale);
97+
applyScale(cr, transform.scale, transform.origin);
8798
applySkew(cr, transform.skew, transform.origin);
8899
applyRotate(cr, transform.rotate, transform.origin);
89100
}

Helpers/CairoHelper.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,9 @@ class CairoHelper
4949
/** @brief apply scale */
5050
static void applyScale(cairo_t *cr,
5151
const _XY &scale);
52+
static void applyScale(cairo_t *cr,
53+
const _XY &scale,
54+
const _XY &origin);
5255
/** @brief apply skew */
5356
static void applySkew(cairo_t *cr,
5457
const _XY &skew,

0 commit comments

Comments
 (0)