]> Pileus Git - ~andy/gtk/blob - gdk/gdkregion.h
Update to changed cairo interface.
[~andy/gtk] / gdk / gdkregion.h
1 #ifndef __GDK_REGION_H__
2 #define __GDK_REGION_H__
3
4 #include <gdk/gdktypes.h>
5
6 #ifdef __cplusplus
7 extern "C" {
8 #endif /* __cplusplus */
9
10 /* GC fill rule for polygons
11  *  EvenOddRule
12  *  WindingRule
13  */
14 typedef enum
15 {
16   GDK_EVEN_ODD_RULE,
17   GDK_WINDING_RULE
18 } GdkFillRule;
19
20 /* Types of overlapping between a rectangle and a region
21  * GDK_OVERLAP_RECTANGLE_IN: rectangle is in region
22  * GDK_OVERLAP_RECTANGLE_OUT: rectangle in not in region
23  * GDK_OVERLAP_RECTANGLE_PART: rectangle in partially in region
24  */
25 typedef enum
26 {
27   GDK_OVERLAP_RECTANGLE_IN,
28   GDK_OVERLAP_RECTANGLE_OUT,
29   GDK_OVERLAP_RECTANGLE_PART
30 } GdkOverlapType;
31
32 typedef void (*GdkSpanFunc) (GdkSpan *span,
33                              gpointer data);
34
35 GdkRegion *gdk_region_new       (void);
36 GdkRegion *gdk_region_polygon   (GdkPoint     *points,
37                                  gint          npoints,
38                                  GdkFillRule   fill_rule);
39 GdkRegion *gdk_region_copy      (GdkRegion    *region);
40 GdkRegion *gdk_region_rectangle (GdkRectangle *rectangle);
41 void       gdk_region_destroy   (GdkRegion    *region);
42
43 void           gdk_region_get_clipbox    (GdkRegion     *region,
44                                           GdkRectangle  *rectangle);
45 void           gdk_region_get_rectangles (GdkRegion     *region,
46                                           GdkRectangle **rectangles,
47                                           gint          *n_rectangles);
48
49 gboolean       gdk_region_empty    (GdkRegion    *region);
50 gboolean       gdk_region_equal    (GdkRegion    *region1,
51                                     GdkRegion    *region2);
52 gboolean       gdk_region_point_in (GdkRegion    *region,
53                                     int           x,
54                                     int           y);
55 GdkOverlapType gdk_region_rect_in  (GdkRegion    *region,
56                                     GdkRectangle *rect);
57
58 void gdk_region_offset          (GdkRegion    *region,
59                                  gint          dx,
60                                  gint          dy);
61 void gdk_region_shrink          (GdkRegion    *region,
62                                  gint          dx,
63                                  gint          dy);
64 void gdk_region_union_with_rect (GdkRegion    *region,
65                                  GdkRectangle *rect);
66 void gdk_region_intersect       (GdkRegion    *source1,
67                                  GdkRegion    *source2);
68 void gdk_region_union           (GdkRegion    *source1,
69                                  GdkRegion    *source2);
70 void gdk_region_subtract        (GdkRegion    *source1,
71                                  GdkRegion    *source2);
72 void gdk_region_xor             (GdkRegion    *source1,
73                                  GdkRegion    *source2);
74
75 void gdk_region_spans_intersect_foreach (GdkRegion   *region,
76                                          GdkSpan     *spans,
77                                          int          n_spans,
78                                          gboolean     sorted,
79                                          GdkSpanFunc  function,
80                                          gpointer     data);
81
82 #ifdef __cplusplus
83 }
84 #endif /* __cplusplus */
85
86 #endif /* __GDK_REGION_H__ */
87