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