Re: Help for using cairo_region and clip

Adhir Garg <[email protected]>
Newsgroups gmane.comp.lib.cairo
Message-ID <CAAtGbNg=y6Q4vW0ODDJi=ign73h+uTJw8VmLdf1_xw9yFLYUOg@mail.gmail.com>
Hello Carlos,

Thanks for your time for replying.

However, the question still remains unanswered. I am trying to explain
problem in following steps

1. Create a big, filled Rectangle 1000x1000 - cairo_rectangle (cr, 0,
0, 1000, 1000);
2. Create a BIG Rectangle Region 100x100  using
cairo_region_create_rectangle(cr, rectangle*);
3. Exclude a part (region) of it using subtract -
cairo_region_subtract_rectangle
Now I assume that my Region consists of reduced size < 100X100
4. I try to create with another shape (say Rectangle) -  cairo_rectangle
5. If I do cairo_clip(), I only get the rectangle of Step 4

My final expected output is intersection of Region at (3) and Clip in (4).
However, I am unable to find any API that makes use of cairo_region_t.

Prior to 1.10.0, we had API set_clip_region(), This was responsible
for setting the current clip region to current region.

In case, we have such API, where we are actually making use of
cairo_region, it would be great.

Regards,
Adhir

On Wed, Oct 10, 2012 at 3:33 PM, Carlos López González
<[email protected]> wrote:
> Hi Adhir,
> According to the manual:
> "Regions are a simple graphical data type representing an area of
> integer-aligned rectangles. They are often used on raster surfaces to
> track areas of interest, such as change or clip areas."
>
> Also:
>
> "cairo_clip ()
> void   cairo_clip (cairo_t *cr);
>
> 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 (see cairo_set_fill_rule())."
>
> Do not confuse the "region" word from the cairo_clip description with
> the cairo_region_t type. They are pretty different.  The first is like
> a path and the second is a pixel aligned rectangle. In general paths
> can be of any kind (arcs, strokes, rectangles).
>
> So if you want to clip your path with a rectangle, just use a
> rectangle path as clipping path
>
> /* prepare your context and surface here*/
> cairo_rectangle(cr, x, y, width, height);
> /* add more paths here to the clip*/
> cairo_clip(cr);
> /*your stroke painting stuff here*/
> cairo_move_to, cairo_line_to, etc.
>
> See:
> http://cairographics.org/samples/clip/
>
> I hope it helped.
> Carlos
>
> 2012/10/10 Adhir Garg <[email protected]>
>>
>> Hello,
>>
>> I am pretty new to Cairo and have a query regarding use of
>> cairo_region_t and clip.
>>
>> What I need is
>> 1. Create a region - created using cairo_region_create_rectangle
>> 2. Create a Path and clip it with region - Here if I use cairo_clip(),
>> then the region is not taken into consideration.
>>
>> Somehow, I couldn't locate correct API for intersection of region with clip.
>> On extended platforms I could get set_clip_region, but could not find
>> the same in Cairo listed APIs.
>>
>> Thanks in advance for your help.
>>
>> Regards,
>> Adhir
>> --
>> cairo mailing list
>> [email protected]
>> http://lists.cairographics.org/mailman/listinfo/cairo
>
>
>
>
> --
> Carlos
> http://synfig.org
-- 
cairo mailing list
[email protected]
http://lists.cairographics.org/mailman/listinfo/cairo
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.