diff options
author | 2018-05-20 23:15:43 +0000 | |
---|---|---|
committer | 2018-05-20 23:15:48 +0000 | |
commit | 32a4910e57b1fdd3c8671de1ee85e05ca21d079f (patch) | |
tree | 9ae07529b8f56406fa5890827782b592895245a0 /src/core | |
parent | 5191880cbf3ee4d122b0d11b4945fbab0784fda7 (diff) |
Revert "remove toString"
This reverts commit 5191880cbf3ee4d122b0d11b4945fbab0784fda7.
Reason for revert: broke flutter
Original change's description:
> remove toString
>
> toString may have been used by obsolete debugger only
> find out if that is so
>
> R=​brianosman@google.com,bsalomon@google.com
>
> Docs-Preview: https://skia.org/?cl=119894
> Bug:830651
> Change-Id: I737f19b7d3fbc869bea2f443fa3b5ed7c1393ffd
> Reviewed-on: https://skia-review.googlesource.com/119894
> Commit-Queue: Cary Clark <caryclark@google.com>
> Reviewed-by: Brian Salomon <bsalomon@google.com>
TBR=bsalomon@google.com,brianosman@google.com,caryclark@google.com,caryclark@skia.org
Change-Id: I9f81de6c3615ee0608bcea9081b77239b4b8816c
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: 830651
Reviewed-on: https://skia-review.googlesource.com/129340
Reviewed-by: Cary Clark <caryclark@google.com>
Commit-Queue: Cary Clark <caryclark@google.com>
Diffstat (limited to 'src/core')
-rw-r--r-- | src/core/SkBitmap.cpp | 27 | ||||
-rw-r--r-- | src/core/SkBlitter.cpp | 13 | ||||
-rw-r--r-- | src/core/SkBlurImageFilter.cpp | 13 | ||||
-rw-r--r-- | src/core/SkBlurMF.cpp | 18 | ||||
-rw-r--r-- | src/core/SkColorFilter.cpp | 15 | ||||
-rw-r--r-- | src/core/SkColorMatrixFilterRowMajor255.cpp | 13 | ||||
-rw-r--r-- | src/core/SkColorMatrixFilterRowMajor255.h | 2 | ||||
-rw-r--r-- | src/core/SkDraw_vertices.cpp | 10 | ||||
-rw-r--r-- | src/core/SkImageFilter.cpp | 29 | ||||
-rw-r--r-- | src/core/SkLocalMatrixImageFilter.cpp | 5 | ||||
-rw-r--r-- | src/core/SkLocalMatrixImageFilter.h | 1 | ||||
-rw-r--r-- | src/core/SkMaskFilter.cpp | 14 | ||||
-rw-r--r-- | src/core/SkMatrix.cpp | 8 | ||||
-rw-r--r-- | src/core/SkMatrixImageFilter.cpp | 22 | ||||
-rw-r--r-- | src/core/SkMatrixImageFilter.h | 1 | ||||
-rw-r--r-- | src/core/SkModeColorFilter.cpp | 7 | ||||
-rw-r--r-- | src/core/SkModeColorFilter.h | 2 | ||||
-rw-r--r-- | src/core/SkPaint.cpp | 149 | ||||
-rw-r--r-- | src/core/SkPathEffect.cpp | 27 | ||||
-rw-r--r-- | src/core/SkStringUtils.cpp | 10 | ||||
-rw-r--r-- | src/core/SkStringUtils.h | 10 |
21 files changed, 394 insertions, 2 deletions
diff --git a/src/core/SkBitmap.cpp b/src/core/SkBitmap.cpp index 91510007cf..579573367f 100644 --- a/src/core/SkBitmap.cpp +++ b/src/core/SkBitmap.cpp @@ -633,6 +633,33 @@ void SkBitmap::validate() const { } #endif +#include "SkString.h" +void SkBitmap::toString(SkString* str) const { + + static const char* gColorTypeNames[kLastEnum_SkColorType + 1] = { + "UNKNOWN", "A8", "565", "4444", "RGBA", "BGRA", "INDEX8", + }; + + str->appendf("bitmap: ((%d, %d) %s", this->width(), this->height(), + gColorTypeNames[this->colorType()]); + + str->append(" ("); + if (this->isOpaque()) { + str->append("opaque"); + } else { + str->append("transparent"); + } + if (this->isImmutable()) { + str->append(", immutable"); + } else { + str->append(", not-immutable"); + } + str->append(")"); + + str->appendf(" pixelref:%p", this->pixelRef()); + str->append(")"); +} + /////////////////////////////////////////////////////////////////////////////// bool SkBitmap::peekPixels(SkPixmap* pmap) const { diff --git a/src/core/SkBlitter.cpp b/src/core/SkBlitter.cpp index 44cc8f1734..5cf8147019 100644 --- a/src/core/SkBlitter.cpp +++ b/src/core/SkBlitter.cpp @@ -861,6 +861,19 @@ public: typedef Context INHERITED; }; + void toString(SkString* str) const override { + str->append("Sk3DShader: ("); + + if (fProxy) { + str->append("Proxy: "); + as_SB(fProxy)->toString(str); + } + + this->INHERITED::toString(str); + + str->append(")"); + } + SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(Sk3DShader) protected: diff --git a/src/core/SkBlurImageFilter.cpp b/src/core/SkBlurImageFilter.cpp index 818644818c..a53d061b37 100644 --- a/src/core/SkBlurImageFilter.cpp +++ b/src/core/SkBlurImageFilter.cpp @@ -41,6 +41,7 @@ public: SkRect computeFastBounds(const SkRect&) const override; + void toString(SkString* str) const override; SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkBlurImageFilterImpl) protected: @@ -696,3 +697,15 @@ SkIRect SkBlurImageFilterImpl::onFilterNodeBounds(const SkIRect& src, const SkMa SkVector sigma = map_sigma(fSigma, ctm); return src.makeOutset(SkScalarCeilToInt(sigma.x() * 3), SkScalarCeilToInt(sigma.y() * 3)); } + +void SkBlurImageFilterImpl::toString(SkString* str) const { + str->appendf("SkBlurImageFilterImpl: ("); + str->appendf("sigma: (%f, %f) tileMode: %d input (", fSigma.fWidth, fSigma.fHeight, + static_cast<int>(fTileMode)); + + if (this->getInput(0)) { + this->getInput(0)->toString(str); + } + + str->append("))"); +} diff --git a/src/core/SkBlurMF.cpp b/src/core/SkBlurMF.cpp index 23cca83655..d716c33f68 100644 --- a/src/core/SkBlurMF.cpp +++ b/src/core/SkBlurMF.cpp @@ -77,6 +77,7 @@ public: void computeFastBounds(const SkRect&, SkRect*) const override; bool asABlur(BlurRec*) const override; + void toString(SkString* str) const override; SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkBlurMaskFilterImpl) protected: @@ -991,6 +992,23 @@ sk_sp<GrTextureProxy> SkBlurMaskFilterImpl::filterMaskGPU(GrContext* context, #endif // SK_SUPPORT_GPU + +void SkBlurMaskFilterImpl::toString(SkString* str) const { + str->append("SkBlurMaskFilterImpl: ("); + + str->append("sigma: "); + str->appendScalar(fSigma); + str->append(" "); + + static const char* gStyleName[kLastEnum_SkBlurStyle + 1] = { + "normal", "solid", "outer", "inner" + }; + + str->appendf("style: %s ", gStyleName[fBlurStyle]); + str->appendf("respectCTM: %s ", fRespectCTM ? "true" : "false"); + str->append(")"); +} + void sk_register_blur_maskfilter_createproc() { SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkBlurMaskFilterImpl) } diff --git a/src/core/SkColorFilter.cpp b/src/core/SkColorFilter.cpp index 41ebb42669..5362c1aca7 100644 --- a/src/core/SkColorFilter.cpp +++ b/src/core/SkColorFilter.cpp @@ -98,6 +98,15 @@ public: return fOuter->getFlags() & fInner->getFlags(); } + void toString(SkString* str) const override { + SkString outerS, innerS; + fOuter->toString(&outerS); + fInner->toString(&innerS); + // These strings can be long. SkString::appendf has limitations. + str->append(SkStringPrintf("SkComposeColorFilter: outer(%s) inner(%s)", outerS.c_str(), + innerS.c_str())); + } + void onAppendStages(SkRasterPipeline* p, SkColorSpace* dst, SkArenaAlloc* scratch, bool shaderIsOpaque) const override { bool innerIsOpaque = shaderIsOpaque; @@ -216,6 +225,8 @@ public: } #endif + void toString(SkString* str) const override; + SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkSRGBGammaColorFilter) void onAppendStages(SkRasterPipeline* p, SkColorSpace*, SkArenaAlloc* alloc, @@ -256,6 +267,10 @@ sk_sp<SkFlattenable> SkSRGBGammaColorFilter::CreateProc(SkReadBuffer& buffer) { return sk_sp<SkFlattenable>(new SkSRGBGammaColorFilter(static_cast<Direction>(dir))); } +void SkSRGBGammaColorFilter::toString(SkString* str) const { + str->append("srgbgamma"); +} + template <SkSRGBGammaColorFilter::Direction dir> sk_sp<SkColorFilter> MakeSRGBGammaCF() { static SkColorFilter* gSingleton = new SkSRGBGammaColorFilter(dir); diff --git a/src/core/SkColorMatrixFilterRowMajor255.cpp b/src/core/SkColorMatrixFilterRowMajor255.cpp index 98fa95ae16..09b0e76136 100644 --- a/src/core/SkColorMatrixFilterRowMajor255.cpp +++ b/src/core/SkColorMatrixFilterRowMajor255.cpp @@ -299,6 +299,19 @@ std::unique_ptr<GrFragmentProcessor> SkColorMatrixFilterRowMajor255::asFragmentP #endif +void SkColorMatrixFilterRowMajor255::toString(SkString* str) const { + str->append("SkColorMatrixFilterRowMajor255: "); + + str->append("matrix: ("); + for (int i = 0; i < 20; ++i) { + str->appendScalar(fMatrix[i]); + if (i < 19) { + str->append(", "); + } + } + str->append(")"); +} + /////////////////////////////////////////////////////////////////////////////// sk_sp<SkColorFilter> SkColorFilter::MakeMatrixFilterRowMajor255(const SkScalar array[20]) { diff --git a/src/core/SkColorMatrixFilterRowMajor255.h b/src/core/SkColorMatrixFilterRowMajor255.h index c2a38cf42f..0260379ef9 100644 --- a/src/core/SkColorMatrixFilterRowMajor255.h +++ b/src/core/SkColorMatrixFilterRowMajor255.h @@ -27,6 +27,8 @@ public: GrContext*, const GrColorSpaceInfo&) const override; #endif + void toString(SkString* str) const override; + SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkColorMatrixFilter) protected: diff --git a/src/core/SkDraw_vertices.cpp b/src/core/SkDraw_vertices.cpp index de6eaea5b6..000be07cea 100644 --- a/src/core/SkDraw_vertices.cpp +++ b/src/core/SkDraw_vertices.cpp @@ -77,6 +77,8 @@ public: bool isOpaque() const override { return fIsOpaque; } + void toString(SkString* str) const override; + // For serialization. This will never be called. Factory getFactory() const override { SK_ABORT("not reached"); return nullptr; } @@ -97,6 +99,14 @@ private: typedef SkShaderBase INHERITED; }; +void SkTriColorShader::toString(SkString* str) const { + str->append("SkTriColorShader: ("); + + this->INHERITED::toString(str); + + str->append(")"); +} + static bool SK_WARN_UNUSED_RESULT update_tricolor_matrix(const SkMatrix& ctmInv, const SkPoint pts[], const SkPM4f colors[], int index0, int index1, int index2, Matrix43* result) { diff --git a/src/core/SkImageFilter.cpp b/src/core/SkImageFilter.cpp index 77095fb5b9..aabfef09bb 100644 --- a/src/core/SkImageFilter.cpp +++ b/src/core/SkImageFilter.cpp @@ -28,6 +28,35 @@ #include "SkGr.h" #endif +void SkImageFilter::CropRect::toString(SkString* str) const { + if (!fFlags) { + return; + } + + str->appendf("cropRect ("); + if (fFlags & CropRect::kHasLeft_CropEdge) { + str->appendf("%.2f, ", fRect.fLeft); + } else { + str->appendf("X, "); + } + if (fFlags & CropRect::kHasTop_CropEdge) { + str->appendf("%.2f, ", fRect.fTop); + } else { + str->appendf("X, "); + } + if (fFlags & CropRect::kHasWidth_CropEdge) { + str->appendf("%.2f, ", fRect.width()); + } else { + str->appendf("X, "); + } + if (fFlags & CropRect::kHasHeight_CropEdge) { + str->appendf("%.2f", fRect.height()); + } else { + str->appendf("X"); + } + str->appendf(") "); +} + void SkImageFilter::CropRect::applyTo(const SkIRect& imageBounds, const SkMatrix& ctm, bool embiggen, diff --git a/src/core/SkLocalMatrixImageFilter.cpp b/src/core/SkLocalMatrixImageFilter.cpp index fb484c9448..07db7aff77 100644 --- a/src/core/SkLocalMatrixImageFilter.cpp +++ b/src/core/SkLocalMatrixImageFilter.cpp @@ -67,3 +67,8 @@ const { } return this->refMe(); } + +void SkLocalMatrixImageFilter::toString(SkString* str) const { + str->append("SkLocalMatrixImageFilter: ("); + str->append(")"); +} diff --git a/src/core/SkLocalMatrixImageFilter.h b/src/core/SkLocalMatrixImageFilter.h index 79cc73a4fd..89a7e9d145 100644 --- a/src/core/SkLocalMatrixImageFilter.h +++ b/src/core/SkLocalMatrixImageFilter.h @@ -18,6 +18,7 @@ class SkLocalMatrixImageFilter : public SkImageFilter { public: static sk_sp<SkImageFilter> Make(const SkMatrix& localM, sk_sp<SkImageFilter> input); + void toString(SkString* str) const override; SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkLocalMatrixImageFilter) protected: diff --git a/src/core/SkMaskFilter.cpp b/src/core/SkMaskFilter.cpp index 3ff4f93405..52cdc3cc9b 100644 --- a/src/core/SkMaskFilter.cpp +++ b/src/core/SkMaskFilter.cpp @@ -405,6 +405,7 @@ public: } SkMask::Format getFormat() const override { return SkMask::kA8_Format; } + void toString(SkString* str) const override; SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkComposeMF) protected: @@ -469,6 +470,10 @@ sk_sp<SkFlattenable> SkComposeMF::CreateProc(SkReadBuffer& buffer) { return SkMaskFilter::MakeCompose(std::move(outer), std::move(inner)); } +void SkComposeMF::toString(SkString* str) const { + str->set("SkComposeMF:"); +} + /////////////////////////////////////////////////////////////////////////////////////////////////// class SkCombineMF : public SkMaskFilterBase { @@ -493,6 +498,7 @@ public: SkMask::Format getFormat() const override { return SkMask::kA8_Format; } + void toString(SkString* str) const override; SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkCombineMF) protected: @@ -619,6 +625,10 @@ sk_sp<SkFlattenable> SkCombineMF::CreateProc(SkReadBuffer& buffer) { return SkMaskFilter::MakeCombine(std::move(dst), std::move(src), mode); } +void SkCombineMF::toString(SkString* str) const { + str->set("SkCombineMF:"); +} + /////////////////////////////////////////////////////////////////////////////////////////////////// class SkMatrixMF : public SkMaskFilterBase { @@ -642,6 +652,10 @@ public: SkMask::Format getFormat() const override { return as_MFB(fFilter)->getFormat(); } + void toString(SkString* str) const override { + str->set("SkMatrixMF:"); + } + SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkLocalMatrixMF) protected: diff --git a/src/core/SkMatrix.cpp b/src/core/SkMatrix.cpp index d3bdb38b78..990f5b4652 100644 --- a/src/core/SkMatrix.cpp +++ b/src/core/SkMatrix.cpp @@ -1659,10 +1659,14 @@ size_t SkMatrix::readFromMemory(const void* buffer, size_t length) { void SkMatrix::dump() const { SkString str; - str.appendf("[%8.4f %8.4f %8.4f][%8.4f %8.4f %8.4f][%8.4f %8.4f %8.4f]", + this->toString(&str); + SkDebugf("%s\n", str.c_str()); +} + +void SkMatrix::toString(SkString* str) const { + str->appendf("[%8.4f %8.4f %8.4f][%8.4f %8.4f %8.4f][%8.4f %8.4f %8.4f]", fMat[0], fMat[1], fMat[2], fMat[3], fMat[4], fMat[5], fMat[6], fMat[7], fMat[8]); - SkDebugf("%s\n", str.c_str()); } /////////////////////////////////////////////////////////////////////////////// diff --git a/src/core/SkMatrixImageFilter.cpp b/src/core/SkMatrixImageFilter.cpp index e56abbc96a..47b0d4245e 100644 --- a/src/core/SkMatrixImageFilter.cpp +++ b/src/core/SkMatrixImageFilter.cpp @@ -143,3 +143,25 @@ SkIRect SkMatrixImageFilter::onFilterNodeBounds(const SkIRect& src, const SkMatr return result; } + +void SkMatrixImageFilter::toString(SkString* str) const { + str->appendf("SkMatrixImageFilter: ("); + + str->appendf("transform: (%f %f %f %f %f %f %f %f %f)", + fTransform[SkMatrix::kMScaleX], + fTransform[SkMatrix::kMSkewX], + fTransform[SkMatrix::kMTransX], + fTransform[SkMatrix::kMSkewY], + fTransform[SkMatrix::kMScaleY], + fTransform[SkMatrix::kMTransY], + fTransform[SkMatrix::kMPersp0], + fTransform[SkMatrix::kMPersp1], + fTransform[SkMatrix::kMPersp2]); + + str->append("<dt>FilterLevel:</dt><dd>"); + static const char* gFilterLevelStrings[] = { "None", "Low", "Medium", "High" }; + str->append(gFilterLevelStrings[fFilterQuality]); + str->append("</dd>"); + + str->appendf(")"); +} diff --git a/src/core/SkMatrixImageFilter.h b/src/core/SkMatrixImageFilter.h index 1a6bcf5ebf..b43df9166d 100644 --- a/src/core/SkMatrixImageFilter.h +++ b/src/core/SkMatrixImageFilter.h @@ -31,6 +31,7 @@ public: SkRect computeFastBounds(const SkRect&) const override; + void toString(SkString* str) const override; SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkMatrixImageFilter) protected: diff --git a/src/core/SkModeColorFilter.cpp b/src/core/SkModeColorFilter.cpp index 7e1e26e91a..b3d6aa2e8d 100644 --- a/src/core/SkModeColorFilter.cpp +++ b/src/core/SkModeColorFilter.cpp @@ -31,6 +31,13 @@ SkModeColorFilter::SkModeColorFilter(SkColor color, SkBlendMode mode) { fPMColor = SkPreMultiplyColor(fColor); } +void SkModeColorFilter::toString(SkString* str) const { + str->append("SkModeColorFilter: color: 0x"); + str->appendHex(fColor); + str->append(" mode: "); + str->append(SkBlendMode_Name(fMode)); +} + bool SkModeColorFilter::asColorMode(SkColor* color, SkBlendMode* mode) const { if (color) { *color = fColor; diff --git a/src/core/SkModeColorFilter.h b/src/core/SkModeColorFilter.h index 025839fa47..a2a629f2c1 100644 --- a/src/core/SkModeColorFilter.h +++ b/src/core/SkModeColorFilter.h @@ -22,6 +22,8 @@ public: bool asColorMode(SkColor*, SkBlendMode*) const override; uint32_t getFlags() const override; + void toString(SkString* str) const override; + #if SK_SUPPORT_GPU std::unique_ptr<GrFragmentProcessor> asFragmentProcessor( GrContext*, const GrColorSpaceInfo&) const override; diff --git a/src/core/SkPaint.cpp b/src/core/SkPaint.cpp index c76b98121e..82dec0ea8c 100644 --- a/src/core/SkPaint.cpp +++ b/src/core/SkPaint.cpp @@ -1384,6 +1384,155 @@ const SkRect& SkPaint::doComputeFastBounds(const SkRect& origSrc, return *storage; } +void SkPaint::toString(SkString* str) const { + str->append("<dl><dt>SkPaint:</dt><dd><dl>"); + + SkTypeface* typeface = this->getTypeface(); + if (typeface) { + SkDynamicMemoryWStream ostream; + typeface->serialize(&ostream); + std::unique_ptr<SkStreamAsset> istream(ostream.detachAsStream()); + + SkFontDescriptor descriptor; + if (!SkFontDescriptor::Deserialize(istream.get(), &descriptor)) { + str->append("<dt>FontDescriptor deserialization failed</dt>"); + } else { + 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>"); + } + } + + 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 (pathEffect) { + str->append("<dt>PathEffect:</dt><dd>"); + pathEffect->toString(str); + str->append("</dd>"); + } + + if (const auto* shader = as_SB(this->getShader())) { + str->append("<dt>Shader:</dt><dd>"); + shader->toString(str); + str->append("</dd>"); + } + + if (!this->isSrcOver()) { + str->appendf("<dt>Xfermode:</dt><dd>%d</dd>", fBlendMode); + } + + SkMaskFilter* maskFilter = this->getMaskFilter(); + if (maskFilter) { + str->append("<dt>MaskFilter:</dt><dd>"); + as_MFB(maskFilter)->toString(str); + str->append("</dd>"); + } + + SkColorFilter* colorFilter = this->getColorFilter(); + if (colorFilter) { + str->append("<dt>ColorFilter:</dt><dd>"); + colorFilter->toString(str); + str->append("</dd>"); + } + + SkDrawLooper* looper = this->getLooper(); + if (looper) { + str->append("<dt>DrawLooper:</dt><dd>"); + looper->toString(str); + str->append("</dd>"); + } + + SkImageFilter* imageFilter = this->getImageFilter(); + if (imageFilter) { + str->append("<dt>ImageFilter:</dt><dd>"); + imageFilter->toString(str); + 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->isDither(), "Dither", &needSeparator); + SkAddFlagToString(str, this->isFakeBoldText(), "FakeBoldText", &needSeparator); + SkAddFlagToString(str, this->isLinearText(), "LinearText", &needSeparator); + SkAddFlagToString(str, this->isSubpixelText(), "SubpixelText", &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); + } else { + str->append("None"); + } + str->append(")</dd>"); + + str->append("<dt>FilterLevel:</dt><dd>"); + static const char* gFilterQualityStrings[] = { "None", "Low", "Medium", "High" }; + str->append(gFilterQualityStrings[this->getFilterQuality()]); + 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>"); +} + /////////////////////////////////////////////////////////////////////////////// static bool has_thick_frame(const SkPaint& paint) { diff --git a/src/core/SkPathEffect.cpp b/src/core/SkPathEffect.cpp index e315275196..09d7e542c7 100644 --- a/src/core/SkPathEffect.cpp +++ b/src/core/SkPathEffect.cpp @@ -51,10 +51,23 @@ protected: sk_sp<SkPathEffect> fPE0; sk_sp<SkPathEffect> fPE1; + void toString(SkString* str) const override; + private: typedef SkPathEffect INHERITED; }; +void SkPairPathEffect::toString(SkString* str) const { + str->appendf("first: "); + if (fPE0) { + fPE0->toString(str); + } + str->appendf(" second: "); + if (fPE1) { + fPE1->toString(str); + } +} + /////////////////////////////////////////////////////////////////////////////////////////////////// /** \class SkComposePathEffect @@ -91,6 +104,7 @@ public: } + void toString(SkString* str) const override; SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkComposePathEffect) #ifdef SK_BUILD_FOR_ANDROID_FRAMEWORK @@ -116,6 +130,12 @@ sk_sp<SkFlattenable> SkComposePathEffect::CreateProc(SkReadBuffer& buffer) { return SkComposePathEffect::Make(std::move(pe0), std::move(pe1)); } +void SkComposePathEffect::toString(SkString* str) const { + str->appendf("SkComposePathEffect: ("); + this->INHERITED::toString(str); + str->appendf(")"); +} + /////////////////////////////////////////////////////////////////////////////// /** \class SkSumPathEffect @@ -148,6 +168,7 @@ public: } + void toString(SkString* str) const override; SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkSumPathEffect) #ifdef SK_BUILD_FOR_ANDROID_FRAMEWORK @@ -173,6 +194,12 @@ sk_sp<SkFlattenable> SkSumPathEffect::CreateProc(SkReadBuffer& buffer) { return SkSumPathEffect::Make(pe0, pe1); } +void SkSumPathEffect::toString(SkString* str) const { + str->appendf("SkSumPathEffect: ("); + this->INHERITED::toString(str); + str->appendf(")"); +} + /////////////////////////////////////////////////////////////////////////////////////////////////// sk_sp<SkPathEffect> SkPathEffect::MakeSum(sk_sp<SkPathEffect> first, sk_sp<SkPathEffect> second) { diff --git a/src/core/SkStringUtils.cpp b/src/core/SkStringUtils.cpp index 00d8c8787c..9745b2325b 100644 --- a/src/core/SkStringUtils.cpp +++ b/src/core/SkStringUtils.cpp @@ -9,6 +9,16 @@ #include "SkStringUtils.h" #include "SkUtils.h" +void SkAddFlagToString(SkString* string, bool flag, const char* flagStr, bool* needSeparator) { + if (flag) { + if (*needSeparator) { + string->append("|"); + } + string->append(flagStr); + *needSeparator = true; + } +} + void SkAppendScalar(SkString* str, SkScalar value, SkScalarAsStringType asType) { switch (asType) { case kHex_SkScalarAsStringType: diff --git a/src/core/SkStringUtils.h b/src/core/SkStringUtils.h index ac587d6717..f2a1443ff4 100644 --- a/src/core/SkStringUtils.h +++ b/src/core/SkStringUtils.h @@ -12,6 +12,16 @@ class SkString; +/** + * Add 'flagStr' to 'string' and set 'needSeparator' to true only if 'flag' is + * true. If 'needSeparator' is true append a '|' before 'flagStr'. This method + * is used to streamline the creation of ASCII flag strings within the toString + * methods. + */ +void SkAddFlagToString(SkString* string, bool flag, + const char* flagStr, bool* needSeparator); + + enum SkScalarAsStringType { kDec_SkScalarAsStringType, kHex_SkScalarAsStringType, |