mirror of
https://gitlab.freedesktop.org/cairo/cairo.git
synced 2025-12-25 06:00:10 +01:00
Compute device_transform_inverse.
Because we can independently set either the device scale or the device offset, we need to be careful and recompute the inverse rather than simply assuming that the original contents of the device transform is identity. Fixes regression https://bugs.launchpad.net/inkscape/+bug/234546.
This commit is contained in:
parent
9841d9d58e
commit
3c18d95b29
1 changed files with 4 additions and 6 deletions
|
|
@ -811,10 +811,8 @@ _cairo_surface_set_device_scale (cairo_surface_t *surface,
|
|||
surface->device_transform.xy = 0.0;
|
||||
surface->device_transform.yx = 0.0;
|
||||
|
||||
surface->device_transform_inverse.xx = 1.0 / sx;
|
||||
surface->device_transform_inverse.yy = 1.0 / sy;
|
||||
surface->device_transform_inverse.xy = 0.0;
|
||||
surface->device_transform_inverse.yx = 0.0;
|
||||
surface->device_transform_inverse = surface->device_transform;
|
||||
cairo_matrix_invert (&surface->device_transform_inverse);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -855,8 +853,8 @@ cairo_surface_set_device_offset (cairo_surface_t *surface,
|
|||
surface->device_transform.x0 = x_offset;
|
||||
surface->device_transform.y0 = y_offset;
|
||||
|
||||
surface->device_transform_inverse.x0 = - x_offset;
|
||||
surface->device_transform_inverse.y0 = - y_offset;
|
||||
surface->device_transform_inverse = surface->device_transform;
|
||||
cairo_matrix_invert (&surface->device_transform_inverse);
|
||||
}
|
||||
slim_hidden_def (cairo_surface_set_device_offset);
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue