diff options
author | Cary Clark <caryclark@google.com> | 2018-05-31 12:27:33 +0000 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2018-05-31 12:27:44 +0000 |
commit | 89ad31e97cc886dc6417d9ee2ec79998c1a09912 (patch) | |
tree | 631fa1c6554a398d32c6ab2eb6b003dc0e581e0c /src/core/SkPaint.cpp | |
parent | 92e37b6d79f12ccfaaf7671413316952d182267d (diff) |
Revert "Reland "remove toString""
This reverts commit 92e37b6d79f12ccfaaf7671413316952d182267d.
Reason for revert: toString still used by flutter
Original change's description:
> Reland "remove toString"
>
> This reverts commit 32a4910e57b1fdd3c8671de1ee85e05ca21d079f.
>
> Reason for revert: SkMatrix::toString use has been removed from flutter and has been picked up in fuchsia
>
> Original change's description:
> > 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>
>
> TBR=bsalomon@google.com,brianosman@google.com,caryclark@google.com,caryclark@skia.org
>
> # Not skipping CQ checks because original CL landed > 1 day ago.
>
> Bug: 830651
> Change-Id: Ida8725b6051132d8c46faf99358a8fcc1bcabf34
> Reviewed-on: https://skia-review.googlesource.com/129623
> Reviewed-by: Cary Clark <caryclark@skia.org>
> Reviewed-by: Cary Clark <caryclark@google.com>
> Commit-Queue: Cary Clark <caryclark@google.com>
TBR=bsalomon@google.com,brianosman@google.com,caryclark@google.com,caryclark@skia.org
Change-Id: Iafc59ffc1b3db67c520ba31bf12d68e1b46c0ea2
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: 830651
Reviewed-on: https://skia-review.googlesource.com/131082
Reviewed-by: Cary Clark <caryclark@google.com>
Commit-Queue: Cary Clark <caryclark@google.com>
Diffstat (limited to 'src/core/SkPaint.cpp')
-rw-r--r-- | src/core/SkPaint.cpp | 149 |
1 files changed, 149 insertions, 0 deletions
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) { |