2
2
// Anti-Grain Geometry - Version 2.4
3
3
// Copyright (C) 2002-2005 Maxim Shemanarev (http://www.antigrain.com)
4
4
//
5
- // Permission to copy, use, modify, sell and distribute this software
6
- // is granted provided this copyright notice appears in all copies.
5
+ // Permission to copy, use, modify, sell and distribute this software
6
+ // is granted provided this copyright notice appears in all copies.
7
7
// This software is provided "as is" without express or implied
8
8
// warranty, and with no claim as to its suitability for any purpose.
9
9
//
@@ -29,20 +29,20 @@ namespace agg
29
29
30
30
31
31
// ------------------------------------------------------------------------
32
- void curve3_inc::approximation_scale (double s)
33
- {
32
+ void curve3_inc::approximation_scale (double s)
33
+ {
34
34
m_scale = s;
35
35
}
36
36
37
37
// ------------------------------------------------------------------------
38
- double curve3_inc::approximation_scale () const
39
- {
38
+ double curve3_inc::approximation_scale () const
39
+ {
40
40
return m_scale;
41
41
}
42
42
43
43
// ------------------------------------------------------------------------
44
- void curve3_inc::init (double x1, double y1,
45
- double x2, double y2,
44
+ void curve3_inc::init (double x1, double y1,
45
+ double x2, double y2,
46
46
double x3, double y3)
47
47
{
48
48
m_start_x = x1;
@@ -55,13 +55,13 @@ namespace agg
55
55
double dx2 = x3 - x2;
56
56
double dy2 = y3 - y2;
57
57
58
- double len = sqrt (dx1 * dx1 + dy1 * dy1) + sqrt (dx2 * dx2 + dy2 * dy2);
58
+ double len = sqrt (dx1 * dx1 + dy1 * dy1) + sqrt (dx2 * dx2 + dy2 * dy2);
59
59
60
60
m_num_steps = uround (len * 0.25 * m_scale);
61
61
62
62
if (m_num_steps < 4 )
63
63
{
64
- m_num_steps = 4 ;
64
+ m_num_steps = 4 ;
65
65
}
66
66
67
67
double subdivide_step = 1.0 / m_num_steps;
@@ -72,7 +72,7 @@ namespace agg
72
72
73
73
m_saved_fx = m_fx = x1;
74
74
m_saved_fy = m_fy = y1 ;
75
-
75
+
76
76
m_saved_dfx = m_dfx = tmpx + (x2 - x1) * (2.0 * subdivide_step);
77
77
m_saved_dfy = m_dfy = tmpy + (y2 - y1 ) * (2.0 * subdivide_step);
78
78
@@ -115,19 +115,19 @@ namespace agg
115
115
--m_step;
116
116
return path_cmd_line_to;
117
117
}
118
- m_fx += m_dfx;
118
+ m_fx += m_dfx;
119
119
m_fy += m_dfy;
120
- m_dfx += m_ddfx;
121
- m_dfy += m_ddfy;
120
+ m_dfx += m_ddfx;
121
+ m_dfy += m_ddfy;
122
122
*x = m_fx;
123
123
*y = m_fy;
124
124
--m_step;
125
125
return path_cmd_line_to;
126
126
}
127
127
128
128
// ------------------------------------------------------------------------
129
- void curve3_div::init (double x1, double y1,
130
- double x2, double y2,
129
+ void curve3_div::init (double x1, double y1,
130
+ double x2, double y2,
131
131
double x3, double y3)
132
132
{
133
133
m_points.remove_all ();
@@ -138,19 +138,19 @@ namespace agg
138
138
}
139
139
140
140
// ------------------------------------------------------------------------
141
- void curve3_div::recursive_bezier (double x1, double y1,
142
- double x2, double y2,
141
+ void curve3_div::recursive_bezier (double x1, double y1,
142
+ double x2, double y2,
143
143
double x3, double y3,
144
144
unsigned level)
145
145
{
146
- if (level > curve_recursion_limit)
146
+ if (level > curve_recursion_limit)
147
147
{
148
148
return ;
149
149
}
150
150
151
151
// Calculate all the mid-points of the line segments
152
152
// ----------------------
153
- double x12 = (x1 + x2) / 2 ;
153
+ double x12 = (x1 + x2) / 2 ;
154
154
double y12 = (y1 + y2) / 2 ;
155
155
double x23 = (x2 + x3) / 2 ;
156
156
double y23 = (y2 + y3) / 2 ;
@@ -163,7 +163,7 @@ namespace agg
163
163
double da;
164
164
165
165
if (d > curve_collinearity_epsilon)
166
- {
166
+ {
167
167
// Regular case
168
168
// -----------------
169
169
if (d * d <= m_distance_tolerance_square * (dx*dx + dy*dy))
@@ -187,7 +187,7 @@ namespace agg
187
187
// Finally we can stop the recursion
188
188
// ----------------------
189
189
m_points.add (point_d (x123, y123));
190
- return ;
190
+ return ;
191
191
}
192
192
}
193
193
}
@@ -222,13 +222,13 @@ namespace agg
222
222
223
223
// Continue subdivision
224
224
// ----------------------
225
- recursive_bezier (x1, y1 , x12, y12, x123, y123, level + 1 );
226
- recursive_bezier (x123, y123, x23, y23, x3, y3, level + 1 );
225
+ recursive_bezier (x1, y1 , x12, y12, x123, y123, level + 1 );
226
+ recursive_bezier (x123, y123, x23, y23, x3, y3, level + 1 );
227
227
}
228
228
229
229
// ------------------------------------------------------------------------
230
- void curve3_div::bezier (double x1, double y1,
231
- double x2, double y2,
230
+ void curve3_div::bezier (double x1, double y1,
231
+ double x2, double y2,
232
232
double x3, double y3)
233
233
{
234
234
m_points.add (point_d (x1, y1 ));
@@ -241,23 +241,25 @@ namespace agg
241
241
242
242
243
243
// ------------------------------------------------------------------------
244
- void curve4_inc::approximation_scale (double s)
245
- {
244
+ void curve4_inc::approximation_scale (double s)
245
+ {
246
246
m_scale = s;
247
247
}
248
248
249
249
// ------------------------------------------------------------------------
250
- double curve4_inc::approximation_scale () const
251
- {
250
+ double curve4_inc::approximation_scale () const
251
+ {
252
252
return m_scale;
253
253
}
254
254
255
255
// ------------------------------------------------------------------------
256
+ #if defined(_MSC_VER) && _MSC_VER <= 1200
256
257
static double MSC60_fix_ICE (double v) { return v; }
258
+ #endif
257
259
258
260
// ------------------------------------------------------------------------
259
- void curve4_inc::init (double x1, double y1,
260
- double x2, double y2,
261
+ void curve4_inc::init (double x1, double y1,
262
+ double x2, double y2,
261
263
double x3, double y3,
262
264
double x4, double y4)
263
265
{
@@ -273,8 +275,8 @@ namespace agg
273
275
double dx3 = x4 - x3;
274
276
double dy3 = y4 - y3;
275
277
276
- double len = (sqrt (dx1 * dx1 + dy1 * dy1) +
277
- sqrt (dx2 * dx2 + dy2 * dy2) +
278
+ double len = (sqrt (dx1 * dx1 + dy1 * dy1) +
279
+ sqrt (dx2 * dx2 + dy2 * dy2) +
278
280
sqrt (dx3 * dx3 + dy3 * dy3)) * 0.25 * m_scale;
279
281
280
282
#if defined(_MSC_VER) && _MSC_VER <= 1200
@@ -285,7 +287,7 @@ namespace agg
285
287
286
288
if (m_num_steps < 4 )
287
289
{
288
- m_num_steps = 4 ;
290
+ m_num_steps = 4 ;
289
291
}
290
292
291
293
double subdivide_step = 1.0 / m_num_steps;
@@ -296,7 +298,7 @@ namespace agg
296
298
double pre2 = 3.0 * subdivide_step2;
297
299
double pre4 = 6.0 * subdivide_step2;
298
300
double pre5 = 6.0 * subdivide_step3;
299
-
301
+
300
302
double tmp1x = x1 - x2 * 2.0 + x3;
301
303
double tmp1y = y1 - y2 * 2.0 + y3;
302
304
@@ -357,10 +359,10 @@ namespace agg
357
359
358
360
m_fx += m_dfx;
359
361
m_fy += m_dfy;
360
- m_dfx += m_ddfx;
361
- m_dfy += m_ddfy;
362
- m_ddfx += m_dddfx;
363
- m_ddfy += m_dddfy;
362
+ m_dfx += m_ddfx;
363
+ m_dfy += m_ddfy;
364
+ m_ddfx += m_dddfx;
365
+ m_ddfy += m_dddfy;
364
366
365
367
*x = m_fx;
366
368
*y = m_fy;
@@ -372,8 +374,8 @@ namespace agg
372
374
373
375
374
376
// ------------------------------------------------------------------------
375
- void curve4_div::init (double x1, double y1,
376
- double x2, double y2,
377
+ void curve4_div::init (double x1, double y1,
378
+ double x2, double y2,
377
379
double x3, double y3,
378
380
double x4, double y4)
379
381
{
@@ -385,13 +387,13 @@ namespace agg
385
387
}
386
388
387
389
// ------------------------------------------------------------------------
388
- void curve4_div::recursive_bezier (double x1, double y1,
389
- double x2, double y2,
390
- double x3, double y3,
390
+ void curve4_div::recursive_bezier (double x1, double y1,
391
+ double x2, double y2,
392
+ double x3, double y3,
391
393
double x4, double y4,
392
394
unsigned level)
393
395
{
394
- if (level > curve_recursion_limit)
396
+ if (level > curve_recursion_limit)
395
397
{
396
398
return ;
397
399
}
@@ -542,7 +544,7 @@ namespace agg
542
544
}
543
545
break ;
544
546
545
- case 3 :
547
+ case 3 :
546
548
// Regular case
547
549
// -----------------
548
550
if ((d2 + d3)*(d2 + d3) <= m_distance_tolerance_square * (dx*dx + dy*dy))
@@ -592,14 +594,14 @@ namespace agg
592
594
593
595
// Continue subdivision
594
596
// ----------------------
595
- recursive_bezier (x1, y1 , x12, y12, x123, y123, x1234, y1234, level + 1 );
596
- recursive_bezier (x1234, y1234, x234, y234, x34, y34, x4, y4, level + 1 );
597
+ recursive_bezier (x1, y1 , x12, y12, x123, y123, x1234, y1234, level + 1 );
598
+ recursive_bezier (x1234, y1234, x234, y234, x34, y34, x4, y4, level + 1 );
597
599
}
598
600
599
601
// ------------------------------------------------------------------------
600
- void curve4_div::bezier (double x1, double y1,
601
- double x2, double y2,
602
- double x3, double y3,
602
+ void curve4_div::bezier (double x1, double y1,
603
+ double x2, double y2,
604
+ double x3, double y3,
603
605
double x4, double y4)
604
606
{
605
607
m_points.add (point_d (x1, y1 ));
0 commit comments