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 34... | Line 34... | ||
34 | #define CAIRO_SPANS_UNIT_COVERAGE ((1 << CAIRO_SPANS_UNIT_COVERAGE_BITS)-1) |
34 | #define CAIRO_SPANS_UNIT_COVERAGE ((1 << CAIRO_SPANS_UNIT_COVERAGE_BITS)-1) |
Line 35... | Line 35... | ||
35 | 35 | ||
36 | /* A structure representing an open-ended horizontal span of constant |
36 | /* A structure representing an open-ended horizontal span of constant |
37 | * pixel coverage. */ |
37 | * pixel coverage. */ |
38 | typedef struct _cairo_half_open_span { |
38 | typedef struct _cairo_half_open_span { |
39 | /* The inclusive x-coordinate of the start of the span. */ |
- | |
40 | int x; |
- | |
41 | 39 | int32_t x; /* The inclusive x-coordinate of the start of the span. */ |
|
42 | /* The pixel coverage for the pixels to the right. */ |
40 | uint8_t coverage; /* The pixel coverage for the pixels to the right. */ |
43 | int coverage; |
41 | uint8_t inverse; /* between regular mask and clip */ |
Line 44... | Line 42... | ||
44 | } cairo_half_open_span_t; |
42 | } cairo_half_open_span_t; |
45 | 43 | ||
46 | /* Span renderer interface. Instances of renderers are provided by |
44 | /* Span renderer interface. Instances of renderers are provided by |
Line 71... | Line 69... | ||
71 | typedef struct _cairo_scan_converter cairo_scan_converter_t; |
69 | typedef struct _cairo_scan_converter cairo_scan_converter_t; |
72 | struct _cairo_scan_converter { |
70 | struct _cairo_scan_converter { |
73 | /* Destroy this scan converter. */ |
71 | /* Destroy this scan converter. */ |
74 | cairo_destroy_func_t destroy; |
72 | cairo_destroy_func_t destroy; |
Line 75... | Line -... | ||
75 | - | ||
76 | /* Add a single edge to the converter. */ |
- | |
77 | cairo_status_t (*add_edge) (void *abstract_converter, |
- | |
78 | const cairo_point_t *p1, |
- | |
79 | const cairo_point_t *p2, |
- | |
80 | int top, int bottom, |
- | |
81 | int dir); |
- | |
82 | - | ||
83 | /* Add a polygon (set of edges) to the converter. */ |
- | |
84 | cairo_status_t (*add_polygon) (void *abstract_converter, |
- | |
85 | const cairo_polygon_t *polygon); |
- | |
86 | 73 | ||
87 | /* Generates coverage spans for rows for the added edges and calls |
74 | /* Generates coverage spans for rows for the added edges and calls |
88 | * the renderer function for each row. After generating spans the |
75 | * the renderer function for each row. After generating spans the |
89 | * only valid thing to do with the converter is to destroy it. */ |
76 | * only valid thing to do with the converter is to destroy it. */ |
90 | cairo_status_t (*generate) (void *abstract_converter, |
77 | cairo_status_t (*generate) (void *abstract_converter, |
Line 99... | Line 86... | ||
99 | cairo_private cairo_scan_converter_t * |
86 | cairo_private cairo_scan_converter_t * |
100 | _cairo_tor_scan_converter_create (int xmin, |
87 | _cairo_tor_scan_converter_create (int xmin, |
101 | int ymin, |
88 | int ymin, |
102 | int xmax, |
89 | int xmax, |
103 | int ymax, |
90 | int ymax, |
- | 91 | cairo_fill_rule_t fill_rule, |
|
- | 92 | cairo_antialias_t antialias); |
|
- | 93 | cairo_private cairo_status_t |
|
- | 94 | _cairo_tor_scan_converter_add_polygon (void *converter, |
|
- | 95 | const cairo_polygon_t *polygon); |
|
- | 96 | ||
- | 97 | cairo_private cairo_scan_converter_t * |
|
- | 98 | _cairo_tor22_scan_converter_create (int xmin, |
|
- | 99 | int ymin, |
|
- | 100 | int xmax, |
|
- | 101 | int ymax, |
|
- | 102 | cairo_fill_rule_t fill_rule, |
|
- | 103 | cairo_antialias_t antialias); |
|
- | 104 | cairo_private cairo_status_t |
|
- | 105 | _cairo_tor22_scan_converter_add_polygon (void *converter, |
|
- | 106 | const cairo_polygon_t *polygon); |
|
- | 107 | ||
- | 108 | cairo_private cairo_scan_converter_t * |
|
- | 109 | _cairo_mono_scan_converter_create (int xmin, |
|
- | 110 | int ymin, |
|
- | 111 | int xmax, |
|
- | 112 | int ymax, |
|
104 | cairo_fill_rule_t fill_rule); |
113 | cairo_fill_rule_t fill_rule); |
- | 114 | cairo_private cairo_status_t |
|
- | 115 | _cairo_mono_scan_converter_add_polygon (void *converter, |
|
- | 116 | const cairo_polygon_t *polygon); |
|
- | 117 | ||
- | 118 | cairo_private cairo_scan_converter_t * |
|
- | 119 | _cairo_clip_tor_scan_converter_create (cairo_clip_t *clip, |
|
- | 120 | cairo_polygon_t *polygon, |
|
- | 121 | cairo_fill_rule_t fill_rule, |
|
- | 122 | cairo_antialias_t antialias); |
|
Line 105... | Line 123... | ||
105 | 123 | ||
106 | typedef struct _cairo_rectangular_scan_converter { |
124 | typedef struct _cairo_rectangular_scan_converter { |
Line 107... | Line 125... | ||
107 | cairo_scan_converter_t base; |
125 | cairo_scan_converter_t base; |
108 | - | ||
Line 109... | Line 126... | ||
109 | int xmin, xmax; |
126 | |
110 | int ymin, ymax; |
127 | cairo_box_t extents; |
111 | 128 | ||
112 | struct _cairo_rectangular_scan_converter_chunk { |
129 | struct _cairo_rectangular_scan_converter_chunk { |