blob: 0cac6c9d67b9d953e1845ca3282a37a51e42e55a [file] [log] [blame]
chudy@google.com902ebe52012-06-29 14:21:22 +00001
2/*
3 * Copyright 2012 Google Inc.
4 *
5 * Use of this source code is governed by a BSD-style license that can be
6 * found in the LICENSE file.
7 */
8
9#include "SkObjectParser.h"
10
11/* TODO(chudy): Replace all std::strings with char */
12
chudy@google.com97cee972012-08-07 20:41:37 +000013SkString* SkObjectParser::BitmapToString(const SkBitmap& bitmap) {
14 SkString* mBitmap = new SkString("SkBitmap: Data unavailable");
chudy@google.com902ebe52012-06-29 14:21:22 +000015 return mBitmap;
16}
17
chudy@google.com97cee972012-08-07 20:41:37 +000018SkString* SkObjectParser::BoolToString(bool doAA) {
19 SkString* mBool = new SkString("Bool doAA: ");
chudy@google.com902ebe52012-06-29 14:21:22 +000020 if (doAA) {
chudy@google.com97cee972012-08-07 20:41:37 +000021 mBool->append("True");
chudy@google.com902ebe52012-06-29 14:21:22 +000022 } else {
chudy@google.com97cee972012-08-07 20:41:37 +000023 mBool->append("False");
chudy@google.com902ebe52012-06-29 14:21:22 +000024 }
chudy@google.com97cee972012-08-07 20:41:37 +000025 return mBool;
chudy@google.com902ebe52012-06-29 14:21:22 +000026}
27
chudy@google.com97cee972012-08-07 20:41:37 +000028SkString* SkObjectParser::CustomTextToString(const char* text) {
29 SkString* mText = new SkString(text);
30 return mText;
chudy@google.com902ebe52012-06-29 14:21:22 +000031}
32
chudy@google.com97cee972012-08-07 20:41:37 +000033SkString* SkObjectParser::IntToString(int x, const char* text) {
34 SkString* mInt = new SkString(text);
35 mInt->append(" ");
36 mInt->appendScalar(SkIntToScalar(x));
37 return mInt;
chudy@google.com902ebe52012-06-29 14:21:22 +000038}
39
chudy@google.com97cee972012-08-07 20:41:37 +000040SkString* SkObjectParser::IRectToString(const SkIRect& rect) {
41 SkString* mRect = new SkString("SkIRect: ");
42 mRect->append("L: ");
robertphillips@google.com94acc702012-09-06 18:43:21 +000043 mRect->appendScalar(SkIntToScalar(rect.left()));
chudy@google.com97cee972012-08-07 20:41:37 +000044 mRect->append(", T: ");
robertphillips@google.com94acc702012-09-06 18:43:21 +000045 mRect->appendScalar(SkIntToScalar(rect.top()));
chudy@google.com97cee972012-08-07 20:41:37 +000046 mRect->append(", R: ");
robertphillips@google.com94acc702012-09-06 18:43:21 +000047 mRect->appendScalar(SkIntToScalar(rect.right()));
chudy@google.com97cee972012-08-07 20:41:37 +000048 mRect->append(", B: ");
robertphillips@google.com94acc702012-09-06 18:43:21 +000049 mRect->appendScalar(SkIntToScalar(rect.bottom()));
chudy@google.com902ebe52012-06-29 14:21:22 +000050 return mRect;
51}
52
chudy@google.com97cee972012-08-07 20:41:37 +000053SkString* SkObjectParser::MatrixToString(const SkMatrix& matrix) {
54 SkString* mMatrix = new SkString("SkMatrix: (");
55 for (int i = 0; i < 8; i++) {
56 mMatrix->appendScalar(matrix.get(i));
57 mMatrix->append("), (");
chudy@google.com902ebe52012-06-29 14:21:22 +000058 }
chudy@google.com97cee972012-08-07 20:41:37 +000059 mMatrix->appendScalar(matrix.get(8));
60 mMatrix->append(")");
61 return mMatrix;
62}
chudy@google.com902ebe52012-06-29 14:21:22 +000063
chudy@google.com97cee972012-08-07 20:41:37 +000064SkString* SkObjectParser::PaintToString(const SkPaint& paint) {
65 SkColor color = paint.getColor();
66 SkString* mPaint = new SkString("SkPaint: 0x");
67 mPaint->appendHex(color);
68 return mPaint;
69}
70
71SkString* SkObjectParser::PathToString(const SkPath& path) {
robertphillips@google.com87201762012-10-18 13:30:18 +000072 SkString* mPath = new SkString("Path (");
73
74 static const char* gConvexityStrings[] = {
75 "Unknown", "Convex", "Concave"
76 };
77 SkASSERT(SkPath::kConcave_Convexity == 2);
78
79 mPath->append(gConvexityStrings[path.getConvexity()]);
80 mPath->append(", ");
81
82 mPath->appendS32(path.countVerbs());
83 mPath->append("V, ");
84 mPath->appendS32(path.countPoints());
85 mPath->append("P): ");
86
87 static const char* gVerbStrings[] = {
88 "Move", "Line", "Quad", "Cubic", "Close", "Done"
89 };
90 static const int gPtsPerVerb[] = { 1, 1, 2, 3, 0, 0 };
91 static const int gPtOffsetPerVerb[] = { 0, 1, 1, 1, 0, 0 };
92 SkASSERT(SkPath::kDone_Verb == 5);
93
94 SkPath::Iter iter(const_cast<SkPath&>(path), false);
95 SkPath::Verb verb;
96 SkPoint points[4];
97
98 for(verb = iter.next(points, false);
99 verb != SkPath::kDone_Verb;
100 verb = iter.next(points, false)) {
101
102 mPath->append(gVerbStrings[verb]);
103 mPath->append(" ");
104
105 for (int i = 0; i < gPtsPerVerb[verb]; ++i) {
106 mPath->append("(");
107 mPath->appendScalar(points[gPtOffsetPerVerb[verb]+i].fX);
108 mPath->append(", ");
109 mPath->appendScalar(points[gPtOffsetPerVerb[verb]+i].fY);
110 mPath->append(") ");
111 }
chudy@google.com97cee972012-08-07 20:41:37 +0000112 }
robertphillips@google.com87201762012-10-18 13:30:18 +0000113
chudy@google.com97cee972012-08-07 20:41:37 +0000114 return mPath;
115}
116
117SkString* SkObjectParser::PointsToString(const SkPoint pts[], size_t count) {
118 SkString* mPoints = new SkString("SkPoints pts[]: ");
119 for (unsigned int i = 0; i < count; i++) {
120 mPoints->append("(");
121 mPoints->appendScalar(pts[i].fX);
122 mPoints->append(",");
123 mPoints->appendScalar(pts[i].fY);
124 mPoints->append(")");
125 }
126 return mPoints;
127}
128
129SkString* SkObjectParser::PointModeToString(SkCanvas::PointMode mode) {
130 SkString* mMode = new SkString("SkCanvas::PointMode: ");
131 if (mode == SkCanvas::kPoints_PointMode) {
132 mMode->append("kPoints_PointMode");
133 } else if (mode == SkCanvas::kLines_PointMode) {
134 mMode->append("kLines_Mode");
135 } else if (mode == SkCanvas::kPolygon_PointMode) {
136 mMode->append("kPolygon_PointMode");
137 }
138 return mMode;
139}
140
141SkString* SkObjectParser::RectToString(const SkRect& rect) {
142 SkString* mRect = new SkString("SkRect: ");
143 mRect->append("(");
144 mRect->appendScalar(rect.left());
145 mRect->append(", ");
146 mRect->appendScalar(rect.top());
147 mRect->append(", ");
148 mRect->appendScalar(rect.right());
149 mRect->append(", ");
150 mRect->appendScalar(rect.bottom());
151 mRect->append(")");
152 return mRect;
153}
154
155SkString* SkObjectParser::RegionOpToString(SkRegion::Op op) {
156 SkString* mOp = new SkString("SkRegion::Op: ");
157 if (op == SkRegion::kDifference_Op) {
158 mOp->append("kDifference_Op");
159 } else if (op == SkRegion::kIntersect_Op) {
160 mOp->append("kIntersect_Op");
161 } else if (op == SkRegion::kUnion_Op) {
162 mOp->append("kUnion_Op");
163 } else if (op == SkRegion::kXOR_Op) {
164 mOp->append("kXOR_Op");
165 } else if (op == SkRegion::kReverseDifference_Op) {
166 mOp->append("kReverseDifference_Op");
167 } else if (op == SkRegion::kReplace_Op) {
168 mOp->append("kReplace_Op");
169 } else {
170 mOp->append("Unknown Type");
171 }
chudy@google.com902ebe52012-06-29 14:21:22 +0000172 return mOp;
173}
174
chudy@google.com97cee972012-08-07 20:41:37 +0000175SkString* SkObjectParser::RegionToString(const SkRegion& region) {
176 SkString* mRegion = new SkString("SkRegion: Data unavailable.");
177 return mRegion;
chudy@google.com902ebe52012-06-29 14:21:22 +0000178}
179
chudy@google.com97cee972012-08-07 20:41:37 +0000180SkString* SkObjectParser::SaveFlagsToString(SkCanvas::SaveFlags flags) {
181 SkString* mFlags = new SkString("SkCanvas::SaveFlags: ");
chudy@google.com902ebe52012-06-29 14:21:22 +0000182 if(flags == SkCanvas::kMatrixClip_SaveFlag) {
chudy@google.com97cee972012-08-07 20:41:37 +0000183 mFlags->append("kMatrixClip_SaveFlag");
chudy@google.com902ebe52012-06-29 14:21:22 +0000184 } else if (flags == SkCanvas::kClip_SaveFlag) {
chudy@google.com97cee972012-08-07 20:41:37 +0000185 mFlags->append("kClip_SaveFlag");
chudy@google.com902ebe52012-06-29 14:21:22 +0000186 } else if (flags == SkCanvas::kHasAlphaLayer_SaveFlag) {
chudy@google.com97cee972012-08-07 20:41:37 +0000187 mFlags->append("kHasAlphaLayer_SaveFlag");
chudy@google.com902ebe52012-06-29 14:21:22 +0000188 } else if (flags == SkCanvas::kFullColorLayer_SaveFlag) {
chudy@google.com97cee972012-08-07 20:41:37 +0000189 mFlags->append("kFullColorLayer_SaveFlag");
chudy@google.com902ebe52012-06-29 14:21:22 +0000190 } else if (flags == SkCanvas::kClipToLayer_SaveFlag) {
chudy@google.com97cee972012-08-07 20:41:37 +0000191 mFlags->append("kClipToLayer_SaveFlag");
chudy@google.com902ebe52012-06-29 14:21:22 +0000192 } else if (flags == SkCanvas::kMatrixClip_SaveFlag) {
chudy@google.com97cee972012-08-07 20:41:37 +0000193 mFlags->append("kMatrixClip_SaveFlag");
chudy@google.com902ebe52012-06-29 14:21:22 +0000194 } else if (flags == SkCanvas::kARGB_NoClipLayer_SaveFlag) {
chudy@google.com97cee972012-08-07 20:41:37 +0000195 mFlags->append("kARGB_NoClipLayer_SaveFlag");
chudy@google.com902ebe52012-06-29 14:21:22 +0000196 } else if (flags == SkCanvas::kARGB_ClipLayer_SaveFlag) {
chudy@google.com97cee972012-08-07 20:41:37 +0000197 mFlags->append("kARGB_ClipLayer_SaveFlag");
chudy@google.com902ebe52012-06-29 14:21:22 +0000198 } else {
chudy@google.com97cee972012-08-07 20:41:37 +0000199 mFlags->append("Data Unavailable");
chudy@google.com902ebe52012-06-29 14:21:22 +0000200 }
chudy@google.com902ebe52012-06-29 14:21:22 +0000201 return mFlags;
202}
203
chudy@google.com97cee972012-08-07 20:41:37 +0000204SkString* SkObjectParser::ScalarToString(SkScalar x, const char* text) {
205 SkString* mScalar = new SkString(text);
206 mScalar->append(" ");
207 mScalar->appendScalar(x);
chudy@google.com902ebe52012-06-29 14:21:22 +0000208 return mScalar;
209}
210
chudy@google.com97cee972012-08-07 20:41:37 +0000211SkString* SkObjectParser::TextToString(const void* text, size_t byteLength) {
robertphillips@google.com94acc702012-09-06 18:43:21 +0000212 SkString* mText = new SkString(6+byteLength+1);
213 mText->append("Text: ");
214 mText->append((char*) text, byteLength);
chudy@google.com97cee972012-08-07 20:41:37 +0000215 return mText;
chudy@google.com902ebe52012-06-29 14:21:22 +0000216}