[cairo] Help: Question on Cairo::OPERATOR_XOR of set_operator?

Travis Griggs tgriggs at cincom.com
Wed Oct 8 08:16:23 PDT 2008

On Oct 8, 2008, at 6:06 AM, Will wrote:

> Hi,
>        I am a new user of cairo and I am wondering how to use the XOR
>        mode.
>        In computer graphics, the screen can restore original color if
>        we draw
>        the same operation 2 times in XOR mode. I understand that cairo
>        supports
>        the function. Intuitively, I wrote the following codes for
>        testing XOR
>        mode use:
>                cr->set_line_width(1.0);
>                cr->set_source_rgb(0.0, 0.8, 0.0);
>                cr->move_to(0,0);
>                cr->line_to(50,50);
>                cr->set_operator(Cairo::OPERATOR_XOR);
>                cr->stroke_preserve();
>                cr->stroke();
>        However, the original color is not restored. I tried several
>        other ways
>        but there is no way out.
>        Can any one give me some hints?

Will, the operator applies to the alpha channel, not the rgb channels.  
I was surprised by this too. IIRC, the operator modes were basically  
lifted from one of the other specs (PDF maybe?). And someone once  
explained to me why an RGB xor mode would be difficult. IIRC, it was  
basically that not all backends have a byte based color spec on the  
backend. E.g. if the model's uses color descriptions 0.0 - 1.0 (rather  
than 0 - 255), what does an xor mean? That all said... I still wish  
there was an XOR RGB way to draw to screens and the like.

Travis Griggs
If you can't say "Did it First!", you'd better be able to say "Did it  

More information about the cairo mailing list