[cairo] Zero matrix transformation

Daniel Kraft d at domob.eu
Thu Mar 20 00:18:45 PDT 2008


Jeff Muizelaar wrote:
> On Wed, Mar 19, 2008 at 12:22:10PM +0000, Daniel Kraft wrote:
>> Hi,
>>
>> I just set-up git cairo and pixman and was playing around a bit with it. 
>>   On the GSoC ideas page there's one item:
>>
>> Fix cairo so that a degenerate matrix draws nothing rather than 
>> triggering an error state. That is: cairo_scale (cr, 0, 0); should not 
>> cause an error, (though maybe it shouldn't actually draw nothing for 
>> painting an infinite source pattern---compute the average color for a 
>> surface-based source pattern perhaps?).
>>
>> I tried to reproduce this, but for me (using the hello-program from the 
>> FAQ with this scale-statement added) this seems to work.  Using numbers 
>> between 0 and 1, the writing becomes smaller as I would expect; for 
>> using 0, nothing is drawn, as the item states as desired behaviour.
>>
>> Did I understand something wrong, did my test not trigger the error for 
>> some reason, is this already done...?  I'd like to start working on 
>> cairo a bit to make experiences, and this looked not too hard.  If you 
>> have any other suggestions, I'd be happy to hear from you!
> 
> In your example, if you call cairo_status(cr) after the call to
> cairo_scale(cr, 0, 0) you should get CAIRO_STATUS_INVALID_MATRIX.
> Alternatively, you can try changing the scale back to 1, 1 with
> cairo_set_matrix after setting it to 0, 0 and you should not be able to
> draw anything.
> 
> The desired behaviour is that nothing be drawn only when the matrix is
> degenerate. If it becomes well-formed drawing should work as normal
> instead of the cairo context remaining in an error state.

Ok, thank you!  I'm a few days off now, but after that I'll try it out 
and hopefully also be able to help here.

Daniel

-- 
Done:     Bar-Sam-Val-Wiz, Dwa-Elf-Hum-Orc, Cha-Law, Fem-Mal
Underway: Ran-Gno-Neu-Fem
To go:    Arc-Cav-Hea-Kni-Mon-Pri-Rog-Tou


More information about the cairo mailing list