blob: d777631755237beeda40cae8bc3da00c33db4e35 [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"
robertphillips@google.com67baba42013-01-02 20:20:31 +000010#include "SkRRect.h"
robertphillips@google.com76f9e932013-01-15 20:17:47 +000011#include "SkShader.h"
humper@google.comf515ffc2013-01-07 15:48:19 +000012#include "SkTypeface.h"
13#include "SkStream.h"
14#include "SkData.h"
15#include "SkFontDescriptor.h"
chudy@google.com902ebe52012-06-29 14:21:22 +000016
17/* TODO(chudy): Replace all std::strings with char */
18
chudy@google.com97cee972012-08-07 20:41:37 +000019SkString* SkObjectParser::BitmapToString(const SkBitmap& bitmap) {
robertphillips@google.com195952f2012-10-23 12:13:35 +000020 SkString* mBitmap = new SkString("SkBitmap: ");
21 mBitmap->append("W: ");
22 mBitmap->appendS32(bitmap.width());
23 mBitmap->append(" H: ");
24 mBitmap->appendS32(bitmap.height());
25
26 const char* gConfigStrings[] = {
skia.committer@gmail.com1e34ff72012-10-24 02:01:24 +000027 "None", "A1", "A8", "Index8", "RGB565", "ARGB4444", "ARGB8888", "RLE8"
robertphillips@google.com195952f2012-10-23 12:13:35 +000028 };
29 SkASSERT(SkBitmap::kConfigCount == 8);
30
31 mBitmap->append(" Config: ");
32 mBitmap->append(gConfigStrings[bitmap.getConfig()]);
33
34 if (bitmap.isOpaque()) {
35 mBitmap->append(" opaque");
36 } else {
37 mBitmap->append(" not-opaque");
38 }
39
40 if (bitmap.isImmutable()) {
41 mBitmap->append(" immutable");
42 } else {
43 mBitmap->append(" not-immutable");
44 }
45
46 if (bitmap.isVolatile()) {
47 mBitmap->append(" volatile");
48 } else {
49 mBitmap->append(" not-volatile");
50 }
51
52 mBitmap->append(" genID: ");
53 mBitmap->appendS32(bitmap.getGenerationID());
54
chudy@google.com902ebe52012-06-29 14:21:22 +000055 return mBitmap;
56}
57
chudy@google.com97cee972012-08-07 20:41:37 +000058SkString* SkObjectParser::BoolToString(bool doAA) {
59 SkString* mBool = new SkString("Bool doAA: ");
chudy@google.com902ebe52012-06-29 14:21:22 +000060 if (doAA) {
chudy@google.com97cee972012-08-07 20:41:37 +000061 mBool->append("True");
chudy@google.com902ebe52012-06-29 14:21:22 +000062 } else {
chudy@google.com97cee972012-08-07 20:41:37 +000063 mBool->append("False");
chudy@google.com902ebe52012-06-29 14:21:22 +000064 }
chudy@google.com97cee972012-08-07 20:41:37 +000065 return mBool;
chudy@google.com902ebe52012-06-29 14:21:22 +000066}
67
chudy@google.com97cee972012-08-07 20:41:37 +000068SkString* SkObjectParser::CustomTextToString(const char* text) {
69 SkString* mText = new SkString(text);
70 return mText;
chudy@google.com902ebe52012-06-29 14:21:22 +000071}
72
chudy@google.com97cee972012-08-07 20:41:37 +000073SkString* SkObjectParser::IntToString(int x, const char* text) {
74 SkString* mInt = new SkString(text);
75 mInt->append(" ");
76 mInt->appendScalar(SkIntToScalar(x));
77 return mInt;
chudy@google.com902ebe52012-06-29 14:21:22 +000078}
79
chudy@google.com97cee972012-08-07 20:41:37 +000080SkString* SkObjectParser::IRectToString(const SkIRect& rect) {
81 SkString* mRect = new SkString("SkIRect: ");
82 mRect->append("L: ");
robertphillips@google.com195952f2012-10-23 12:13:35 +000083 mRect->appendS32(rect.left());
chudy@google.com97cee972012-08-07 20:41:37 +000084 mRect->append(", T: ");
robertphillips@google.com195952f2012-10-23 12:13:35 +000085 mRect->appendS32(rect.top());
chudy@google.com97cee972012-08-07 20:41:37 +000086 mRect->append(", R: ");
robertphillips@google.com195952f2012-10-23 12:13:35 +000087 mRect->appendS32(rect.right());
chudy@google.com97cee972012-08-07 20:41:37 +000088 mRect->append(", B: ");
robertphillips@google.com195952f2012-10-23 12:13:35 +000089 mRect->appendS32(rect.bottom());
chudy@google.com902ebe52012-06-29 14:21:22 +000090 return mRect;
91}
92
chudy@google.com97cee972012-08-07 20:41:37 +000093SkString* SkObjectParser::MatrixToString(const SkMatrix& matrix) {
94 SkString* mMatrix = new SkString("SkMatrix: (");
95 for (int i = 0; i < 8; i++) {
96 mMatrix->appendScalar(matrix.get(i));
97 mMatrix->append("), (");
chudy@google.com902ebe52012-06-29 14:21:22 +000098 }
chudy@google.com97cee972012-08-07 20:41:37 +000099 mMatrix->appendScalar(matrix.get(8));
100 mMatrix->append(")");
101 return mMatrix;
102}
chudy@google.com902ebe52012-06-29 14:21:22 +0000103
robertphillips@google.com735edb02013-01-10 18:54:11 +0000104static void add_flag_to_string(SkString* string, bool flag, const char* flagStr, bool* needSeparator) {
105 if (flag) {
106 if (*needSeparator) {
107 string->append("|");
108 }
109 string->append(flagStr);
110 *needSeparator = true;
111 }
112}
skia.committer@gmail.com4e8ef332013-01-08 02:01:29 +0000113
robertphillips@google.com735edb02013-01-10 18:54:11 +0000114SkString* SkObjectParser::PaintToString(const SkPaint& paint) {
115 SkString* mPaint = new SkString("<dl><dt>SkPaint:</dt><dd><dl>");
116
117 SkTypeface* typeface = paint.getTypeface();
118 if (NULL != typeface) {
humper@google.comf515ffc2013-01-07 15:48:19 +0000119 SkDynamicMemoryWStream ostream;
120 typeface->serialize(&ostream);
robertphillips@google.com444a4012013-01-14 17:40:15 +0000121 SkAutoTUnref<SkData> data(ostream.copyToData());
skia.committer@gmail.com4e8ef332013-01-08 02:01:29 +0000122
humper@google.comf515ffc2013-01-07 15:48:19 +0000123 SkMemoryStream stream(data);
124 SkFontDescriptor descriptor(&stream);
skia.committer@gmail.com4e8ef332013-01-08 02:01:29 +0000125
humper@google.comf515ffc2013-01-07 15:48:19 +0000126 mPaint->append("<dt>Font Family Name:</dt><dd>");
127 mPaint->append(descriptor.getFamilyName());
128 mPaint->append("</dd><dt>Font Full Name:</dt><dd>");
129 mPaint->append(descriptor.getFullName());
130 mPaint->append("</dd><dt>Font PS Name:</dt><dd>");
131 mPaint->append(descriptor.getPostscriptName());
132 mPaint->append("</dd><dt>Font File Name:</dt><dd>");
133 mPaint->append(descriptor.getFontFileName());
robertphillips@google.com735edb02013-01-10 18:54:11 +0000134 mPaint->append("</dd>");
humper@google.comf515ffc2013-01-07 15:48:19 +0000135 }
robertphillips@google.com195952f2012-10-23 12:13:35 +0000136
robertphillips@google.com735edb02013-01-10 18:54:11 +0000137 mPaint->append("<dt>TextSize:</dt><dd>");
138 mPaint->appendScalar(paint.getTextSize());
139 mPaint->append("</dd>");
140
141 mPaint->append("<dt>TextScaleX:</dt><dd>");
142 mPaint->appendScalar(paint.getTextScaleX());
143 mPaint->append("</dd>");
144
145 mPaint->append("<dt>TextSkewX:</dt><dd>");
146 mPaint->appendScalar(paint.getTextSkewX());
147 mPaint->append("</dd>");
148
149 SkPathEffect* pathEffect = paint.getPathEffect();
150 if (NULL != pathEffect) {
151 mPaint->append("<dt>PathEffect:</dt><dd>");
152 mPaint->append("</dd>");
153 }
154
155 SkShader* shader = paint.getShader();
156 if (NULL != shader) {
157 mPaint->append("<dt>Shader:</dt><dd>");
robertphillips@google.com76f9e932013-01-15 20:17:47 +0000158 SkDEVCODE(shader->toString(mPaint);)
robertphillips@google.com735edb02013-01-10 18:54:11 +0000159 mPaint->append("</dd>");
160 }
161
162 SkXfermode* xfer = paint.getXfermode();
163 if (NULL != xfer) {
164 mPaint->append("<dt>Xfermode:</dt><dd>");
165 mPaint->append("</dd>");
166 }
167
168 SkMaskFilter* maskFilter = paint.getMaskFilter();
169 if (NULL != maskFilter) {
170 mPaint->append("<dt>MaskFilter:</dt><dd>");
171 mPaint->append("</dd>");
172 }
173
174 SkColorFilter* colorFilter = paint.getColorFilter();
175 if (NULL != colorFilter) {
176 mPaint->append("<dt>ColorFilter:</dt><dd>");
177 mPaint->append("</dd>");
178 }
179
180 SkRasterizer* rasterizer = paint.getRasterizer();
181 if (NULL != rasterizer) {
182 mPaint->append("<dt>Rasterizer:</dt><dd>");
183 mPaint->append("</dd>");
184 }
185
186 SkDrawLooper* looper = paint.getLooper();
187 if (NULL != looper) {
188 mPaint->append("<dt>DrawLooper:</dt><dd>");
189 mPaint->append("</dd>");
190 }
191
192 SkImageFilter* imageFilter = paint.getImageFilter();
193 if (NULL != imageFilter) {
194 mPaint->append("<dt>ImageFilter:</dt><dd>");
195 mPaint->append("</dd>");
196 }
197
198 SkAnnotation* annotation = paint.getAnnotation();
199 if (NULL != annotation) {
200 mPaint->append("<dt>Annotation:</dt><dd>");
201 mPaint->append("</dd>");
202 }
203
204 mPaint->append("<dt>Color:</dt><dd>0x");
205 SkColor color = paint.getColor();
206 mPaint->appendHex(color);
207 mPaint->append("</dd>");
208
209 mPaint->append("<dt>Stroke Width:</dt><dd>");
210 mPaint->appendScalar(paint.getStrokeWidth());
211 mPaint->append("</dd>");
212
213 mPaint->append("<dt>Stroke Miter:</dt><dd>");
214 mPaint->appendScalar(paint.getStrokeMiter());
215 mPaint->append("</dd>");
216
217 mPaint->append("<dt>Flags:</dt><dd>(");
218 if (paint.getFlags()) {
219 bool needSeparator = false;
220 add_flag_to_string(mPaint, paint.isAntiAlias(), "AntiAlias", &needSeparator);
221 add_flag_to_string(mPaint, paint.isFilterBitmap(), "FilterBitmap", &needSeparator);
222 add_flag_to_string(mPaint, paint.isDither(), "Dither", &needSeparator);
223 add_flag_to_string(mPaint, paint.isUnderlineText(), "UnderlineText", &needSeparator);
224 add_flag_to_string(mPaint, paint.isStrikeThruText(), "StrikeThruText", &needSeparator);
225 add_flag_to_string(mPaint, paint.isFakeBoldText(), "FakeBoldText", &needSeparator);
226 add_flag_to_string(mPaint, paint.isLinearText(), "LinearText", &needSeparator);
227 add_flag_to_string(mPaint, paint.isSubpixelText(), "SubpixelText", &needSeparator);
228 add_flag_to_string(mPaint, paint.isDevKernText(), "DevKernText", &needSeparator);
229 add_flag_to_string(mPaint, paint.isLCDRenderText(), "LCDRenderText", &needSeparator);
skia.committer@gmail.comf49b2872013-01-11 02:01:25 +0000230 add_flag_to_string(mPaint, paint.isEmbeddedBitmapText(),
robertphillips@google.com735edb02013-01-10 18:54:11 +0000231 "EmbeddedBitmapText", &needSeparator);
232 add_flag_to_string(mPaint, paint.isAutohinted(), "Autohinted", &needSeparator);
233 add_flag_to_string(mPaint, paint.isVerticalText(), "VerticalText", &needSeparator);
skia.committer@gmail.comf49b2872013-01-11 02:01:25 +0000234 add_flag_to_string(mPaint, SkToBool(paint.getFlags() & SkPaint::kGenA8FromLCD_Flag),
robertphillips@google.com735edb02013-01-10 18:54:11 +0000235 "GenA8FromLCD", &needSeparator);
236 } else {
237 mPaint->append("None");
238 }
239 mPaint->append(")</dd>");
240
241 mPaint->append("<dt>TextAlign:</dt><dd>");
242 static const char* gTextAlignStrings[SkPaint::kAlignCount] = { "Left", "Center", "Right" };
243 mPaint->append(gTextAlignStrings[paint.getTextAlign()]);
244 mPaint->append("</dd>");
245
246 mPaint->append("<dt>CapType:</dt><dd>");
247 static const char* gStrokeCapStrings[SkPaint::kCapCount] = { "Butt", "Round", "Square" };
248 mPaint->append(gStrokeCapStrings[paint.getStrokeCap()]);
249 mPaint->append("</dd>");
250
251 mPaint->append("<dt>JoinType:</dt><dd>");
252 static const char* gJoinStrings[SkPaint::kJoinCount] = { "Miter", "Round", "Bevel" };
253 mPaint->append(gJoinStrings[paint.getStrokeJoin()]);
254 mPaint->append("</dd>");
255
256 mPaint->append("<dt>Style:</dt><dd>");
257 static const char* gStyleStrings[SkPaint::kStyleCount] = { "Fill", "Stroke", "StrokeAndFill" };
258 mPaint->append(gStyleStrings[paint.getStyle()]);
259 mPaint->append("</dd>");
260
261 mPaint->append("<dt>TextEncoding:</dt><dd>");
262 static const char* gTextEncodingStrings[] = { "UTF8", "UTF16", "UTF32", "GlyphID" };
263 mPaint->append(gTextEncodingStrings[paint.getTextEncoding()]);
264 mPaint->append("</dd>");
265
266 mPaint->append("<dt>Hinting:</dt><dd>");
267 static const char* gHintingStrings[] = { "None", "Slight", "Normal", "Full" };
268 mPaint->append(gHintingStrings[paint.getHinting()]);
269 mPaint->append("</dd>");
270
271 mPaint->append("</dd></dl></dl>");
chudy@google.com97cee972012-08-07 20:41:37 +0000272 return mPaint;
273}
274
275SkString* SkObjectParser::PathToString(const SkPath& path) {
robertphillips@google.com87201762012-10-18 13:30:18 +0000276 SkString* mPath = new SkString("Path (");
277
robertphillips@google.com51185fe2012-12-05 19:34:33 +0000278 static const char* gFillStrings[] = {
279 "Winding", "EvenOdd", "InverseWinding", "InverseEvenOdd"
280 };
281
282 mPath->append(gFillStrings[path.getFillType()]);
283 mPath->append(", ");
284
robertphillips@google.com87201762012-10-18 13:30:18 +0000285 static const char* gConvexityStrings[] = {
skia.committer@gmail.com6a748ad2012-10-19 02:01:19 +0000286 "Unknown", "Convex", "Concave"
robertphillips@google.com87201762012-10-18 13:30:18 +0000287 };
288 SkASSERT(SkPath::kConcave_Convexity == 2);
289
290 mPath->append(gConvexityStrings[path.getConvexity()]);
291 mPath->append(", ");
292
robertphillips@google.com195952f2012-10-23 12:13:35 +0000293 if (path.isRect(NULL)) {
294 mPath->append("isRect, ");
295 } else {
296 mPath->append("isNotRect, ");
297 }
298
robertphillips@google.com87201762012-10-18 13:30:18 +0000299 mPath->appendS32(path.countVerbs());
300 mPath->append("V, ");
301 mPath->appendS32(path.countPoints());
302 mPath->append("P): ");
303
304 static const char* gVerbStrings[] = {
305 "Move", "Line", "Quad", "Cubic", "Close", "Done"
306 };
307 static const int gPtsPerVerb[] = { 1, 1, 2, 3, 0, 0 };
308 static const int gPtOffsetPerVerb[] = { 0, 1, 1, 1, 0, 0 };
309 SkASSERT(SkPath::kDone_Verb == 5);
310
311 SkPath::Iter iter(const_cast<SkPath&>(path), false);
312 SkPath::Verb verb;
313 SkPoint points[4];
314
skia.committer@gmail.com6a748ad2012-10-19 02:01:19 +0000315 for(verb = iter.next(points, false);
316 verb != SkPath::kDone_Verb;
robertphillips@google.com87201762012-10-18 13:30:18 +0000317 verb = iter.next(points, false)) {
318
319 mPath->append(gVerbStrings[verb]);
320 mPath->append(" ");
321
322 for (int i = 0; i < gPtsPerVerb[verb]; ++i) {
323 mPath->append("(");
324 mPath->appendScalar(points[gPtOffsetPerVerb[verb]+i].fX);
325 mPath->append(", ");
326 mPath->appendScalar(points[gPtOffsetPerVerb[verb]+i].fY);
327 mPath->append(") ");
328 }
chudy@google.com97cee972012-08-07 20:41:37 +0000329 }
robertphillips@google.com87201762012-10-18 13:30:18 +0000330
robertphillips@google.com30d35f22012-11-06 16:45:36 +0000331 SkString* boundStr = SkObjectParser::RectToString(path.getBounds(), " Bound: ");
332
333 if (NULL != boundStr) {
334 mPath->append(*boundStr);
335 SkDELETE(boundStr);
336 }
337
chudy@google.com97cee972012-08-07 20:41:37 +0000338 return mPath;
339}
340
341SkString* SkObjectParser::PointsToString(const SkPoint pts[], size_t count) {
342 SkString* mPoints = new SkString("SkPoints pts[]: ");
343 for (unsigned int i = 0; i < count; i++) {
344 mPoints->append("(");
345 mPoints->appendScalar(pts[i].fX);
346 mPoints->append(",");
347 mPoints->appendScalar(pts[i].fY);
348 mPoints->append(")");
349 }
350 return mPoints;
351}
352
353SkString* SkObjectParser::PointModeToString(SkCanvas::PointMode mode) {
354 SkString* mMode = new SkString("SkCanvas::PointMode: ");
355 if (mode == SkCanvas::kPoints_PointMode) {
356 mMode->append("kPoints_PointMode");
357 } else if (mode == SkCanvas::kLines_PointMode) {
358 mMode->append("kLines_Mode");
359 } else if (mode == SkCanvas::kPolygon_PointMode) {
360 mMode->append("kPolygon_PointMode");
361 }
362 return mMode;
363}
364
robertphillips@google.com30d35f22012-11-06 16:45:36 +0000365SkString* SkObjectParser::RectToString(const SkRect& rect, const char* title) {
366
367 SkString* mRect = new SkString;
skia.committer@gmail.com72b2e6f2012-11-08 02:03:56 +0000368
robertphillips@google.com30d35f22012-11-06 16:45:36 +0000369 if (NULL == title) {
370 mRect->append("SkRect: ");
371 } else {
372 mRect->append(title);
373 }
chudy@google.com97cee972012-08-07 20:41:37 +0000374 mRect->append("(");
375 mRect->appendScalar(rect.left());
376 mRect->append(", ");
377 mRect->appendScalar(rect.top());
378 mRect->append(", ");
379 mRect->appendScalar(rect.right());
380 mRect->append(", ");
381 mRect->appendScalar(rect.bottom());
382 mRect->append(")");
383 return mRect;
384}
385
robertphillips@google.com67baba42013-01-02 20:20:31 +0000386SkString* SkObjectParser::RRectToString(const SkRRect& rrect, const char* title) {
387
388 SkString* mRRect = new SkString;
389
390 if (NULL == title) {
391 mRRect->append("SkRRect (");
392 if (rrect.isEmpty()) {
393 mRRect->append("empty");
394 } else if (rrect.isRect()) {
395 mRRect->append("rect");
396 } else if (rrect.isOval()) {
397 mRRect->append("oval");
398 } else if (rrect.isSimple()) {
399 mRRect->append("simple");
400 } else {
401 SkASSERT(rrect.isComplex());
402 mRRect->append("complex");
403 }
404 mRRect->append("): ");
405 } else {
406 mRRect->append(title);
407 }
408 mRRect->append("(");
409 mRRect->appendScalar(rrect.rect().left());
410 mRRect->append(", ");
411 mRRect->appendScalar(rrect.rect().top());
412 mRRect->append(", ");
413 mRRect->appendScalar(rrect.rect().right());
414 mRRect->append(", ");
415 mRRect->appendScalar(rrect.rect().bottom());
416 mRRect->append(") radii: (");
417 for (int i = 0; i < 4; ++i) {
418 const SkVector& radii = rrect.radii((SkRRect::Corner) i);
419 mRRect->appendScalar(radii.fX);
420 mRRect->append(", ");
421 mRRect->appendScalar(radii.fY);
422 if (i < 3) {
423 mRRect->append(", ");
424 }
425 }
426 mRRect->append(")");
427 return mRRect;
428}
429
chudy@google.com97cee972012-08-07 20:41:37 +0000430SkString* SkObjectParser::RegionOpToString(SkRegion::Op op) {
431 SkString* mOp = new SkString("SkRegion::Op: ");
432 if (op == SkRegion::kDifference_Op) {
433 mOp->append("kDifference_Op");
434 } else if (op == SkRegion::kIntersect_Op) {
435 mOp->append("kIntersect_Op");
436 } else if (op == SkRegion::kUnion_Op) {
437 mOp->append("kUnion_Op");
438 } else if (op == SkRegion::kXOR_Op) {
439 mOp->append("kXOR_Op");
440 } else if (op == SkRegion::kReverseDifference_Op) {
441 mOp->append("kReverseDifference_Op");
442 } else if (op == SkRegion::kReplace_Op) {
443 mOp->append("kReplace_Op");
444 } else {
445 mOp->append("Unknown Type");
446 }
chudy@google.com902ebe52012-06-29 14:21:22 +0000447 return mOp;
448}
449
chudy@google.com97cee972012-08-07 20:41:37 +0000450SkString* SkObjectParser::RegionToString(const SkRegion& region) {
451 SkString* mRegion = new SkString("SkRegion: Data unavailable.");
452 return mRegion;
chudy@google.com902ebe52012-06-29 14:21:22 +0000453}
454
chudy@google.com97cee972012-08-07 20:41:37 +0000455SkString* SkObjectParser::SaveFlagsToString(SkCanvas::SaveFlags flags) {
456 SkString* mFlags = new SkString("SkCanvas::SaveFlags: ");
chudy@google.com902ebe52012-06-29 14:21:22 +0000457 if(flags == SkCanvas::kMatrixClip_SaveFlag) {
chudy@google.com97cee972012-08-07 20:41:37 +0000458 mFlags->append("kMatrixClip_SaveFlag");
chudy@google.com902ebe52012-06-29 14:21:22 +0000459 } else if (flags == SkCanvas::kClip_SaveFlag) {
chudy@google.com97cee972012-08-07 20:41:37 +0000460 mFlags->append("kClip_SaveFlag");
chudy@google.com902ebe52012-06-29 14:21:22 +0000461 } else if (flags == SkCanvas::kHasAlphaLayer_SaveFlag) {
chudy@google.com97cee972012-08-07 20:41:37 +0000462 mFlags->append("kHasAlphaLayer_SaveFlag");
chudy@google.com902ebe52012-06-29 14:21:22 +0000463 } else if (flags == SkCanvas::kFullColorLayer_SaveFlag) {
chudy@google.com97cee972012-08-07 20:41:37 +0000464 mFlags->append("kFullColorLayer_SaveFlag");
chudy@google.com902ebe52012-06-29 14:21:22 +0000465 } else if (flags == SkCanvas::kClipToLayer_SaveFlag) {
chudy@google.com97cee972012-08-07 20:41:37 +0000466 mFlags->append("kClipToLayer_SaveFlag");
chudy@google.com902ebe52012-06-29 14:21:22 +0000467 } else if (flags == SkCanvas::kMatrixClip_SaveFlag) {
chudy@google.com97cee972012-08-07 20:41:37 +0000468 mFlags->append("kMatrixClip_SaveFlag");
chudy@google.com902ebe52012-06-29 14:21:22 +0000469 } else if (flags == SkCanvas::kARGB_NoClipLayer_SaveFlag) {
chudy@google.com97cee972012-08-07 20:41:37 +0000470 mFlags->append("kARGB_NoClipLayer_SaveFlag");
chudy@google.com902ebe52012-06-29 14:21:22 +0000471 } else if (flags == SkCanvas::kARGB_ClipLayer_SaveFlag) {
chudy@google.com97cee972012-08-07 20:41:37 +0000472 mFlags->append("kARGB_ClipLayer_SaveFlag");
chudy@google.com902ebe52012-06-29 14:21:22 +0000473 } else {
chudy@google.com97cee972012-08-07 20:41:37 +0000474 mFlags->append("Data Unavailable");
chudy@google.com902ebe52012-06-29 14:21:22 +0000475 }
chudy@google.com902ebe52012-06-29 14:21:22 +0000476 return mFlags;
477}
478
chudy@google.com97cee972012-08-07 20:41:37 +0000479SkString* SkObjectParser::ScalarToString(SkScalar x, const char* text) {
480 SkString* mScalar = new SkString(text);
481 mScalar->append(" ");
482 mScalar->appendScalar(x);
chudy@google.com902ebe52012-06-29 14:21:22 +0000483 return mScalar;
484}
485
chudy@google.com97cee972012-08-07 20:41:37 +0000486SkString* SkObjectParser::TextToString(const void* text, size_t byteLength) {
robertphillips@google.com94acc702012-09-06 18:43:21 +0000487 SkString* mText = new SkString(6+byteLength+1);
488 mText->append("Text: ");
489 mText->append((char*) text, byteLength);
chudy@google.com97cee972012-08-07 20:41:37 +0000490 return mText;
chudy@google.com902ebe52012-06-29 14:21:22 +0000491}