107393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com/*
207393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com * Copyright 2013 Google Inc.
307393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com *
407393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com * Use of this source code is governed by a BSD-style license that can be
507393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com * found in the LICENSE file.
607393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com */
707393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com#ifndef SkPathOpsDebug_DEFINED
807393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com#define SkPathOpsDebug_DEFINED
907393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com
10a5e55925ea03e76885804bda77408a1d6f04c335caryclark@google.com#include "SkPathOps.h"
1107393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com#include "SkTypes.h"
12fab44db294846ff05d837b9cf0bf97a073891da7bungeman@google.com#include <stdio.h>
1307393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com
1407393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com#ifdef SK_RELEASE
1507393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com#define FORCE_RELEASE 1
1607393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com#else
17b3f0921fba9457ba7ea79f220d8c1ec9345bfd3acaryclark@google.com#define FORCE_RELEASE 1  // set force release to 1 for multiple thread -- no debugging
1807393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com#endif
1907393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com
2007393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com#define ONE_OFF_DEBUG 0
2107393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com#define ONE_OFF_DEBUG_MATHEMATICA 0
2207393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com
23db60de7cbe3ea9643a0471e1225a6abeac021de3caryclark@google.com#if defined(SK_BUILD_FOR_WIN) || defined(SK_BUILD_FOR_ANDROID)
2407393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com    #define SK_RAND(seed) rand()
2507393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com#else
2607393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com    #define SK_RAND(seed) rand_r(&seed)
27db60de7cbe3ea9643a0471e1225a6abeac021de3caryclark@google.com#endif
28db60de7cbe3ea9643a0471e1225a6abeac021de3caryclark@google.com#ifdef SK_BUILD_FOR_WIN
29db60de7cbe3ea9643a0471e1225a6abeac021de3caryclark@google.com    #define SK_SNPRINTF _snprintf
30db60de7cbe3ea9643a0471e1225a6abeac021de3caryclark@google.com#else
313284017a60ea4fc3dc5b95838ba0c301ee1e4e8dskia.committer@gmail.com    #define SK_SNPRINTF snprintf
3207393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com#endif
3307393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com
344431e7757cfcb8cfa99535eed0e9f156dabf95c2commit-bot@chromium.org#define WIND_AS_STRING(x) char x##Str[12]; \
354431e7757cfcb8cfa99535eed0e9f156dabf95c2commit-bot@chromium.org        if (!SkPathOpsDebug::ValidWind(x)) strcpy(x##Str, "?"); \
364431e7757cfcb8cfa99535eed0e9f156dabf95c2commit-bot@chromium.org        else SK_SNPRINTF(x##Str, sizeof(x##Str), "%d", x)
374431e7757cfcb8cfa99535eed0e9f156dabf95c2commit-bot@chromium.org
3807393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com#if FORCE_RELEASE
3907393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com
4007393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com#define DEBUG_ACTIVE_OP 0
4107393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com#define DEBUG_ACTIVE_SPANS 0
42a5e55925ea03e76885804bda77408a1d6f04c335caryclark@google.com#define DEBUG_ACTIVE_SPANS_FIRST_ONLY 0
43a5e55925ea03e76885804bda77408a1d6f04c335caryclark@google.com#define DEBUG_ACTIVE_SPANS_SHORT_FORM 1
4407393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com#define DEBUG_ADD_INTERSECTING_TS 0
4507393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com#define DEBUG_ADD_T_PAIR 0
4607393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com#define DEBUG_ANGLE 0
4707393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com#define DEBUG_AS_C_CODE 1
4807393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com#define DEBUG_ASSEMBLE 0
49570863f2e22b8ea7d7c504bd15e4f766af097df2caryclark@google.com#define DEBUG_CHECK_ENDS 0
50570863f2e22b8ea7d7c504bd15e4f766af097df2caryclark@google.com#define DEBUG_CHECK_TINY 0
5107393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com#define DEBUG_CONCIDENT 0
5207393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com#define DEBUG_CROSS 0
532db7fe7d3b7ee875e1099a22f0af17520696f5d7commit-bot@chromium.org#define DEBUG_CUBIC_BINARY_SEARCH 0
54dac1d17027dcaa5596885a9f333979418b35001ccaryclark#define DEBUG_DUPLICATES 0
5507393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com#define DEBUG_FLAT_QUADS 0
5607393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com#define DEBUG_FLOW 0
578cb1daaa1e4343eb60a7c4f21c12e33de30dad64commit-bot@chromium.org#define DEBUG_LIMIT_WIND_SUM 0
5807393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com#define DEBUG_MARK_DONE 0
5907393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com#define DEBUG_PATH_CONSTRUCTION 0
600361032c0b53401030a720bc8b4930c3ec59f19ecaryclark@google.com#define DEBUG_SHOW_TEST_NAME 0
6107393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com#define DEBUG_SHOW_TEST_PROGRESS 0
6207393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com#define DEBUG_SHOW_WINDING 0
6307393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com#define DEBUG_SORT 0
64cffbcc3b9665f2c928544b6fc6b8a0e22a4210fbcaryclark@google.com#define DEBUG_SORT_COMPACT 0
65570863f2e22b8ea7d7c504bd15e4f766af097df2caryclark@google.com#define DEBUG_SORT_RAW 0
66a5e55925ea03e76885804bda77408a1d6f04c335caryclark@google.com#define DEBUG_SORT_SINGLE 0
6707393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com#define DEBUG_SWAP_TOP 0
6807393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com#define DEBUG_UNSORTABLE 0
694fdbb229649caf74e5c1b55a1823926df903af34caryclark@google.com#define DEBUG_VALIDATE 0
7007393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com#define DEBUG_WIND_BUMP 0
7107393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com#define DEBUG_WINDING 0
7207393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com#define DEBUG_WINDING_AT_T 0
7307393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com
7407393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com#else
7507393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com
7607393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com#define DEBUG_ACTIVE_OP 1
7707393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com#define DEBUG_ACTIVE_SPANS 1
78a5e55925ea03e76885804bda77408a1d6f04c335caryclark@google.com#define DEBUG_ACTIVE_SPANS_FIRST_ONLY 0
79cffbcc3b9665f2c928544b6fc6b8a0e22a4210fbcaryclark@google.com#define DEBUG_ACTIVE_SPANS_SHORT_FORM 1
8007393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com#define DEBUG_ADD_INTERSECTING_TS 1
8107393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com#define DEBUG_ADD_T_PAIR 1
8207393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com#define DEBUG_ANGLE 1
8307393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com#define DEBUG_AS_C_CODE 1
8407393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com#define DEBUG_ASSEMBLE 1
85570863f2e22b8ea7d7c504bd15e4f766af097df2caryclark@google.com#define DEBUG_CHECK_ENDS 1
86570863f2e22b8ea7d7c504bd15e4f766af097df2caryclark@google.com#define DEBUG_CHECK_TINY 1
8707393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com#define DEBUG_CONCIDENT 1
88570863f2e22b8ea7d7c504bd15e4f766af097df2caryclark@google.com#define DEBUG_CROSS 01
8965b427cff9cd34a06ff060d65d00cc3615d8fd94caryclark#define DEBUG_CUBIC_BINARY_SEARCH 0
90dac1d17027dcaa5596885a9f333979418b35001ccaryclark#define DEBUG_DUPLICATES 1
9107393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com#define DEBUG_FLAT_QUADS 0
9207393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com#define DEBUG_FLOW 1
938cb1daaa1e4343eb60a7c4f21c12e33de30dad64commit-bot@chromium.org#define DEBUG_LIMIT_WIND_SUM 4
9407393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com#define DEBUG_MARK_DONE 1
9507393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com#define DEBUG_PATH_CONSTRUCTION 1
960361032c0b53401030a720bc8b4930c3ec59f19ecaryclark@google.com#define DEBUG_SHOW_TEST_NAME 1
9707393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com#define DEBUG_SHOW_TEST_PROGRESS 1
9807393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com#define DEBUG_SHOW_WINDING 0
9907393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com#define DEBUG_SORT 1
100cffbcc3b9665f2c928544b6fc6b8a0e22a4210fbcaryclark@google.com#define DEBUG_SORT_COMPACT 0
101570863f2e22b8ea7d7c504bd15e4f766af097df2caryclark@google.com#define DEBUG_SORT_RAW 0
102a5e55925ea03e76885804bda77408a1d6f04c335caryclark@google.com#define DEBUG_SORT_SINGLE 0
10307393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com#define DEBUG_SWAP_TOP 1
10407393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com#define DEBUG_UNSORTABLE 1
1058cb1daaa1e4343eb60a7c4f21c12e33de30dad64commit-bot@chromium.org#define DEBUG_VALIDATE 0
10607393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com#define DEBUG_WIND_BUMP 0
10707393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com#define DEBUG_WINDING 1
10807393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com#define DEBUG_WINDING_AT_T 1
10907393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com
11007393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com#endif
11107393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com
11207393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com#if DEBUG_AS_C_CODE
113fa2aeee27af27f2934ee52a9732148f66481fb03caryclark@google.com#define CUBIC_DEBUG_STR "{{%1.9g,%1.9g}, {%1.9g,%1.9g}, {%1.9g,%1.9g}, {%1.9g,%1.9g}}"
114fa2aeee27af27f2934ee52a9732148f66481fb03caryclark@google.com#define QUAD_DEBUG_STR  "{{%1.9g,%1.9g}, {%1.9g,%1.9g}, {%1.9g,%1.9g}}"
115fa2aeee27af27f2934ee52a9732148f66481fb03caryclark@google.com#define LINE_DEBUG_STR  "{{%1.9g,%1.9g}, {%1.9g,%1.9g}}"
116fa2aeee27af27f2934ee52a9732148f66481fb03caryclark@google.com#define PT_DEBUG_STR "{{%1.9g,%1.9g}}"
11707393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com#else
11807393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com#define CUBIC_DEBUG_STR "(%1.9g,%1.9g %1.9g,%1.9g %1.9g,%1.9g %1.9g,%1.9g)"
11907393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com#define QUAD_DEBUG_STR  "(%1.9g,%1.9g %1.9g,%1.9g %1.9g,%1.9g)"
12007393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com#define LINE_DEBUG_STR  "(%1.9g,%1.9g %1.9g,%1.9g)"
12107393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com#define PT_DEBUG_STR "(%1.9g,%1.9g)"
12207393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com#endif
12307393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com#define T_DEBUG_STR(t, n) #t "[" #n "]=%1.9g"
12407393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com#define TX_DEBUG_STR(t) #t "[%d]=%1.9g"
12507393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com#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
12607393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com#define QUAD_DEBUG_DATA(q)  q[0].fX, q[0].fY, q[1].fX, q[1].fY, q[2].fX, q[2].fY
12707393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com#define LINE_DEBUG_DATA(l)  l[0].fX, l[0].fY, l[1].fX, l[1].fY
128dac1d17027dcaa5596885a9f333979418b35001ccaryclark#define PT_DEBUG_DATA(i, n) i.pt(n).asSkPoint().fX, i.pt(n).asSkPoint().fY
12907393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com
130570863f2e22b8ea7d7c504bd15e4f766af097df2caryclark@google.com#ifndef DEBUG_TEST
131570863f2e22b8ea7d7c504bd15e4f766af097df2caryclark@google.com#define DEBUG_TEST 0
13207393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com#endif
13307393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com
134570863f2e22b8ea7d7c504bd15e4f766af097df2caryclark@google.com#if DEBUG_SHOW_TEST_NAME
135570863f2e22b8ea7d7c504bd15e4f766af097df2caryclark@google.com#include "SkTLS.h"
136570863f2e22b8ea7d7c504bd15e4f766af097df2caryclark@google.com#endif
137570863f2e22b8ea7d7c504bd15e4f766af097df2caryclark@google.com
138570863f2e22b8ea7d7c504bd15e4f766af097df2caryclark@google.com#include "SkTArray.h"
1394431e7757cfcb8cfa99535eed0e9f156dabf95c2commit-bot@chromium.org#include "SkTDArray.h"
1400361032c0b53401030a720bc8b4930c3ec59f19ecaryclark@google.com
141570863f2e22b8ea7d7c504bd15e4f766af097df2caryclark@google.comclass SkPathOpsDebug {
142570863f2e22b8ea7d7c504bd15e4f766af097df2caryclark@google.compublic:
143570863f2e22b8ea7d7c504bd15e4f766af097df2caryclark@google.com    static const char* kLVerbStr[];
1448cb1daaa1e4343eb60a7c4f21c12e33de30dad64commit-bot@chromium.org
1458cb1daaa1e4343eb60a7c4f21c12e33de30dad64commit-bot@chromium.org#if defined(SK_DEBUG) || !FORCE_RELEASE
146570863f2e22b8ea7d7c504bd15e4f766af097df2caryclark@google.com    static int gContourID;
147570863f2e22b8ea7d7c504bd15e4f766af097df2caryclark@google.com    static int gSegmentID;
1488cb1daaa1e4343eb60a7c4f21c12e33de30dad64commit-bot@chromium.org#endif
149570863f2e22b8ea7d7c504bd15e4f766af097df2caryclark@google.com
150570863f2e22b8ea7d7c504bd15e4f766af097df2caryclark@google.com#if DEBUG_SORT || DEBUG_SWAP_TOP
151570863f2e22b8ea7d7c504bd15e4f766af097df2caryclark@google.com    static int gSortCountDefault;
152570863f2e22b8ea7d7c504bd15e4f766af097df2caryclark@google.com    static int gSortCount;
15307393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com#endif
15407393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com
15507393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com#if DEBUG_ACTIVE_OP
156570863f2e22b8ea7d7c504bd15e4f766af097df2caryclark@google.com    static const char* kPathOpStr[];
15707393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com#endif
15807393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com
1594431e7757cfcb8cfa99535eed0e9f156dabf95c2commit-bot@chromium.org    static bool ChaseContains(const SkTDArray<struct SkOpSpan *>& , const struct SkOpSpan * );
160570863f2e22b8ea7d7c504bd15e4f766af097df2caryclark@google.com    static void MathematicaIze(char* str, size_t bufferSize);
161570863f2e22b8ea7d7c504bd15e4f766af097df2caryclark@google.com    static bool ValidWind(int winding);
162570863f2e22b8ea7d7c504bd15e4f766af097df2caryclark@google.com    static void WindingPrintf(int winding);
16307e97fccd2d85076cd22ef411b0773ab92a18abecaryclark@google.com
164570863f2e22b8ea7d7c504bd15e4f766af097df2caryclark@google.com#if DEBUG_SHOW_TEST_NAME
165570863f2e22b8ea7d7c504bd15e4f766af097df2caryclark@google.com    static void* CreateNameStr();
166570863f2e22b8ea7d7c504bd15e4f766af097df2caryclark@google.com    static void DeleteNameStr(void* v);
16707e97fccd2d85076cd22ef411b0773ab92a18abecaryclark@google.com#define DEBUG_FILENAME_STRING_LENGTH 64
168570863f2e22b8ea7d7c504bd15e4f766af097df2caryclark@google.com#define DEBUG_FILENAME_STRING (reinterpret_cast<char* >(SkTLS::Get(SkPathOpsDebug::CreateNameStr, \
169570863f2e22b8ea7d7c504bd15e4f766af097df2caryclark@google.com        SkPathOpsDebug::DeleteNameStr)))
170570863f2e22b8ea7d7c504bd15e4f766af097df2caryclark@google.com    static void BumpTestName(char* );
17107393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com#endif
17219eb3b2f0aa6dce5c0335230a8930e90733e5d5dcaryclark    static void ShowOnePath(const SkPath& path, const char* name, bool includeDeclaration);
1734431e7757cfcb8cfa99535eed0e9f156dabf95c2commit-bot@chromium.org    static void ShowPath(const SkPath& one, const SkPath& two, SkPathOp op, const char* name);
174dac1d17027dcaa5596885a9f333979418b35001ccaryclark    static void DumpCoincidence(const SkTArray<class SkOpContour, true>& contours);
175dac1d17027dcaa5596885a9f333979418b35001ccaryclark    static void DumpCoincidence(const SkTArray<class SkOpContour* , true>& contours);
1764431e7757cfcb8cfa99535eed0e9f156dabf95c2commit-bot@chromium.org    static void DumpContours(const SkTArray<class SkOpContour, true>& contours);
1774431e7757cfcb8cfa99535eed0e9f156dabf95c2commit-bot@chromium.org    static void DumpContours(const SkTArray<class SkOpContour* , true>& contours);
1784431e7757cfcb8cfa99535eed0e9f156dabf95c2commit-bot@chromium.org    static void DumpContourAngles(const SkTArray<class SkOpContour, true>& contours);
1794431e7757cfcb8cfa99535eed0e9f156dabf95c2commit-bot@chromium.org    static void DumpContourAngles(const SkTArray<class SkOpContour* , true>& contours);
180dac1d17027dcaa5596885a9f333979418b35001ccaryclark    static void DumpContourPt(const SkTArray<class SkOpContour, true>& contours, int id);
181dac1d17027dcaa5596885a9f333979418b35001ccaryclark    static void DumpContourPt(const SkTArray<class SkOpContour* , true>& contours, int id);
1824431e7757cfcb8cfa99535eed0e9f156dabf95c2commit-bot@chromium.org    static void DumpContourPts(const SkTArray<class SkOpContour, true>& contours);
1834431e7757cfcb8cfa99535eed0e9f156dabf95c2commit-bot@chromium.org    static void DumpContourPts(const SkTArray<class SkOpContour* , true>& contours);
184dac1d17027dcaa5596885a9f333979418b35001ccaryclark    static void DumpContourSpan(const SkTArray<class SkOpContour, true>& contours, int id);
185dac1d17027dcaa5596885a9f333979418b35001ccaryclark    static void DumpContourSpan(const SkTArray<class SkOpContour* , true>& contours, int id);
1864431e7757cfcb8cfa99535eed0e9f156dabf95c2commit-bot@chromium.org    static void DumpContourSpans(const SkTArray<class SkOpContour, true>& contours);
1874431e7757cfcb8cfa99535eed0e9f156dabf95c2commit-bot@chromium.org    static void DumpContourSpans(const SkTArray<class SkOpContour* , true>& contours);
1884431e7757cfcb8cfa99535eed0e9f156dabf95c2commit-bot@chromium.org    static void DumpSpans(const SkTDArray<struct SkOpSpan *>& );
1894431e7757cfcb8cfa99535eed0e9f156dabf95c2commit-bot@chromium.org    static void DumpSpans(const SkTDArray<struct SkOpSpan *>* );
190570863f2e22b8ea7d7c504bd15e4f766af097df2caryclark@google.com};
19107393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com
1927eaa53d8f7e48fd17d02b5e3bd91f90e9c1899efcaryclark@google.com// shorthand for calling from debugger
1934431e7757cfcb8cfa99535eed0e9f156dabf95c2commit-bot@chromium.orgvoid Dump(const SkTArray<class SkOpContour, true>& contours);
1944431e7757cfcb8cfa99535eed0e9f156dabf95c2commit-bot@chromium.orgvoid Dump(const SkTArray<class SkOpContour* , true>& contours);
1954431e7757cfcb8cfa99535eed0e9f156dabf95c2commit-bot@chromium.orgvoid Dump(const SkTArray<class SkOpContour, true>* contours);
1964431e7757cfcb8cfa99535eed0e9f156dabf95c2commit-bot@chromium.orgvoid Dump(const SkTArray<class SkOpContour* , true>* contours);
1974431e7757cfcb8cfa99535eed0e9f156dabf95c2commit-bot@chromium.org
198dac1d17027dcaa5596885a9f333979418b35001ccaryclarkvoid Dump(const SkTDArray<SkOpSpan* >& chase);
199dac1d17027dcaa5596885a9f333979418b35001ccaryclarkvoid Dump(const SkTDArray<SkOpSpan* >* chase);
2004431e7757cfcb8cfa99535eed0e9f156dabf95c2commit-bot@chromium.org
2014431e7757cfcb8cfa99535eed0e9f156dabf95c2commit-bot@chromium.orgvoid DumpAngles(const SkTArray<class SkOpContour, true>& contours);
2024431e7757cfcb8cfa99535eed0e9f156dabf95c2commit-bot@chromium.orgvoid DumpAngles(const SkTArray<class SkOpContour* , true>& contours);
2034431e7757cfcb8cfa99535eed0e9f156dabf95c2commit-bot@chromium.orgvoid DumpAngles(const SkTArray<class SkOpContour, true>* contours);
2044431e7757cfcb8cfa99535eed0e9f156dabf95c2commit-bot@chromium.orgvoid DumpAngles(const SkTArray<class SkOpContour* , true>* contours);
2054431e7757cfcb8cfa99535eed0e9f156dabf95c2commit-bot@chromium.org
206dac1d17027dcaa5596885a9f333979418b35001ccaryclarkvoid DumpCoin(const SkTArray<class SkOpContour, true>& contours);
207dac1d17027dcaa5596885a9f333979418b35001ccaryclarkvoid DumpCoin(const SkTArray<class SkOpContour* , true>& contours);
208dac1d17027dcaa5596885a9f333979418b35001ccaryclarkvoid DumpCoin(const SkTArray<class SkOpContour, true>* contours);
209dac1d17027dcaa5596885a9f333979418b35001ccaryclarkvoid DumpCoin(const SkTArray<class SkOpContour* , true>* contours);
210dac1d17027dcaa5596885a9f333979418b35001ccaryclark
2114431e7757cfcb8cfa99535eed0e9f156dabf95c2commit-bot@chromium.orgvoid DumpPts(const SkTArray<class SkOpContour, true>& contours);
2124431e7757cfcb8cfa99535eed0e9f156dabf95c2commit-bot@chromium.orgvoid DumpPts(const SkTArray<class SkOpContour* , true>& contours);
2134431e7757cfcb8cfa99535eed0e9f156dabf95c2commit-bot@chromium.orgvoid DumpPts(const SkTArray<class SkOpContour, true>* contours);
2144431e7757cfcb8cfa99535eed0e9f156dabf95c2commit-bot@chromium.orgvoid DumpPts(const SkTArray<class SkOpContour* , true>* contours);
2154431e7757cfcb8cfa99535eed0e9f156dabf95c2commit-bot@chromium.org
216dac1d17027dcaa5596885a9f333979418b35001ccaryclarkvoid DumpPt(const SkTArray<class SkOpContour, true>& contours, int segmentID);
217dac1d17027dcaa5596885a9f333979418b35001ccaryclarkvoid DumpPt(const SkTArray<class SkOpContour* , true>& contours, int segmentID);
218dac1d17027dcaa5596885a9f333979418b35001ccaryclarkvoid DumpPt(const SkTArray<class SkOpContour, true>* contours, int segmentID);
219dac1d17027dcaa5596885a9f333979418b35001ccaryclarkvoid DumpPt(const SkTArray<class SkOpContour* , true>* contours, int segmentID);
220dac1d17027dcaa5596885a9f333979418b35001ccaryclark
2214431e7757cfcb8cfa99535eed0e9f156dabf95c2commit-bot@chromium.orgvoid DumpSpans(const SkTArray<class SkOpContour, true>& contours);
2224431e7757cfcb8cfa99535eed0e9f156dabf95c2commit-bot@chromium.orgvoid DumpSpans(const SkTArray<class SkOpContour* , true>& contours);
2234431e7757cfcb8cfa99535eed0e9f156dabf95c2commit-bot@chromium.orgvoid DumpSpans(const SkTArray<class SkOpContour, true>* contours);
2244431e7757cfcb8cfa99535eed0e9f156dabf95c2commit-bot@chromium.orgvoid DumpSpans(const SkTArray<class SkOpContour* , true>* contours);
2254431e7757cfcb8cfa99535eed0e9f156dabf95c2commit-bot@chromium.org
226dac1d17027dcaa5596885a9f333979418b35001ccaryclarkvoid DumpSpan(const SkTArray<class SkOpContour, true>& contours, int segmentID);
227dac1d17027dcaa5596885a9f333979418b35001ccaryclarkvoid DumpSpan(const SkTArray<class SkOpContour* , true>& contours, int segmentID);
228dac1d17027dcaa5596885a9f333979418b35001ccaryclarkvoid DumpSpan(const SkTArray<class SkOpContour, true>* contours, int segmentID);
229dac1d17027dcaa5596885a9f333979418b35001ccaryclarkvoid DumpSpan(const SkTArray<class SkOpContour* , true>* contours, int segmentID);
230dac1d17027dcaa5596885a9f333979418b35001ccaryclark
2314431e7757cfcb8cfa99535eed0e9f156dabf95c2commit-bot@chromium.org// generates tools/path_sorter.htm and path_visualizer.htm compatible data
2324431e7757cfcb8cfa99535eed0e9f156dabf95c2commit-bot@chromium.orgvoid DumpQ(const struct SkDQuad& quad1, const struct SkDQuad& quad2, int testNo);
2334431e7757cfcb8cfa99535eed0e9f156dabf95c2commit-bot@chromium.org
2344431e7757cfcb8cfa99535eed0e9f156dabf95c2commit-bot@chromium.orgvoid DumpT(const struct SkDQuad& quad, double t);
235a5e55925ea03e76885804bda77408a1d6f04c335caryclark@google.com
23607393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com#endif
237