Rev 1892 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 1892 | Rev 3959 | ||
---|---|---|---|
Line 29... | Line 29... | ||
29 | * |
29 | * |
30 | * The Initial Developer of the Original Code is Red Hat, Inc. |
30 | * The Initial Developer of the Original Code is Red Hat, Inc. |
31 | * |
31 | * |
32 | * Contributor(s): |
32 | * Contributor(s): |
33 | * Kristian Høgsberg |
33 | * Kristian Høgsberg |
- | 34 | * Chris Wilson |
|
34 | */ |
35 | */ |
Line 35... | Line 36... | ||
35 | 36 | ||
36 | #ifndef CAIRO_CLIP_PRIVATE_H |
37 | #ifndef CAIRO_CLIP_PRIVATE_H |
Line 37... | Line 38... | ||
37 | #define CAIRO_CLIP_PRIVATE_H |
38 | #define CAIRO_CLIP_PRIVATE_H |
- | 39 | ||
- | 40 | #include "cairo-types-private.h" |
|
- | 41 | ||
38 | 42 | #include "cairo-boxes-private.h" |
|
- | 43 | #include "cairo-error-private.h" |
|
39 | #include "cairo-types-private.h" |
44 | #include "cairo-compiler-private.h" |
40 | #include "cairo-compiler-private.h" |
45 | #include "cairo-error-private.h" |
Line 41... | Line 46... | ||
41 | #include "cairo-path-fixed-private.h" |
46 | #include "cairo-path-fixed-private.h" |
Line 42... | Line -... | ||
42 | #include "cairo-reference-count-private.h" |
- | |
43 | - | ||
44 | extern const cairo_private cairo_rectangle_list_t _cairo_rectangles_nil; |
- | |
45 | - | ||
46 | enum { |
- | |
47 | CAIRO_CLIP_PATH_HAS_REGION = 0x1, |
- | |
48 | CAIRO_CLIP_PATH_REGION_IS_UNSUPPORTED = 0x2, |
47 | #include "cairo-reference-count-private.h" |
49 | CAIRO_CLIP_PATH_IS_BOX = 0x4 |
48 | |
50 | }; |
49 | extern const cairo_private cairo_rectangle_list_t _cairo_rectangles_nil; |
51 | 50 | ||
52 | struct _cairo_clip_path { |
51 | struct _cairo_clip_path { |
53 | cairo_reference_count_t ref_count; |
52 | cairo_reference_count_t ref_count; |
54 | cairo_path_fixed_t path; |
53 | cairo_path_fixed_t path; |
- | 54 | cairo_fill_rule_t fill_rule; |
|
Line -... | Line 55... | ||
- | 55 | double tolerance; |
|
55 | cairo_fill_rule_t fill_rule; |
56 | cairo_antialias_t antialias; |
- | 57 | cairo_clip_path_t *prev; |
|
- | 58 | }; |
|
- | 59 | ||
- | 60 | struct _cairo_clip { |
|
Line 56... | Line -... | ||
56 | double tolerance; |
- | |
57 | cairo_antialias_t antialias; |
- | |
58 | cairo_clip_path_t *prev; |
61 | cairo_rectangle_int_t extents; |
59 | 62 | cairo_clip_path_t *path; |
|
- | 63 | ||
- | 64 | cairo_box_t *boxes; |
|
60 | cairo_rectangle_int_t extents; |
65 | int num_boxes; |
Line 61... | Line 66... | ||
61 | 66 | ||
62 | /* partial caches */ |
- | |
63 | unsigned int flags; |
67 | cairo_region_t *region; |
Line 64... | Line 68... | ||
64 | cairo_region_t *region; |
68 | cairo_bool_t is_region; |
- | 69 | ||
Line 65... | Line 70... | ||
65 | cairo_surface_t *surface; |
70 | cairo_box_t embedded_box; |
- | 71 | }; |
|
Line 66... | Line 72... | ||
66 | }; |
72 | |
67 | 73 | cairo_private cairo_clip_t * |
|
Line 68... | Line -... | ||
68 | struct _cairo_clip { |
- | |
69 | /* can be used as a cairo_hash_entry_t for live clips */ |
74 | _cairo_clip_create (void); |
Line 70... | Line 75... | ||
70 | cairo_clip_path_t *path; |
75 | |
71 | 76 | cairo_private cairo_clip_path_t * |
|
72 | cairo_bool_t all_clipped; |
- | |
73 | - | ||
Line -... | Line 77... | ||
- | 77 | _cairo_clip_path_reference (cairo_clip_path_t *clip_path); |
|
- | 78 | ||
- | 79 | cairo_private void |
|
74 | }; |
80 | _cairo_clip_path_destroy (cairo_clip_path_t *clip_path); |
75 | 81 | ||
- | 82 | cairo_private void |
|
- | 83 | _cairo_clip_destroy (cairo_clip_t *clip); |
|
- | 84 | ||
- | 85 | cairo_private extern const cairo_clip_t __cairo_clip_all; |
|
- | 86 | ||
- | 87 | cairo_private cairo_clip_t * |
|
- | 88 | _cairo_clip_copy (const cairo_clip_t *clip); |
|
- | 89 | ||
- | 90 | cairo_private cairo_clip_t * |
|
Line 76... | Line 91... | ||
76 | cairo_private void |
91 | _cairo_clip_copy_region (const cairo_clip_t *clip); |
77 | _cairo_clip_init (cairo_clip_t *clip); |
92 | |
78 | 93 | cairo_private cairo_clip_t * |
|
Line 79... | Line -... | ||
79 | cairo_private_no_warn cairo_clip_t * |
- | |
80 | _cairo_clip_init_copy (cairo_clip_t *clip, cairo_clip_t *other); |
- | |
81 | 94 | _cairo_clip_copy_path (const cairo_clip_t *clip); |
|
82 | cairo_private cairo_status_t |
95 | |
83 | _cairo_clip_init_copy_transformed (cairo_clip_t *clip, |
96 | cairo_private cairo_clip_t * |
Line 84... | Line 97... | ||
84 | cairo_clip_t *other, |
97 | _cairo_clip_translate (cairo_clip_t *clip, int tx, int ty); |
- | 98 | ||
- | 99 | cairo_private cairo_clip_t * |
|
- | 100 | _cairo_clip_transform (cairo_clip_t *clip, const cairo_matrix_t *m); |
|
- | 101 | ||
85 | const cairo_matrix_t *matrix); |
102 | cairo_private cairo_clip_t * |
- | 103 | _cairo_clip_copy_with_translation (const cairo_clip_t *clip, int tx, int ty); |
|
- | 104 | ||
- | 105 | cairo_private cairo_bool_t |
|
- | 106 | _cairo_clip_equal (const cairo_clip_t *clip_a, |
|
- | 107 | const cairo_clip_t *clip_b); |
|
- | 108 | ||
- | 109 | cairo_private cairo_clip_t * |
|
- | 110 | _cairo_clip_intersect_rectangle (cairo_clip_t *clip, |
|
86 | 111 | const cairo_rectangle_int_t *rectangle); |
|
87 | cairo_private void |
112 | |
88 | _cairo_clip_reset (cairo_clip_t *clip); |
- | |
89 | 113 | cairo_private cairo_clip_t * |
|
Line 90... | Line 114... | ||
90 | cairo_private cairo_bool_t |
114 | _cairo_clip_intersect_clip (cairo_clip_t *clip, |
91 | _cairo_clip_equal (const cairo_clip_t *clip_a, |
115 | const cairo_clip_t *other); |
92 | const cairo_clip_t *clip_b); |
116 | |
- | 117 | cairo_private cairo_clip_t * |
|
- | 118 | _cairo_clip_intersect_box (cairo_clip_t *clip, |
|
- | 119 | const cairo_box_t *box); |
|
Line 93... | Line 120... | ||
93 | 120 | ||
94 | #define _cairo_clip_fini(clip) _cairo_clip_reset (clip) |
121 | cairo_private cairo_clip_t * |
Line 95... | Line 122... | ||
95 | 122 | _cairo_clip_intersect_boxes (cairo_clip_t *clip, |
|
96 | cairo_private cairo_status_t |
123 | const cairo_boxes_t *boxes); |
- | 124 | ||
- | 125 | cairo_private cairo_clip_t * |
|
- | 126 | _cairo_clip_intersect_rectilinear_path (cairo_clip_t *clip, |
|
- | 127 | const cairo_path_fixed_t *path, |
|
- | 128 | cairo_fill_rule_t fill_rule, |
|
Line 97... | Line 129... | ||
97 | _cairo_clip_rectangle (cairo_clip_t *clip, |
129 | cairo_antialias_t antialias); |
98 | const cairo_rectangle_int_t *rectangle); |
130 | |
99 | 131 | cairo_private cairo_clip_t * |
|
100 | cairo_private cairo_status_t |
132 | _cairo_clip_intersect_path (cairo_clip_t *clip, |
Line 101... | Line 133... | ||
101 | _cairo_clip_clip (cairo_clip_t *clip, |
133 | const cairo_path_fixed_t *path, |
102 | const cairo_path_fixed_t *path, |
134 | cairo_fill_rule_t fill_rule, |
103 | cairo_fill_rule_t fill_rule, |
- | |
Line 104... | Line 135... | ||
104 | double tolerance, |
135 | double tolerance, |
105 | cairo_antialias_t antialias); |
136 | cairo_antialias_t antialias); |
106 | - | ||
107 | cairo_private cairo_status_t |
- | |
Line 108... | Line 137... | ||
108 | _cairo_clip_apply_clip (cairo_clip_t *clip, |
137 | |
109 | const cairo_clip_t *other); |
138 | cairo_private const cairo_rectangle_int_t * |
- | 139 | _cairo_clip_get_extents (const cairo_clip_t *clip); |
|
- | 140 | ||
- | 141 | cairo_private cairo_surface_t * |
|
110 | 142 | _cairo_clip_get_surface (const cairo_clip_t *clip, cairo_surface_t *dst, int *tx, int *ty); |
|
- | 143 | ||
111 | cairo_private const cairo_rectangle_int_t * |
144 | cairo_private cairo_surface_t * |
- | 145 | _cairo_clip_get_image (const cairo_clip_t *clip, |
|
112 | _cairo_clip_get_extents (const cairo_clip_t *clip); |
146 | cairo_surface_t *target, |
Line 113... | Line 147... | ||
113 | 147 | const cairo_rectangle_int_t *extents); |
|
114 | cairo_private cairo_surface_t * |
148 | |
115 | _cairo_clip_get_surface (cairo_clip_t *clip, cairo_surface_t *dst, int *tx, int *ty); |
149 | cairo_private cairo_status_t |
Line 116... | Line 150... | ||
116 | 150 | _cairo_clip_combine_with_surface (const cairo_clip_t *clip, |
|
117 | cairo_private cairo_status_t |
151 | cairo_surface_t *dst, |
118 | _cairo_clip_combine_with_surface (cairo_clip_t *clip, |
152 | int dst_x, int dst_y); |
Line 119... | Line 153... | ||
119 | cairo_surface_t *dst, |
153 | |
120 | int dst_x, int dst_y); |
154 | cairo_private cairo_clip_t * |
- | 155 | _cairo_clip_from_boxes (const cairo_boxes_t *boxes); |
|
Line 121... | Line 156... | ||
121 | 156 | ||
122 | cairo_private cairo_int_status_t |
157 | cairo_private cairo_region_t * |
Line -... | Line 158... | ||
- | 158 | _cairo_clip_get_region (const cairo_clip_t *clip); |
|
- | 159 | ||
- | 160 | cairo_private cairo_bool_t |
|
- | 161 | _cairo_clip_is_region (const cairo_clip_t *clip); |
|
- | 162 | ||
- | 163 | cairo_private cairo_clip_t * |
|
- | 164 | _cairo_clip_reduce_to_rectangle (const cairo_clip_t *clip, |
|
- | 165 | const cairo_rectangle_int_t *r); |
|
- | 166 | ||
- | 167 | cairo_private cairo_clip_t * |
|
- | 168 | _cairo_clip_reduce_for_composite (const cairo_clip_t *clip, |
|
- | 169 | cairo_composite_rectangles_t *extents); |
|
123 | _cairo_clip_get_region (cairo_clip_t *clip, |
170 |