Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(357)

Side by Side Diff: core/src/fxge/agg/agg23/agg_basics.h

Issue 402463002: Replace agg with skia (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@master
Patch Set: Fix clang compile error Created 6 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « core/src/fxge/agg/agg23/agg_array.h ('k') | core/src/fxge/agg/agg23/agg_clip_liang_barsky.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1
2 //----------------------------------------------------------------------------
3 // Anti-Grain Geometry - Version 2.3
4 // Copyright (C) 2002-2005 Maxim Shemanarev (http://www.antigrain.com)
5 //
6 // Permission to copy, use, modify, sell and distribute this software
7 // is granted provided this copyright notice appears in all copies.
8 // This software is provided "as is" without express or implied
9 // warranty, and with no claim as to its suitability for any purpose.
10 //
11 //----------------------------------------------------------------------------
12 // Contact: mcseem@antigrain.com
13 // mcseemagg@yahoo.com
14 // http://www.antigrain.com
15 //----------------------------------------------------------------------------
16 #ifndef AGG_BASICS_INCLUDED
17 #define AGG_BASICS_INCLUDED
18 #ifndef AGG_INT8
19 #define AGG_INT8 signed char
20 #endif
21 #ifndef AGG_INT8U
22 #define AGG_INT8U unsigned char
23 #endif
24 #ifndef AGG_INT16
25 #define AGG_INT16 short
26 #endif
27 #ifndef AGG_INT16U
28 #define AGG_INT16U unsigned short
29 #endif
30 #ifndef AGG_INT32
31 #define AGG_INT32 int
32 #endif
33 #ifndef AGG_INT32U
34 #define AGG_INT32U unsigned
35 #endif
36 #ifndef AGG_INT64
37 #define AGG_INT64 signed long long
38 #endif
39 #ifndef AGG_INT64U
40 #define AGG_INT64U unsigned long long
41 #endif
42 #define AGG_INLINE inline
43 namespace agg
44 {
45 typedef AGG_INT8 int8;
46 typedef AGG_INT8U int8u;
47 typedef AGG_INT16 int16;
48 typedef AGG_INT16U int16u;
49 typedef AGG_INT32 int32;
50 typedef AGG_INT32U int32u;
51 typedef AGG_INT64 int64;
52 typedef AGG_INT64U int64u;
53 typedef unsigned char cover_type;
54 enum cover_scale_e {
55 cover_shift = 8,
56 cover_size = 1 << cover_shift,
57 cover_mask = cover_size - 1,
58 cover_none = 0,
59 cover_full = cover_mask
60 };
61 template<class T> struct rect_base : public CFX_Object {
62 typedef rect_base<T> self_type;
63 T x1;
64 T y1;
65 T x2;
66 T y2;
67 rect_base() {}
68 rect_base(T x1_, T y1_, T x2_, T y2_) :
69 x1(x1_), y1(y1_), x2(x2_), y2(y2_) {}
70 const self_type& normalize()
71 {
72 T t;
73 if(x1 > x2) {
74 t = x1;
75 x1 = x2;
76 x2 = t;
77 }
78 if(y1 > y2) {
79 t = y1;
80 y1 = y2;
81 y2 = t;
82 }
83 return *this;
84 }
85 bool clip(const self_type& r)
86 {
87 if(x2 > r.x2) {
88 x2 = r.x2;
89 }
90 if(y2 > r.y2) {
91 y2 = r.y2;
92 }
93 if(x1 < r.x1) {
94 x1 = r.x1;
95 }
96 if(y1 < r.y1) {
97 y1 = r.y1;
98 }
99 return x1 <= x2 && y1 <= y2;
100 }
101 bool is_valid() const
102 {
103 return x1 <= x2 && y1 <= y2;
104 }
105 };
106 template<class Rect>
107 inline Rect intersect_rectangles(const Rect& r1, const Rect& r2)
108 {
109 Rect r = r1;
110 if(r.x2 > r2.x2) {
111 r.x2 = r2.x2;
112 }
113 if(r.y2 > r2.y2) {
114 r.y2 = r2.y2;
115 }
116 if(r.x1 < r2.x1) {
117 r.x1 = r2.x1;
118 }
119 if(r.y1 < r2.y1) {
120 r.y1 = r2.y1;
121 }
122 return r;
123 }
124 template<class Rect>
125 inline Rect unite_rectangles(const Rect& r1, const Rect& r2)
126 {
127 Rect r = r1;
128 if(r.x2 < r2.x2) {
129 r.x2 = r2.x2;
130 }
131 if(r.y2 < r2.y2) {
132 r.y2 = r2.y2;
133 }
134 if(r.x1 > r2.x1) {
135 r.x1 = r2.x1;
136 }
137 if(r.y1 > r2.y1) {
138 r.y1 = r2.y1;
139 }
140 return r;
141 }
142 typedef rect_base<int> rect;
143 typedef rect_base<FX_FLOAT> rect_d;
144 enum path_commands_e {
145 path_cmd_stop = 0,
146 path_cmd_move_to = 1,
147 path_cmd_line_to = 2,
148 path_cmd_curve3 = 3,
149 path_cmd_curve4 = 4,
150 path_cmd_curveN = 5,
151 path_cmd_catrom = 6,
152 path_cmd_ubspline = 7,
153 path_cmd_end_poly = 0x0F,
154 path_cmd_mask = 0x0F
155 };
156 enum path_flags_e {
157 path_flags_none = 0,
158 path_flags_ccw = 0x10,
159 path_flags_cw = 0x20,
160 path_flags_close = 0x40,
161 path_flags_jr = 0x80,
162 path_flags_mask = 0xF0
163 };
164 inline bool is_vertex(unsigned c)
165 {
166 c &= ~path_flags_jr;
167 return c >= path_cmd_move_to && c < path_cmd_end_poly;
168 }
169 inline bool is_drawing(unsigned c)
170 {
171 c &= ~path_flags_jr;
172 return c >= path_cmd_line_to && c < path_cmd_end_poly;
173 }
174 inline bool is_stop(unsigned c)
175 {
176 c &= ~path_flags_jr;
177 return c == path_cmd_stop;
178 }
179 inline bool is_move_to(unsigned c)
180 {
181 c &= ~path_flags_jr;
182 return c == path_cmd_move_to;
183 }
184 inline bool is_line_to(unsigned c)
185 {
186 c &= ~path_flags_jr;
187 return c == path_cmd_line_to;
188 }
189 inline bool is_curve(unsigned c)
190 {
191 c &= ~path_flags_jr;
192 return c == path_cmd_curve3 || c == path_cmd_curve4;
193 }
194 inline bool is_curve3(unsigned c)
195 {
196 c &= ~path_flags_jr;
197 return c == path_cmd_curve3;
198 }
199 inline bool is_curve4(unsigned c)
200 {
201 c &= ~path_flags_jr;
202 return c == path_cmd_curve4;
203 }
204 inline bool is_end_poly(unsigned c)
205 {
206 c &= ~path_flags_jr;
207 return (c & path_cmd_mask) == path_cmd_end_poly;
208 }
209 inline bool is_close(unsigned c)
210 {
211 c &= ~path_flags_jr;
212 return (c & ~(path_flags_cw | path_flags_ccw)) ==
213 (path_cmd_end_poly | path_flags_close);
214 }
215 inline bool is_next_poly(unsigned c)
216 {
217 c &= ~path_flags_jr;
218 return is_stop(c) || is_move_to(c) || is_end_poly(c);
219 }
220 inline bool is_cw(unsigned c)
221 {
222 c &= ~path_flags_jr;
223 return (c & path_flags_cw) != 0;
224 }
225 inline bool is_ccw(unsigned c)
226 {
227 c &= ~path_flags_jr;
228 return (c & path_flags_ccw) != 0;
229 }
230 inline bool is_oriented(unsigned c)
231 {
232 c &= ~path_flags_jr;
233 return (c & (path_flags_cw | path_flags_ccw)) != 0;
234 }
235 inline bool is_closed(unsigned c)
236 {
237 c &= ~path_flags_jr;
238 return (c & path_flags_close) != 0;
239 }
240 inline unsigned get_close_flag(unsigned c)
241 {
242 c &= ~path_flags_jr;
243 return c & path_flags_close;
244 }
245 inline unsigned clear_orientation(unsigned c)
246 {
247 c &= ~path_flags_jr;
248 return c & ~(path_flags_cw | path_flags_ccw);
249 }
250 inline unsigned get_orientation(unsigned c)
251 {
252 c &= ~path_flags_jr;
253 return c & (path_flags_cw | path_flags_ccw);
254 }
255 inline unsigned set_orientation(unsigned c, unsigned o)
256 {
257 c &= ~path_flags_jr;
258 return clear_orientation(c) | o;
259 }
260 struct point_type : public CFX_Object {
261 FX_FLOAT x, y;
262 unsigned flag;
263 point_type() {}
264 point_type(FX_FLOAT x_, FX_FLOAT y_, unsigned flag_ = 0) : x(x_), y(y_), fla g(flag_) {}
265 };
266 struct point_type_flag : public point_type {
267 unsigned flag;
268 point_type_flag()
269 {
270 flag = 0;
271 }
272 point_type_flag(FX_FLOAT x_, FX_FLOAT y_, unsigned flag_ = 0) : point_type(x _, y_), flag(flag_) {}
273 };
274 struct vertex_type : public CFX_Object {
275 FX_FLOAT x, y;
276 unsigned cmd;
277 vertex_type() {}
278 vertex_type(FX_FLOAT x_, FX_FLOAT y_, unsigned cmd_) :
279 x(x_), y(y_), cmd(cmd_) {}
280 };
281 }
282 #endif
OLDNEW
« no previous file with comments | « core/src/fxge/agg/agg23/agg_array.h ('k') | core/src/fxge/agg/agg23/agg_clip_liang_barsky.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698