aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core
diff options
context:
space:
mode:
authorGravatar bsalomon <bsalomon@google.com>2014-06-09 07:59:06 -0700
committerGravatar Commit bot <commit-bot@chromium.org>2014-06-09 07:59:06 -0700
commitb6b02526438d6839481fb40ccf610d28f7652397 (patch)
tree5f2af2ba7950b4c79f708c0a4cc9e04e21f9844b /src/core
parente2b78a7131a9ee7dccdc3b056bdbaeaad851fc81 (diff)
Add dump() to SkClipStack to help with debugging.
R=robertphillips@google.com Author: bsalomon@google.com Review URL: https://codereview.chromium.org/311263015
Diffstat (limited to 'src/core')
-rw-r--r--src/core/SkClipStack.cpp60
-rw-r--r--src/core/SkPath.cpp2
-rw-r--r--src/core/SkRRect.cpp12
3 files changed, 73 insertions, 1 deletions
diff --git a/src/core/SkClipStack.cpp b/src/core/SkClipStack.cpp
index d087592b17..a965b1bae7 100644
--- a/src/core/SkClipStack.cpp
+++ b/src/core/SkClipStack.cpp
@@ -845,3 +845,63 @@ int32_t SkClipStack::getTopmostGenID() const {
return back->getGenID();
}
+
+#ifdef SK_DEVELOPER
+void SkClipStack::Element::dump() const {
+ static const char* kTypeStrings[] = {
+ "empty",
+ "rect",
+ "rrect",
+ "path"
+ };
+ SK_COMPILE_ASSERT(0 == kEmpty_Type, type_str);
+ SK_COMPILE_ASSERT(1 == kRect_Type, type_str);
+ SK_COMPILE_ASSERT(2 == kRRect_Type, type_str);
+ SK_COMPILE_ASSERT(3 == kPath_Type, type_str);
+ SK_COMPILE_ASSERT(SK_ARRAY_COUNT(kTypeStrings) == kTypeCnt, type_str);
+
+ static const char* kOpStrings[] = {
+ "difference",
+ "intersect",
+ "union",
+ "xor",
+ "reverse-difference",
+ "replace",
+ };
+ SK_COMPILE_ASSERT(0 == SkRegion::kDifference_Op, op_str);
+ SK_COMPILE_ASSERT(1 == SkRegion::kIntersect_Op, op_str);
+ SK_COMPILE_ASSERT(2 == SkRegion::kUnion_Op, op_str);
+ SK_COMPILE_ASSERT(3 == SkRegion::kXOR_Op, op_str);
+ SK_COMPILE_ASSERT(4 == SkRegion::kReverseDifference_Op, op_str);
+ SK_COMPILE_ASSERT(5 == SkRegion::kReplace_Op, op_str);
+ SK_COMPILE_ASSERT(SK_ARRAY_COUNT(kOpStrings) == SkRegion::kOpCnt, op_str);
+
+ SkDebugf("Type: %s, Op: %s, AA: %s, Save Count: %d\n", kTypeStrings[fType],
+ kOpStrings[fOp], (fDoAA ? "yes" : "no"), fSaveCount);
+ switch (fType) {
+ case kEmpty_Type:
+ SkDebugf("\n");
+ break;
+ case kRect_Type:
+ this->getRect().dump();
+ SkDebugf("\n");
+ break;
+ case kRRect_Type:
+ this->getRRect().dump();
+ SkDebugf("\n");
+ break;
+ case kPath_Type:
+ this->getPath().dump(true);
+ break;
+ }
+}
+
+void SkClipStack::dump() const {
+ B2TIter iter(*this);
+ const Element* e;
+ while ((e = iter.next())) {
+ e->dump();
+ SkDebugf("\n");
+ }
+}
+#endif
diff --git a/src/core/SkPath.cpp b/src/core/SkPath.cpp
index d51a40e271..075cfdb421 100644
--- a/src/core/SkPath.cpp
+++ b/src/core/SkPath.cpp
@@ -2170,7 +2170,7 @@ void SkPath::dump(bool forceClose, const char title[]) const {
append_params(&builder, "path.cubicTo", &pts[1], 3);
break;
case kClose_Verb:
- builder.append("path.close();\n");
+ builder.append("path.close();");
break;
default:
SkDebugf(" path: UNKNOWN VERB %d, aborting dump...\n", verb);
diff --git a/src/core/SkRRect.cpp b/src/core/SkRRect.cpp
index 7661fd272b..9bb6725dea 100644
--- a/src/core/SkRRect.cpp
+++ b/src/core/SkRRect.cpp
@@ -436,6 +436,18 @@ size_t SkRRect::readFromMemory(const void* buffer, size_t length) {
return kSizeInMemory;
}
+#ifdef SK_DEVELOPER
+void SkRRect::dump() const {
+ SkDebugf("Rect: ");
+ fRect.dump();
+ SkDebugf(" Corners: { TL: (%f, %f), TR: (%f, %f), BR: (%f, %f), BL: (%f, %f) }",
+ fRadii[kUpperLeft_Corner].fX, fRadii[kUpperLeft_Corner].fY,
+ fRadii[kUpperRight_Corner].fX, fRadii[kUpperRight_Corner].fY,
+ fRadii[kLowerRight_Corner].fX, fRadii[kLowerRight_Corner].fY,
+ fRadii[kLowerLeft_Corner].fX, fRadii[kLowerLeft_Corner].fY);
+}
+#endif
+
///////////////////////////////////////////////////////////////////////////////
#ifdef SK_DEBUG