SkPathOpsDebug.cpp revision 07393cab57ce74a4aae89a31fae9aaa9780fc19d
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 807393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com#include "SkPathOpsDebug.h" 907393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com 1007393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com#if defined SK_DEBUG || !FORCE_RELEASE 1107393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com 1207393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.comint gDebugMaxWindSum = SK_MaxS32; 1307393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.comint gDebugMaxWindValue = SK_MaxS32; 1407393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com 1507393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.comvoid mathematica_ize(char* str, size_t bufferLen) { 1607393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com size_t len = strlen(str); 1707393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com bool num = false; 1807393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com for (size_t idx = 0; idx < len; ++idx) { 1907393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com if (num && str[idx] == 'e') { 2007393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com if (len + 2 >= bufferLen) { 2107393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com return; 2207393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com } 2307393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com memmove(&str[idx + 2], &str[idx + 1], len - idx); 2407393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com str[idx] = '*'; 2507393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com str[idx + 1] = '^'; 2607393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com ++len; 2707393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com } 2807393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com num = str[idx] >= '0' && str[idx] <= '9'; 2907393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com } 3007393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com} 3107393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com 3207393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.combool valid_wind(int wind) { 3307393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com return wind > SK_MinS32 + 0xFFFF && wind < SK_MaxS32 - 0xFFFF; 3407393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com} 3507393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com 3607393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.comvoid winding_printf(int wind) { 3707393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com if (wind == SK_MinS32) { 3807393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com SkDebugf("?"); 3907393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com } else { 4007393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com SkDebugf("%d", wind); 4107393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com } 4207393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com} 4307393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com#endif 4407393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com 4507393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com#if DEBUG_DUMP 4607393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.comconst char* kLVerbStr[] = {"", "line", "quad", "cubic"}; 4707393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com// static const char* kUVerbStr[] = {"", "Line", "Quad", "Cubic"}; 4807393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.comint gContourID; 4907393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.comint gSegmentID; 5007393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com#endif 5107393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com 5207393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com#if DEBUG_SORT || DEBUG_SWAP_TOP 5307393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.comint gDebugSortCountDefault = SK_MaxS32; 5407393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.comint gDebugSortCount; 5507393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com#endif 5607393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com 5707393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com#if DEBUG_ACTIVE_OP 5807393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.comconst char* kPathOpStr[] = {"diff", "sect", "union", "xor"}; 5907393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com#endif 60