OLD | NEW |
1 /* | 1 /* |
2 * Copyright 2013 Google Inc. | 2 * Copyright 2013 Google Inc. |
3 * | 3 * |
4 * Use of this source code is governed by a BSD-style license that can be | 4 * Use of this source code is governed by a BSD-style license that can be |
5 * found in the LICENSE file. | 5 * found in the LICENSE file. |
6 */ | 6 */ |
7 #ifndef SkPathOpsDebug_DEFINED | 7 #ifndef SkPathOpsDebug_DEFINED |
8 #define SkPathOpsDebug_DEFINED | 8 #define SkPathOpsDebug_DEFINED |
9 | 9 |
10 #include "SkPathOps.h" | 10 #include "SkPathOps.h" |
11 #include "SkTypes.h" | 11 #include "SkTypes.h" |
12 #include <stdio.h> | 12 #include <stdio.h> |
13 | 13 |
14 #ifdef SK_RELEASE | 14 #ifdef SK_RELEASE |
15 #define FORCE_RELEASE 1 | 15 #define FORCE_RELEASE 1 |
16 #else | 16 #else |
17 #define FORCE_RELEASE 1 // set force release to 1 for multiple thread -- no deb
ugging | 17 #define FORCE_RELEASE 1 // set force release to 1 for multiple thread -- no debu
gging |
18 #endif | 18 #endif |
19 | 19 |
20 #define ONE_OFF_DEBUG 0 | 20 #define ONE_OFF_DEBUG 0 |
21 #define ONE_OFF_DEBUG_MATHEMATICA 0 | 21 #define ONE_OFF_DEBUG_MATHEMATICA 0 |
22 | 22 |
23 #if defined(SK_BUILD_FOR_WIN) || defined(SK_BUILD_FOR_ANDROID) | 23 #if defined(SK_BUILD_FOR_WIN) || defined(SK_BUILD_FOR_ANDROID) |
24 #define SK_RAND(seed) rand() | 24 #define SK_RAND(seed) rand() |
25 #else | 25 #else |
26 #define SK_RAND(seed) rand_r(&seed) | 26 #define SK_RAND(seed) rand_r(&seed) |
27 #endif | 27 #endif |
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
77 #define DEBUG_SWAP_TOP 1 | 77 #define DEBUG_SWAP_TOP 1 |
78 #define DEBUG_T_SECT 1 | 78 #define DEBUG_T_SECT 1 |
79 #define DEBUG_T_SECT_DUMP 02 | 79 #define DEBUG_T_SECT_DUMP 02 |
80 #define DEBUG_VALIDATE 1 | 80 #define DEBUG_VALIDATE 1 |
81 #define DEBUG_WINDING 1 | 81 #define DEBUG_WINDING 1 |
82 #define DEBUG_WINDING_AT_T 1 | 82 #define DEBUG_WINDING_AT_T 1 |
83 | 83 |
84 #endif | 84 #endif |
85 | 85 |
86 #ifdef SK_RELEASE | 86 #ifdef SK_RELEASE |
87 #define PATH_OPS_DEBUG_RELEASE(a, b) b | 87 #define SkDEBUGRELEASE(a, b) b |
88 #define PATH_OPS_DEBUG_CODE(...) | 88 #define SkDEBUGPARAMS(...) |
89 #define PATH_OPS_DEBUG_PARAMS(...) | 89 #define SkDEBUGCODE_(...) |
90 #else | 90 #else |
91 #define PATH_OPS_DEBUG_RELEASE(a, b) a | 91 #define SkDEBUGRELEASE(a, b) a |
92 #define PATH_OPS_DEBUG_CODE(...) __VA_ARGS__ | 92 #define SkDEBUGPARAMS(...) , __VA_ARGS__ |
93 #define PATH_OPS_DEBUG_PARAMS(...) , __VA_ARGS__ | 93 #define SkDEBUGCODE_(...) __VA_ARGS__ // temporary until SkDEBUGCODE is fix
ed |
94 #endif | 94 #endif |
95 | 95 |
96 #if DEBUG_T_SECT == 0 | 96 #if DEBUG_T_SECT == 0 |
97 #define PATH_OPS_DEBUG_T_SECT_RELEASE(a, b) b | 97 #define PATH_OPS_DEBUG_T_SECT_RELEASE(a, b) b |
98 #define PATH_OPS_DEBUG_T_SECT_PARAMS(...) | 98 #define PATH_OPS_DEBUG_T_SECT_PARAMS(...) |
99 #define PATH_OPS_DEBUG_T_SECT_CODE(...) | 99 #define PATH_OPS_DEBUG_T_SECT_CODE(...) |
100 #else | 100 #else |
101 #define PATH_OPS_DEBUG_T_SECT_RELEASE(a, b) a | 101 #define PATH_OPS_DEBUG_T_SECT_RELEASE(a, b) a |
102 #define PATH_OPS_DEBUG_T_SECT_PARAMS(...) , __VA_ARGS__ | 102 #define PATH_OPS_DEBUG_T_SECT_PARAMS(...) , __VA_ARGS__ |
103 #define PATH_OPS_DEBUG_T_SECT_CODE(...) __VA_ARGS__ | 103 #define PATH_OPS_DEBUG_T_SECT_CODE(...) __VA_ARGS__ |
104 #endif | 104 #endif |
105 | 105 |
106 #if DEBUG_T_SECT_DUMP > 1 | 106 #if DEBUG_T_SECT_DUMP > 1 |
107 extern int gDumpTSectNum; | 107 extern int gDumpTSectNum; |
108 #endif | 108 #endif |
109 | 109 |
110 #define CUBIC_DEBUG_STR "{{{%1.9g,%1.9g}, {%1.9g,%1.9g}, {%1.9g,%1.9g}, {%1.9g,%
1.9g}}}" | 110 #define CUBIC_DEBUG_STR "{{{%1.9g,%1.9g}, {%1.9g,%1.9g}, {%1.9g,%1.9g}, {%1.9g,
%1.9g}}}" |
111 #define QUAD_DEBUG_STR "{{{%1.9g,%1.9g}, {%1.9g,%1.9g}, {%1.9g,%1.9g}}}" | 111 #define CONIC_DEBUG_STR "{{{{%1.9g,%1.9g}, {%1.9g,%1.9g}, {%1.9g,%1.9g}}}, %1.9g
}" |
112 #define LINE_DEBUG_STR "{{{%1.9g,%1.9g}, {%1.9g,%1.9g}}}" | 112 #define QUAD_DEBUG_STR "{{{%1.9g,%1.9g}, {%1.9g,%1.9g}, {%1.9g,%1.9g}}}" |
| 113 #define LINE_DEBUG_STR "{{{%1.9g,%1.9g}, {%1.9g,%1.9g}}}" |
113 #define PT_DEBUG_STR "{{%1.9g,%1.9g}}" | 114 #define PT_DEBUG_STR "{{%1.9g,%1.9g}}" |
114 | 115 |
115 #define T_DEBUG_STR(t, n) #t "[" #n "]=%1.9g" | 116 #define T_DEBUG_STR(t, n) #t "[" #n "]=%1.9g" |
116 #define TX_DEBUG_STR(t) #t "[%d]=%1.9g" | 117 #define TX_DEBUG_STR(t) #t "[%d]=%1.9g" |
117 #define CUBIC_DEBUG_DATA(c) c[0].fX, c[0].fY, c[1].fX, c[1].fY, c[2].fX, c[2].fY
, c[3].fX, c[3].fY | 118 #define CUBIC_DEBUG_DATA(c) c[0].fX, c[0].fY, c[1].fX, c[1].fY, c[2].fX, c[2].fY
, c[3].fX, c[3].fY |
| 119 #define CONIC_DEBUG_DATA(c, w) c[0].fX, c[0].fY, c[1].fX, c[1].fY, c[2].fX, c[2]
.fY, w |
118 #define QUAD_DEBUG_DATA(q) q[0].fX, q[0].fY, q[1].fX, q[1].fY, q[2].fX, q[2].fY | 120 #define QUAD_DEBUG_DATA(q) q[0].fX, q[0].fY, q[1].fX, q[1].fY, q[2].fX, q[2].fY |
119 #define LINE_DEBUG_DATA(l) l[0].fX, l[0].fY, l[1].fX, l[1].fY | 121 #define LINE_DEBUG_DATA(l) l[0].fX, l[0].fY, l[1].fX, l[1].fY |
120 #define PT_DEBUG_DATA(i, n) i.pt(n).asSkPoint().fX, i.pt(n).asSkPoint().fY | 122 #define PT_DEBUG_DATA(i, n) i.pt(n).asSkPoint().fX, i.pt(n).asSkPoint().fY |
121 | 123 |
122 #ifndef DEBUG_TEST | 124 #ifndef DEBUG_TEST |
123 #define DEBUG_TEST 0 | 125 #define DEBUG_TEST 0 |
124 #endif | 126 #endif |
125 | 127 |
126 #if DEBUG_SHOW_TEST_NAME | 128 #if DEBUG_SHOW_TEST_NAME |
127 #include "SkTLS.h" | 129 #include "SkTLS.h" |
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
197 static void DumpContours(SkTDArray<class SkOpContour* >* contours); | 199 static void DumpContours(SkTDArray<class SkOpContour* >* contours); |
198 static void DumpContoursAll(SkTDArray<class SkOpContour* >* contours); | 200 static void DumpContoursAll(SkTDArray<class SkOpContour* >* contours); |
199 static void DumpContoursAngles(const SkTDArray<class SkOpContour* >* contour
s); | 201 static void DumpContoursAngles(const SkTDArray<class SkOpContour* >* contour
s); |
200 static void DumpContoursPt(const SkTDArray<class SkOpContour* >* contours, i
nt id); | 202 static void DumpContoursPt(const SkTDArray<class SkOpContour* >* contours, i
nt id); |
201 static void DumpContoursPts(const SkTDArray<class SkOpContour* >* contours); | 203 static void DumpContoursPts(const SkTDArray<class SkOpContour* >* contours); |
202 static void DumpContoursSegment(const SkTDArray<class SkOpContour* >* contou
rs, int id); | 204 static void DumpContoursSegment(const SkTDArray<class SkOpContour* >* contou
rs, int id); |
203 static void DumpContoursSpan(const SkTDArray<class SkOpContour* >* contours,
int id); | 205 static void DumpContoursSpan(const SkTDArray<class SkOpContour* >* contours,
int id); |
204 static void DumpContoursSpans(const SkTDArray<class SkOpContour* >* contours
); | 206 static void DumpContoursSpans(const SkTDArray<class SkOpContour* >* contours
); |
205 }; | 207 }; |
206 | 208 |
207 // shorthand for calling from debugger | |
208 template<typename TCurve> class SkTSect; | |
209 template<typename TCurve> class SkTSpan; | |
210 | |
211 struct SkDQuad; | 209 struct SkDQuad; |
212 struct SkDCubic; | |
213 | |
214 const SkTSpan<SkDCubic>* DebugSpan(const SkTSect<SkDCubic>* , int id); | |
215 const SkTSpan<SkDQuad>* DebugSpan(const SkTSect<SkDQuad>* , int id); | |
216 const SkTSpan<SkDCubic>* DebugT(const SkTSect<SkDCubic>* , double t); | |
217 const SkTSpan<SkDQuad>* DebugT(const SkTSect<SkDQuad>* , double t); | |
218 | |
219 const SkTSpan<SkDCubic>* DebugSpan(const SkTSpan<SkDCubic>* , int id); | |
220 const SkTSpan<SkDQuad>* DebugSpan(const SkTSpan<SkDQuad>* , int id); | |
221 const SkTSpan<SkDCubic>* DebugT(const SkTSpan<SkDCubic>* , double t); | |
222 const SkTSpan<SkDQuad>* DebugT(const SkTSpan<SkDQuad>* , double t); | |
223 | |
224 void Dump(const SkTSect<SkDCubic>* ); | |
225 void Dump(const SkTSect<SkDQuad>* ); | |
226 void Dump(const SkTSpan<SkDCubic>* , const SkTSect<SkDCubic>* = NULL); | |
227 void Dump(const SkTSpan<SkDQuad>* , const SkTSect<SkDQuad>* = NULL); | |
228 void DumpBoth(SkTSect<SkDCubic>* sect1, SkTSect<SkDCubic>* sect2); | |
229 void DumpBoth(SkTSect<SkDQuad>* sect1, SkTSect<SkDQuad>* sect2); | |
230 void DumpCoin(SkTSect<SkDCubic>* sect1); | |
231 void DumpCoin(SkTSect<SkDQuad>* sect1); | |
232 void DumpCoinCurves(SkTSect<SkDCubic>* sect1); | |
233 void DumpCoinCurves(SkTSect<SkDQuad>* sect1); | |
234 void DumpCurves(const SkTSpan<SkDCubic>* ); | |
235 void DumpCurves(const SkTSpan<SkDQuad>* ); | |
236 | 210 |
237 // generates tools/path_sorter.htm and path_visualizer.htm compatible data | 211 // generates tools/path_sorter.htm and path_visualizer.htm compatible data |
238 void DumpQ(const SkDQuad& quad1, const SkDQuad& quad2, int testNo); | 212 void DumpQ(const SkDQuad& quad1, const SkDQuad& quad2, int testNo); |
239 void DumpT(const SkDQuad& quad, double t); | 213 void DumpT(const SkDQuad& quad, double t); |
240 | 214 |
241 const struct SkOpAngle* DebugAngle(const SkTDArray<class SkOpContour* >* contour
s, int id); | 215 const struct SkOpAngle* DebugAngle(const SkTDArray<class SkOpContour* >* contour
s, int id); |
242 class SkOpContour* DebugContour(const SkTDArray<class SkOpContour* >* contours,
int id); | 216 class SkOpContour* DebugContour(const SkTDArray<class SkOpContour* >* contours,
int id); |
243 const class SkOpPtT* DebugPtT(const SkTDArray<class SkOpContour* >* contours, in
t id); | 217 const class SkOpPtT* DebugPtT(const SkTDArray<class SkOpContour* >* contours, in
t id); |
244 const class SkOpSegment* DebugSegment(const SkTDArray<class SkOpContour* >* cont
ours, int id); | 218 const class SkOpSegment* DebugSegment(const SkTDArray<class SkOpContour* >* cont
ours, int id); |
245 const class SkOpSpanBase* DebugSpan(const SkTDArray<class SkOpContour* >* contou
rs, int id); | 219 const class SkOpSpanBase* DebugSpan(const SkTDArray<class SkOpContour* >* contou
rs, int id); |
246 | 220 |
247 void Dump(const SkTDArray<class SkOpContour* >* contours); | 221 void Dump(const SkTDArray<class SkOpContour* >* contours); |
248 void DumpAll(SkTDArray<class SkOpContour* >* contours); | 222 void DumpAll(SkTDArray<class SkOpContour* >* contours); |
249 void DumpAngles(const SkTDArray<class SkOpContour* >* contours); | 223 void DumpAngles(const SkTDArray<class SkOpContour* >* contours); |
250 void DumpCoin(const SkTDArray<class SkOpContour* >* contours); | 224 void DumpCoin(const SkTDArray<class SkOpContour* >* contours); |
251 void DumpPt(const SkTDArray<class SkOpContour* >* contours, int segmentID); | 225 void DumpPt(const SkTDArray<class SkOpContour* >* contours, int segmentID); |
252 void DumpPts(const SkTDArray<class SkOpContour* >* contours); | 226 void DumpPts(const SkTDArray<class SkOpContour* >* contours); |
253 void DumpSegment(const SkTDArray<class SkOpContour* >* contours, int segmentID); | 227 void DumpSegment(const SkTDArray<class SkOpContour* >* contours, int segmentID); |
254 void DumpSpan(const SkTDArray<class SkOpContour* >* contours, int spanID); | 228 void DumpSpan(const SkTDArray<class SkOpContour* >* contours, int spanID); |
255 void DumpSpans(const SkTDArray<class SkOpContour* >* contours); | 229 void DumpSpans(const SkTDArray<class SkOpContour* >* contours); |
256 #endif | 230 #endif |
OLD | NEW |