Move SkPaint::toString from debugger to SkPaint
https://codereview.appspot.com/7314092/ git-svn-id: http://skia.googlecode.com/svn/trunk@7732 2bbb7eff-a529-9590-31e7-b0007b416f81
This commit is contained in:
parent
024e523a5f
commit
791f12e6cf
@ -92,177 +92,15 @@ SkString* SkObjectParser::IRectToString(const SkIRect& rect) {
|
||||
}
|
||||
|
||||
SkString* SkObjectParser::MatrixToString(const SkMatrix& matrix) {
|
||||
SkString* mMatrix = new SkString("SkMatrix: (");
|
||||
for (int i = 0; i < 8; i++) {
|
||||
mMatrix->appendScalar(matrix.get(i));
|
||||
mMatrix->append("), (");
|
||||
}
|
||||
mMatrix->appendScalar(matrix.get(8));
|
||||
mMatrix->append(")");
|
||||
return mMatrix;
|
||||
SkString* str = new SkString("SkMatrix: ");
|
||||
matrix.toString(str);
|
||||
return str;
|
||||
}
|
||||
|
||||
SkString* SkObjectParser::PaintToString(const SkPaint& paint) {
|
||||
SkString* mPaint = new SkString("<dl><dt>SkPaint:</dt><dd><dl>");
|
||||
|
||||
SkTypeface* typeface = paint.getTypeface();
|
||||
if (NULL != typeface) {
|
||||
SkDynamicMemoryWStream ostream;
|
||||
typeface->serialize(&ostream);
|
||||
SkAutoTUnref<SkData> data(ostream.copyToData());
|
||||
|
||||
SkMemoryStream stream(data);
|
||||
SkFontDescriptor descriptor(&stream);
|
||||
|
||||
mPaint->append("<dt>Font Family Name:</dt><dd>");
|
||||
mPaint->append(descriptor.getFamilyName());
|
||||
mPaint->append("</dd><dt>Font Full Name:</dt><dd>");
|
||||
mPaint->append(descriptor.getFullName());
|
||||
mPaint->append("</dd><dt>Font PS Name:</dt><dd>");
|
||||
mPaint->append(descriptor.getPostscriptName());
|
||||
mPaint->append("</dd><dt>Font File Name:</dt><dd>");
|
||||
mPaint->append(descriptor.getFontFileName());
|
||||
mPaint->append("</dd>");
|
||||
}
|
||||
|
||||
mPaint->append("<dt>TextSize:</dt><dd>");
|
||||
mPaint->appendScalar(paint.getTextSize());
|
||||
mPaint->append("</dd>");
|
||||
|
||||
mPaint->append("<dt>TextScaleX:</dt><dd>");
|
||||
mPaint->appendScalar(paint.getTextScaleX());
|
||||
mPaint->append("</dd>");
|
||||
|
||||
mPaint->append("<dt>TextSkewX:</dt><dd>");
|
||||
mPaint->appendScalar(paint.getTextSkewX());
|
||||
mPaint->append("</dd>");
|
||||
|
||||
SkPathEffect* pathEffect = paint.getPathEffect();
|
||||
if (NULL != pathEffect) {
|
||||
mPaint->append("<dt>PathEffect:</dt><dd>");
|
||||
mPaint->append("</dd>");
|
||||
}
|
||||
|
||||
SkShader* shader = paint.getShader();
|
||||
if (NULL != shader) {
|
||||
mPaint->append("<dt>Shader:</dt><dd>");
|
||||
SkDEVCODE(shader->toString(mPaint);)
|
||||
mPaint->append("</dd>");
|
||||
}
|
||||
|
||||
SkXfermode* xfer = paint.getXfermode();
|
||||
if (NULL != xfer) {
|
||||
mPaint->append("<dt>Xfermode:</dt><dd>");
|
||||
SkDEVCODE(xfer->toString(mPaint);)
|
||||
mPaint->append("</dd>");
|
||||
}
|
||||
|
||||
SkMaskFilter* maskFilter = paint.getMaskFilter();
|
||||
if (NULL != maskFilter) {
|
||||
mPaint->append("<dt>MaskFilter:</dt><dd>");
|
||||
mPaint->append("</dd>");
|
||||
}
|
||||
|
||||
SkColorFilter* colorFilter = paint.getColorFilter();
|
||||
if (NULL != colorFilter) {
|
||||
mPaint->append("<dt>ColorFilter:</dt><dd>");
|
||||
mPaint->append("</dd>");
|
||||
}
|
||||
|
||||
SkRasterizer* rasterizer = paint.getRasterizer();
|
||||
if (NULL != rasterizer) {
|
||||
mPaint->append("<dt>Rasterizer:</dt><dd>");
|
||||
mPaint->append("</dd>");
|
||||
}
|
||||
|
||||
SkDrawLooper* looper = paint.getLooper();
|
||||
if (NULL != looper) {
|
||||
mPaint->append("<dt>DrawLooper:</dt><dd>");
|
||||
SkDEVCODE(looper->toString(mPaint);)
|
||||
mPaint->append("</dd>");
|
||||
}
|
||||
|
||||
SkImageFilter* imageFilter = paint.getImageFilter();
|
||||
if (NULL != imageFilter) {
|
||||
mPaint->append("<dt>ImageFilter:</dt><dd>");
|
||||
mPaint->append("</dd>");
|
||||
}
|
||||
|
||||
SkAnnotation* annotation = paint.getAnnotation();
|
||||
if (NULL != annotation) {
|
||||
mPaint->append("<dt>Annotation:</dt><dd>");
|
||||
mPaint->append("</dd>");
|
||||
}
|
||||
|
||||
mPaint->append("<dt>Color:</dt><dd>0x");
|
||||
SkColor color = paint.getColor();
|
||||
mPaint->appendHex(color);
|
||||
mPaint->append("</dd>");
|
||||
|
||||
mPaint->append("<dt>Stroke Width:</dt><dd>");
|
||||
mPaint->appendScalar(paint.getStrokeWidth());
|
||||
mPaint->append("</dd>");
|
||||
|
||||
mPaint->append("<dt>Stroke Miter:</dt><dd>");
|
||||
mPaint->appendScalar(paint.getStrokeMiter());
|
||||
mPaint->append("</dd>");
|
||||
|
||||
mPaint->append("<dt>Flags:</dt><dd>(");
|
||||
if (paint.getFlags()) {
|
||||
bool needSeparator = false;
|
||||
SkAddFlagToString(mPaint, paint.isAntiAlias(), "AntiAlias", &needSeparator);
|
||||
SkAddFlagToString(mPaint, paint.isFilterBitmap(), "FilterBitmap", &needSeparator);
|
||||
SkAddFlagToString(mPaint, paint.isDither(), "Dither", &needSeparator);
|
||||
SkAddFlagToString(mPaint, paint.isUnderlineText(), "UnderlineText", &needSeparator);
|
||||
SkAddFlagToString(mPaint, paint.isStrikeThruText(), "StrikeThruText", &needSeparator);
|
||||
SkAddFlagToString(mPaint, paint.isFakeBoldText(), "FakeBoldText", &needSeparator);
|
||||
SkAddFlagToString(mPaint, paint.isLinearText(), "LinearText", &needSeparator);
|
||||
SkAddFlagToString(mPaint, paint.isSubpixelText(), "SubpixelText", &needSeparator);
|
||||
SkAddFlagToString(mPaint, paint.isDevKernText(), "DevKernText", &needSeparator);
|
||||
SkAddFlagToString(mPaint, paint.isLCDRenderText(), "LCDRenderText", &needSeparator);
|
||||
SkAddFlagToString(mPaint, paint.isEmbeddedBitmapText(),
|
||||
"EmbeddedBitmapText", &needSeparator);
|
||||
SkAddFlagToString(mPaint, paint.isAutohinted(), "Autohinted", &needSeparator);
|
||||
SkAddFlagToString(mPaint, paint.isVerticalText(), "VerticalText", &needSeparator);
|
||||
SkAddFlagToString(mPaint, SkToBool(paint.getFlags() & SkPaint::kGenA8FromLCD_Flag),
|
||||
"GenA8FromLCD", &needSeparator);
|
||||
} else {
|
||||
mPaint->append("None");
|
||||
}
|
||||
mPaint->append(")</dd>");
|
||||
|
||||
mPaint->append("<dt>TextAlign:</dt><dd>");
|
||||
static const char* gTextAlignStrings[SkPaint::kAlignCount] = { "Left", "Center", "Right" };
|
||||
mPaint->append(gTextAlignStrings[paint.getTextAlign()]);
|
||||
mPaint->append("</dd>");
|
||||
|
||||
mPaint->append("<dt>CapType:</dt><dd>");
|
||||
static const char* gStrokeCapStrings[SkPaint::kCapCount] = { "Butt", "Round", "Square" };
|
||||
mPaint->append(gStrokeCapStrings[paint.getStrokeCap()]);
|
||||
mPaint->append("</dd>");
|
||||
|
||||
mPaint->append("<dt>JoinType:</dt><dd>");
|
||||
static const char* gJoinStrings[SkPaint::kJoinCount] = { "Miter", "Round", "Bevel" };
|
||||
mPaint->append(gJoinStrings[paint.getStrokeJoin()]);
|
||||
mPaint->append("</dd>");
|
||||
|
||||
mPaint->append("<dt>Style:</dt><dd>");
|
||||
static const char* gStyleStrings[SkPaint::kStyleCount] = { "Fill", "Stroke", "StrokeAndFill" };
|
||||
mPaint->append(gStyleStrings[paint.getStyle()]);
|
||||
mPaint->append("</dd>");
|
||||
|
||||
mPaint->append("<dt>TextEncoding:</dt><dd>");
|
||||
static const char* gTextEncodingStrings[] = { "UTF8", "UTF16", "UTF32", "GlyphID" };
|
||||
mPaint->append(gTextEncodingStrings[paint.getTextEncoding()]);
|
||||
mPaint->append("</dd>");
|
||||
|
||||
mPaint->append("<dt>Hinting:</dt><dd>");
|
||||
static const char* gHintingStrings[] = { "None", "Slight", "Normal", "Full" };
|
||||
mPaint->append(gHintingStrings[paint.getHinting()]);
|
||||
mPaint->append("</dd>");
|
||||
|
||||
mPaint->append("</dd></dl></dl>");
|
||||
return mPaint;
|
||||
SkString* str = new SkString;
|
||||
paint.toString(str);
|
||||
return str;
|
||||
}
|
||||
|
||||
SkString* SkObjectParser::PathToString(const SkPath& path) {
|
||||
|
@ -925,6 +925,8 @@ public:
|
||||
const SkRect& doComputeFastBounds(const SkRect& orig, SkRect* storage,
|
||||
Style) const;
|
||||
|
||||
SkDEVCODE(void toString(SkString*) const;)
|
||||
|
||||
private:
|
||||
SkTypeface* fTypeface;
|
||||
SkScalar fTextSize;
|
||||
|
@ -183,7 +183,7 @@ void SkComposeShader::toString(SkString* str) const {
|
||||
str->append(" ShaderB: ");
|
||||
fShaderB->toString(str);
|
||||
str->append(" Xfermode: ");
|
||||
// TODO: add "fMode->toString(str);" once SkXfermode::toString is added
|
||||
fMode->toString(str);
|
||||
|
||||
this->INHERITED::toString(str);
|
||||
|
||||
|
@ -8,27 +8,31 @@
|
||||
|
||||
#include "SkPaint.h"
|
||||
#include "SkAnnotation.h"
|
||||
#include "SkAutoKern.h"
|
||||
#include "SkColorFilter.h"
|
||||
#include "SkData.h"
|
||||
#include "SkDeviceProperties.h"
|
||||
#include "SkFontDescriptor.h"
|
||||
#include "SkFontHost.h"
|
||||
#include "SkGlyphCache.h"
|
||||
#include "SkImageFilter.h"
|
||||
#include "SkMaskFilter.h"
|
||||
#include "SkMaskGamma.h"
|
||||
#include "SkOrderedReadBuffer.h"
|
||||
#include "SkOrderedWriteBuffer.h"
|
||||
#include "SkPaintDefaults.h"
|
||||
#include "SkPathEffect.h"
|
||||
#include "SkRasterizer.h"
|
||||
#include "SkShader.h"
|
||||
#include "SkScalar.h"
|
||||
#include "SkScalerContext.h"
|
||||
#include "SkShader.h"
|
||||
#include "SkStringUtils.h"
|
||||
#include "SkStroke.h"
|
||||
#include "SkTextFormatParams.h"
|
||||
#include "SkTextToPathIter.h"
|
||||
#include "SkTypeface.h"
|
||||
#include "SkXfermode.h"
|
||||
#include "SkAutoKern.h"
|
||||
#include "SkGlyphCache.h"
|
||||
#include "SkPaintDefaults.h"
|
||||
#include "SkOrderedReadBuffer.h"
|
||||
#include "SkOrderedWriteBuffer.h"
|
||||
|
||||
|
||||
// define this to get a printf for out-of-range parameter in setters
|
||||
// e.g. setTextSize(-1)
|
||||
@ -2213,6 +2217,171 @@ const SkRect& SkPaint::doComputeFastBounds(const SkRect& origSrc,
|
||||
return *storage;
|
||||
}
|
||||
|
||||
#ifdef SK_DEVELOPER
|
||||
void SkPaint::toString(SkString* str) const {
|
||||
str->append("<dl><dt>SkPaint:</dt><dd><dl>");
|
||||
|
||||
SkTypeface* typeface = this->getTypeface();
|
||||
if (NULL != typeface) {
|
||||
SkDynamicMemoryWStream ostream;
|
||||
typeface->serialize(&ostream);
|
||||
SkAutoTUnref<SkData> data(ostream.copyToData());
|
||||
|
||||
SkMemoryStream stream(data);
|
||||
SkFontDescriptor descriptor(&stream);
|
||||
|
||||
str->append("<dt>Font Family Name:</dt><dd>");
|
||||
str->append(descriptor.getFamilyName());
|
||||
str->append("</dd><dt>Font Full Name:</dt><dd>");
|
||||
str->append(descriptor.getFullName());
|
||||
str->append("</dd><dt>Font PS Name:</dt><dd>");
|
||||
str->append(descriptor.getPostscriptName());
|
||||
str->append("</dd><dt>Font File Name:</dt><dd>");
|
||||
str->append(descriptor.getFontFileName());
|
||||
str->append("</dd>");
|
||||
}
|
||||
|
||||
str->append("<dt>TextSize:</dt><dd>");
|
||||
str->appendScalar(this->getTextSize());
|
||||
str->append("</dd>");
|
||||
|
||||
str->append("<dt>TextScaleX:</dt><dd>");
|
||||
str->appendScalar(this->getTextScaleX());
|
||||
str->append("</dd>");
|
||||
|
||||
str->append("<dt>TextSkewX:</dt><dd>");
|
||||
str->appendScalar(this->getTextSkewX());
|
||||
str->append("</dd>");
|
||||
|
||||
SkPathEffect* pathEffect = this->getPathEffect();
|
||||
if (NULL != pathEffect) {
|
||||
str->append("<dt>PathEffect:</dt><dd>");
|
||||
str->append("</dd>");
|
||||
}
|
||||
|
||||
SkShader* shader = this->getShader();
|
||||
if (NULL != shader) {
|
||||
str->append("<dt>Shader:</dt><dd>");
|
||||
SkDEVCODE(shader->toString(str);)
|
||||
str->append("</dd>");
|
||||
}
|
||||
|
||||
SkXfermode* xfer = this->getXfermode();
|
||||
if (NULL != xfer) {
|
||||
str->append("<dt>Xfermode:</dt><dd>");
|
||||
SkDEVCODE(xfer->toString(str);)
|
||||
str->append("</dd>");
|
||||
}
|
||||
|
||||
SkMaskFilter* maskFilter = this->getMaskFilter();
|
||||
if (NULL != maskFilter) {
|
||||
str->append("<dt>MaskFilter:</dt><dd>");
|
||||
str->append("</dd>");
|
||||
}
|
||||
|
||||
SkColorFilter* colorFilter = this->getColorFilter();
|
||||
if (NULL != colorFilter) {
|
||||
str->append("<dt>ColorFilter:</dt><dd>");
|
||||
str->append("</dd>");
|
||||
}
|
||||
|
||||
SkRasterizer* rasterizer = this->getRasterizer();
|
||||
if (NULL != rasterizer) {
|
||||
str->append("<dt>Rasterizer:</dt><dd>");
|
||||
str->append("</dd>");
|
||||
}
|
||||
|
||||
SkDrawLooper* looper = this->getLooper();
|
||||
if (NULL != looper) {
|
||||
str->append("<dt>DrawLooper:</dt><dd>");
|
||||
SkDEVCODE(looper->toString(str);)
|
||||
str->append("</dd>");
|
||||
}
|
||||
|
||||
SkImageFilter* imageFilter = this->getImageFilter();
|
||||
if (NULL != imageFilter) {
|
||||
str->append("<dt>ImageFilter:</dt><dd>");
|
||||
str->append("</dd>");
|
||||
}
|
||||
|
||||
SkAnnotation* annotation = this->getAnnotation();
|
||||
if (NULL != annotation) {
|
||||
str->append("<dt>Annotation:</dt><dd>");
|
||||
str->append("</dd>");
|
||||
}
|
||||
|
||||
str->append("<dt>Color:</dt><dd>0x");
|
||||
SkColor color = this->getColor();
|
||||
str->appendHex(color);
|
||||
str->append("</dd>");
|
||||
|
||||
str->append("<dt>Stroke Width:</dt><dd>");
|
||||
str->appendScalar(this->getStrokeWidth());
|
||||
str->append("</dd>");
|
||||
|
||||
str->append("<dt>Stroke Miter:</dt><dd>");
|
||||
str->appendScalar(this->getStrokeMiter());
|
||||
str->append("</dd>");
|
||||
|
||||
str->append("<dt>Flags:</dt><dd>(");
|
||||
if (this->getFlags()) {
|
||||
bool needSeparator = false;
|
||||
SkAddFlagToString(str, this->isAntiAlias(), "AntiAlias", &needSeparator);
|
||||
SkAddFlagToString(str, this->isFilterBitmap(), "FilterBitmap", &needSeparator);
|
||||
SkAddFlagToString(str, this->isDither(), "Dither", &needSeparator);
|
||||
SkAddFlagToString(str, this->isUnderlineText(), "UnderlineText", &needSeparator);
|
||||
SkAddFlagToString(str, this->isStrikeThruText(), "StrikeThruText", &needSeparator);
|
||||
SkAddFlagToString(str, this->isFakeBoldText(), "FakeBoldText", &needSeparator);
|
||||
SkAddFlagToString(str, this->isLinearText(), "LinearText", &needSeparator);
|
||||
SkAddFlagToString(str, this->isSubpixelText(), "SubpixelText", &needSeparator);
|
||||
SkAddFlagToString(str, this->isDevKernText(), "DevKernText", &needSeparator);
|
||||
SkAddFlagToString(str, this->isLCDRenderText(), "LCDRenderText", &needSeparator);
|
||||
SkAddFlagToString(str, this->isEmbeddedBitmapText(),
|
||||
"EmbeddedBitmapText", &needSeparator);
|
||||
SkAddFlagToString(str, this->isAutohinted(), "Autohinted", &needSeparator);
|
||||
SkAddFlagToString(str, this->isVerticalText(), "VerticalText", &needSeparator);
|
||||
SkAddFlagToString(str, SkToBool(this->getFlags() & SkPaint::kGenA8FromLCD_Flag),
|
||||
"GenA8FromLCD", &needSeparator);
|
||||
} else {
|
||||
str->append("None");
|
||||
}
|
||||
str->append(")</dd>");
|
||||
|
||||
str->append("<dt>TextAlign:</dt><dd>");
|
||||
static const char* gTextAlignStrings[SkPaint::kAlignCount] = { "Left", "Center", "Right" };
|
||||
str->append(gTextAlignStrings[this->getTextAlign()]);
|
||||
str->append("</dd>");
|
||||
|
||||
str->append("<dt>CapType:</dt><dd>");
|
||||
static const char* gStrokeCapStrings[SkPaint::kCapCount] = { "Butt", "Round", "Square" };
|
||||
str->append(gStrokeCapStrings[this->getStrokeCap()]);
|
||||
str->append("</dd>");
|
||||
|
||||
str->append("<dt>JoinType:</dt><dd>");
|
||||
static const char* gJoinStrings[SkPaint::kJoinCount] = { "Miter", "Round", "Bevel" };
|
||||
str->append(gJoinStrings[this->getStrokeJoin()]);
|
||||
str->append("</dd>");
|
||||
|
||||
str->append("<dt>Style:</dt><dd>");
|
||||
static const char* gStyleStrings[SkPaint::kStyleCount] = { "Fill", "Stroke", "StrokeAndFill" };
|
||||
str->append(gStyleStrings[this->getStyle()]);
|
||||
str->append("</dd>");
|
||||
|
||||
str->append("<dt>TextEncoding:</dt><dd>");
|
||||
static const char* gTextEncodingStrings[] = { "UTF8", "UTF16", "UTF32", "GlyphID" };
|
||||
str->append(gTextEncodingStrings[this->getTextEncoding()]);
|
||||
str->append("</dd>");
|
||||
|
||||
str->append("<dt>Hinting:</dt><dd>");
|
||||
static const char* gHintingStrings[] = { "None", "Slight", "Normal", "Full" };
|
||||
str->append(gHintingStrings[this->getHinting()]);
|
||||
str->append("</dd>");
|
||||
|
||||
str->append("</dd></dl></dl>");
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
static bool has_thick_frame(const SkPaint& paint) {
|
||||
|
@ -338,7 +338,7 @@ void SkLayerDrawLooper::toString(SkString* str) const {
|
||||
str->append("false ");
|
||||
}
|
||||
|
||||
// TODO: add "rec->fPaint.toString(str);" when SkPaint::toString is added
|
||||
rec->fPaint.toString(str);
|
||||
rec = rec->fNext;
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user