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