Thanks for the replay.<br><br><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">Basically when you use a Bounded operator, you are not touching anything<br>
outside the extents of your mask, while an XRender operator can change the<br>
destination even outside the mask.<br>
For example if you do an "IN" operation, everything outside the mask but<br>
inside the clip becomes transparent.</blockquote><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">The equation which follows from the description is:<br>
dst' = ((src IN mask) OP dst) LERP_clip dst<br>
<br>
In particular, it explains the (src IN mask) part, i.e.<br>
the source is cleared outside the mask.</blockquote><div><br></div><div>Ok, now I clearly understand why CLEAR and SOURCE should be explicitly bounded by mask. If (zero OP dst) == dst, we can classify these operators as "Any" (same for both bounded and unbounded interpretation). For remaining 4 unbounded operators, result of compositing zero with dst is always zero i.e. (zero OP dst) == zero, where OP = IN, OUT, DEST_IN, DEST_ATOP.</div>
<div><br></div><div>So following equation should hold for 4 unbounded operators.</div><div> dst = (src IN mask) OP dst (where mask is allowed)</div><div> dst = zero (where mask is not allowed)</div><div><br></div><div>
</div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"><div class="im">
> 3. Limit boxes<br>
> Boxes, traps, polygon can have there limit boxes. I thought the boxes should<br>
> be disjoint,<br>
> because I couldn't find any handling of overlapping boxes. Is this true?<br>
<br>
</div>No, overlappping boxes are handled by the tessellator and/or the rasterizer.</blockquote></div><div><br></div><div>I used the term "boxes" referring to the "limit boxes". I know that boxes (not limit boxes) are tessellated according to the fill rule by cairo_bentley_ottmann_tessellate_boxes(). But I couldn't find any accessing to limits and num_limits inside of tessellator code. Instead, in case of polygon, an edge is clipped with each of limit boxes before it is added. So if the limit boxes should be regarded as a set of rectangular paths rather than rectangular region, we have to consider the fill rule of the limit boxes. But edge clipping does not consider the fill rule of the limit boxes. This is also same for cairo_traps_t. So, I concluded that limit boxes should be disjoint (regional representation) so that we can ignore the fill rule.</div>
<div><br></div><div>-- </div>Best Regards,<div>Taekyun Kim</div><br>