[cairo] Locking the source matrix

Owen Taylor otaylor at redhat.com
Mon Aug 1 14:25:16 PDT 2005


On Mon, 2005-08-01 at 14:18 -0700, Carl Worth wrote:

> > Index: test/source-surface-scale-paint.c
> > ===================================================================
> > RCS file: /cvs/cairo/cairo/test/source-surface-scale-paint.c,v
> > retrieving revision 1.2
> > diff -u -p -r1.2 source-surface-scale-paint.c
> > --- test/source-surface-scale-paint.c	6 May 2005 20:23:41 -0000	1.2
> > +++ test/source-surface-scale-paint.c	1 Aug 2005 20:05:21 -0000
> > @@ -46,9 +46,10 @@ draw (cairo_t *cr, int width, int height
> >      surface = cairo_image_surface_create_for_data ((unsigned char *) data,
> >  					      CAIRO_FORMAT_ARGB32, 4, 4, 16);
> >  
> > -    cairo_set_source_surface (cr, surface, 2, 2);
> > -    cairo_pattern_set_filter (cairo_get_source (cr), CAIRO_FILTER_NEAREST);
> >      cairo_scale (cr, 2, 2);
> > +    cairo_set_source_surface (cr, surface, 1, 1);
> > +    cairo_pattern_set_filter (cairo_get_source (cr), CAIRO_FILTER_NEAREST);
> > +    cairo_identity_matrix (cr);
> >      cairo_paint (cr);
> 
> Changing the test to match the reference image was a nice try, but it
> won't do it here. The new version of the test above is now equivalent
> to what we're testing in scale-source-surface-paint.
> 
> What we need instead is a test that sets a source, then changes the
> CTM, demonstrating that the original CTM was locked for the source. I
> think the original test code should do that, so we'll just need to
> verify that the result is correct. (And perhaps tweak the test to make
> a more pleasing result---eg. change the size so that the result is
> centered).

Note the cairo_identity_matrix() ... the above does test changing the
matrix after setting the source surface. But I've reverted that now
and updated the reference image.

In CVS now.

Regards,
						Owen

2005-08-01  Owen Taylor  <otaylor at redhat.com>

        reviewed by: cworth

        * src/cairo-gstate.c src/cairo-gstate-private.h: Store the
        inverse CTM at the time of cairo_gstate_set_source() to
        "lock" the user space matrix.

        * src/cairo-gstate.c: Move the source pattern transformation
        to the outside of _cairo_gstate_clip_and_composite_trapezoids()
        instead of doing it at the leaves.

        * test/source-surface-scale-paint.c: Change size of output
        surface for aesthetics.

        * test/source-surface-scale-paint-ref.png: Updated to correspond
        to the current definition.

        * test/Makefile.am (XFAIL_TESTS):
        Remove source-surface-scale-paint.

-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: This is a digitally signed message part
Url : http://lists.freedesktop.org/archives/cairo/attachments/20050801/5b600ff1/attachment.pgp


More information about the cairo mailing list