summaryrefslogtreecommitdiff
path: root/src/cairo-gstate.c
diff options
context:
space:
mode:
authorAnton Danilkin <afdw@yandex.ru>2021-04-24 14:55:19 +0200
committerAnton Danilkin <afdw@yandex.ru>2021-04-25 13:35:41 +0200
commit8d0274413667039ee46a26a4b8abe1ae2bbd1c28 (patch)
tree8db082cf03bb6422ff3b10d6602ca1c7dc28f6d3 /src/cairo-gstate.c
parentde2a71b230e0202292e5deae7e19a90139165a49 (diff)
downloadcairo-8d0274413667039ee46a26a4b8abe1ae2bbd1c28.tar.gz
Replace an outdated (after f0e2cd44) comment with clarification in _cairo_gstate_copy_transformed_pattern
Diffstat (limited to 'src/cairo-gstate.c')
-rw-r--r--src/cairo-gstate.c15
1 files changed, 14 insertions, 1 deletions
diff --git a/src/cairo-gstate.c b/src/cairo-gstate.c
index ff0cb8be7..a5f6fc72f 100644
--- a/src/cairo-gstate.c
+++ b/src/cairo-gstate.c
@@ -937,9 +937,22 @@ _cairo_gstate_copy_transformed_pattern (cairo_gstate_t *gstate,
const cairo_pattern_t *original,
const cairo_matrix_t *ctm_inverse)
{
+ /*
+ * What calculations below do can be described in pseudo-code (so using nonexistent fields) as (using column vectors):
+ * pattern->matrix = surface->device_transform *
+ * pattern->matrix *
+ * ctm_inverse *
+ * gstate->target->device_transform_inverse
+ *
+ * The inverse of which is:
+ * pattern->matrix_inverse = gstate->target->device_transform *
+ * ctm *
+ * pattern->matrix_inverse *
+ * surface->device_transform_inverse
+ */
+
_cairo_gstate_copy_pattern (pattern, original);
- /* apply device_transform first so that it is transformed by ctm_inverse */
if (original->type == CAIRO_PATTERN_TYPE_SURFACE) {
cairo_surface_pattern_t *surface_pattern;
cairo_surface_t *surface;