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 37... | Line 37... | ||
37 | #ifndef CAIRO_RECORDING_SURFACE_H |
37 | #ifndef CAIRO_RECORDING_SURFACE_H |
38 | #define CAIRO_RECORDING_SURFACE_H |
38 | #define CAIRO_RECORDING_SURFACE_H |
Line 39... | Line 39... | ||
39 | 39 | ||
40 | #include "cairoint.h" |
40 | #include "cairoint.h" |
41 | #include "cairo-path-fixed-private.h" |
41 | #include "cairo-path-fixed-private.h" |
- | 42 | #include "cairo-pattern-private.h" |
|
Line 42... | Line 43... | ||
42 | #include "cairo-clip-private.h" |
43 | #include "cairo-surface-backend-private.h" |
43 | 44 | ||
44 | typedef enum { |
45 | typedef enum { |
45 | /* The 5 basic drawing operations. */ |
46 | /* The 5 basic drawing operations. */ |
Line 58... | Line 59... | ||
58 | 59 | ||
59 | typedef struct _cairo_command_header { |
60 | typedef struct _cairo_command_header { |
60 | cairo_command_type_t type; |
61 | cairo_command_type_t type; |
61 | cairo_recording_region_type_t region; |
62 | cairo_recording_region_type_t region; |
- | 63 | cairo_operator_t op; |
|
62 | cairo_operator_t op; |
64 | cairo_rectangle_int_t extents; |
- | 65 | cairo_clip_t *clip; |
|
- | 66 | ||
- | 67 | int index; |
|
63 | cairo_clip_t clip; |
68 | struct _cairo_command_header *chain; |
Line 64... | Line 69... | ||
64 | } cairo_command_header_t; |
69 | } cairo_command_header_t; |
65 | 70 | ||
66 | typedef struct _cairo_command_paint { |
71 | typedef struct _cairo_command_paint { |
Line 118... | Line 123... | ||
118 | } cairo_command_t; |
123 | } cairo_command_t; |
Line 119... | Line 124... | ||
119 | 124 | ||
120 | typedef struct _cairo_recording_surface { |
125 | typedef struct _cairo_recording_surface { |
Line 121... | Line -... | ||
121 | cairo_surface_t base; |
- | |
122 | - | ||
123 | cairo_content_t content; |
126 | cairo_surface_t base; |
124 | 127 | ||
125 | /* A recording-surface is logically unbounded, but when used as a |
128 | /* A recording-surface is logically unbounded, but when used as a |
126 | * source we need to render it to an image, so we need a size at |
129 | * source we need to render it to an image, so we need a size at |
127 | * which to create that image. */ |
130 | * which to create that image. */ |
128 | cairo_rectangle_t extents_pixels; |
131 | cairo_rectangle_t extents_pixels; |
Line 129... | Line -... | ||
129 | cairo_rectangle_int_t extents; |
- | |
130 | cairo_bool_t unbounded; |
- | |
131 | 132 | cairo_rectangle_int_t extents; |
|
- | 133 | cairo_bool_t unbounded; |
|
- | 134 | ||
- | 135 | cairo_array_t commands; |
|
132 | cairo_clip_t clip; |
136 | unsigned int *indices; |
133 | 137 | unsigned int num_indices; |
|
- | 138 | cairo_bool_t optimize_clears; |
|
- | 139 | ||
- | 140 | struct bbtree { |
|
- | 141 | cairo_box_t extents; |
|
134 | cairo_array_t commands; |
142 | struct bbtree *left, *right; |
Line 135... | Line 143... | ||
135 | 143 | cairo_command_header_t *chain; |
|
Line 136... | Line 144... | ||
136 | int replay_start_idx; |
144 | } bbtree; |
137 | } cairo_recording_surface_t; |
145 | } cairo_recording_surface_t; |
138 | 146 | ||
Line 139... | Line 147... | ||
139 | slim_hidden_proto (cairo_recording_surface_create); |
147 | slim_hidden_proto (cairo_recording_surface_create); |
140 | 148 | ||
- | 149 | cairo_private cairo_int_status_t |
|
141 | cairo_private cairo_int_status_t |
150 | _cairo_recording_surface_get_path (cairo_surface_t *surface, |
Line 142... | Line -... | ||
142 | _cairo_recording_surface_get_path (cairo_surface_t *surface, |
- | |
143 | cairo_path_fixed_t *path); |
151 | cairo_path_fixed_t *path); |
144 | 152 | ||
145 | cairo_private cairo_status_t |
153 | cairo_private cairo_status_t |
Line 146... | Line 154... | ||
146 | _cairo_recording_surface_replay (cairo_surface_t *surface, |
154 | _cairo_recording_surface_replay_one (cairo_recording_surface_t *surface, |
- | 155 | long unsigned index, |
|
- | 156 | cairo_surface_t *target); |
|
- | 157 | ||
- | 158 | cairo_private cairo_status_t |
|
- | 159 | _cairo_recording_surface_replay (cairo_surface_t *surface, |
|
- | 160 | cairo_surface_t *target); |
|
147 | cairo_surface_t *target); |
161 | |
148 | 162 | cairo_private cairo_status_t |
|
149 | 163 | _cairo_recording_surface_replay_with_clip (cairo_surface_t *surface, |
|
150 | cairo_private cairo_status_t |
164 | const cairo_matrix_t *surface_transform, |
151 | _cairo_recording_surface_replay_analyze_recording_pattern (cairo_surface_t *surface, |
165 | cairo_surface_t *target, |
Line 163... | Line 177... | ||
163 | cairo_private cairo_status_t |
177 | cairo_private cairo_status_t |
164 | _cairo_recording_surface_get_bbox (cairo_recording_surface_t *recording, |
178 | _cairo_recording_surface_get_bbox (cairo_recording_surface_t *recording, |
165 | cairo_box_t *bbox, |
179 | cairo_box_t *bbox, |
166 | const cairo_matrix_t *transform); |
180 | const cairo_matrix_t *transform); |
Line 167... | Line 181... | ||
167 | 181 | ||
168 | cairo_private cairo_bool_t |
182 | cairo_private cairo_status_t |
- | 183 | _cairo_recording_surface_get_ink_bbox (cairo_recording_surface_t *surface, |
|
- | 184 | cairo_box_t *bbox, |
|
Line 169... | Line 185... | ||
169 | _cairo_surface_is_recording (const cairo_surface_t *surface); |
185 | const cairo_matrix_t *transform); |