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