[cairo] creating non-rectangular clips
Lawrence D'Oliveiro
ldo at geek-central.gen.nz
Wed Jan 13 23:44:55 PST 2016
On Thu, 14 Jan 2016 05:05:35 +0100, Enrico Weigelt, metux IT consult
wrote:
> My idea now is going through all neighboring windows and create a clip
> that masks out all the overlapping areas.
The documentation for cairo_clip
<http://cairographics.org/manual/cairo-cairo-t.html#cairo-clip> says
“Establishes a new clip region by intersecting the current clip region
with the current path as it would be filled by cairo_fill() and
according to the current fill rule”.
So what you want to do is, for each overlapping window, define a path
that would fill _everywhere outside_ that window, and intersect that
path with the current clip region.
To define such a path, you will need two subpaths: one that covers the
largest possible area into which drawing might happen, and another that
covers just the boundary of the window. Give them opposite directions,
and tne winding-number fill rule will produce the desired result. Or
use the even-odd fill rule, then the subpath directions don’t matter.
More information about the cairo
mailing list