diff options
-rw-r--r-- | include/core/SkPaint.h | 6 | ||||
-rw-r--r-- | src/core/SkPaint.cpp | 8 | ||||
-rw-r--r-- | tests/PDFTaggedTest.cpp | 2 | ||||
-rw-r--r-- | tests/PaintTest.cpp | 2 | ||||
-rw-r--r-- | tools/viewer/Viewer.cpp | 95 |
5 files changed, 28 insertions, 85 deletions
diff --git a/include/core/SkPaint.h b/include/core/SkPaint.h index 057f145b1c..10725eaa09 100644 --- a/include/core/SkPaint.h +++ b/include/core/SkPaint.h @@ -183,6 +183,7 @@ public: */ void reset(); +#ifdef SK_SUPPORT_LEGACY_PAINT_FLAGS /** Sets level of glyph outline adjustment. Does not check for valid values of hintingLevel. @@ -227,7 +228,6 @@ public: }; #endif -#ifdef SK_SUPPORT_LEGACY_PAINT_FLAGS /** Returns paint settings described by SkPaint::Flags. Each setting uses one bit, and can be tested with SkPaint::Flags members. @@ -250,7 +250,7 @@ public: @return kAntiAlias_Flag state */ bool isAntiAlias() const { - return SkToBool(this->internal_getFlags() & kAntiAlias_Flag); + return SkToBool(this->internal_getFlags() & 1); } /** Requests, but does not require, that edge pixels draw opaque or with @@ -270,7 +270,7 @@ public: @return kDither_Flag state */ bool isDither() const { - return SkToBool(this->internal_getFlags() & kDither_Flag); + return SkToBool(this->internal_getFlags() & 4); } /** Requests, but does not require, to distribute color error. diff --git a/src/core/SkPaint.cpp b/src/core/SkPaint.cpp index bc99ff3dac..ca921735ee 100644 --- a/src/core/SkPaint.cpp +++ b/src/core/SkPaint.cpp @@ -196,22 +196,22 @@ void SkPaint::setFilterQuality(SkFilterQuality quality) { fBitfields.fFilterQuality = quality; } +#ifdef SK_SUPPORT_LEGACY_PAINT_FLAGS void SkPaint::setHinting(SkFontHinting hintingLevel) { fBitfields.fHinting = static_cast<unsigned>(hintingLevel); } -#ifdef SK_SUPPORT_LEGACY_PAINT_FLAGS void SkPaint::setFlags(uint32_t flags) { fBitfields.fFlags = flags; } #endif void SkPaint::setAntiAlias(bool doAA) { - this->internal_setFlags(set_clear_mask(fBitfields.fFlags, doAA, kAntiAlias_Flag)); + this->internal_setFlags(set_clear_mask(fBitfields.fFlags, doAA, 1)); } void SkPaint::setDither(bool doDither) { - this->internal_setFlags(set_clear_mask(fBitfields.fFlags, doDither, kDither_Flag)); + this->internal_setFlags(set_clear_mask(fBitfields.fFlags, doDither, 4)); } #ifdef SK_SUPPORT_LEGACY_PAINT_FONT_FIELDS @@ -437,7 +437,9 @@ static FlatFlags unpack_paint_flags(SkPaint* paint, uint32_t packed, SkFont* fon } } +#ifdef SK_SUPPORT_LEGACY_PAINT_FLAGS paint->setHinting((SkFontHinting)((packed >> 14) & BPF_Mask(kHint_BPF))); +#endif paint->setFilterQuality((SkFilterQuality)((packed >> 10) & BPF_Mask(kFilter_BPF))); return (FlatFlags)(packed & kFlatFlagMask); } diff --git a/tests/PDFTaggedTest.cpp b/tests/PDFTaggedTest.cpp index 5815ba307c..606be06540 100644 --- a/tests/PDFTaggedTest.cpp +++ b/tests/PDFTaggedTest.cpp @@ -99,7 +99,6 @@ DEF_TEST(SkPDF_tagged, r) { SkPaint paint; paint.setColor(SK_ColorBLACK); - paint.setHinting(kNo_SkFontHinting); // First page. SkCanvas* canvas = @@ -107,6 +106,7 @@ DEF_TEST(SkPDF_tagged, r) { pageSize.height()); SkPDF::SetNodeId(canvas, 2); SkFont font(nullptr, 36); + font.setHinting(kNo_SkFontHinting); const char* message = "This is the title"; canvas->translate(72, 72); canvas->drawString(message, 0, 0, font, paint); diff --git a/tests/PaintTest.cpp b/tests/PaintTest.cpp index 5ceb8a3e71..b9b6651177 100644 --- a/tests/PaintTest.cpp +++ b/tests/PaintTest.cpp @@ -310,13 +310,13 @@ DEF_TEST(Paint_getHash, r) { REPORTER_ASSERT(r, paint.getHash() != defaultHash); paint.setTypeface(nullptr); REPORTER_ASSERT(r, paint.getHash() == defaultHash); -#endif // This is part of fBitfields, the last field we hash. paint.setHinting(kSlight_SkFontHinting); REPORTER_ASSERT(r, paint.getHash() != defaultHash); paint.setHinting(kNormal_SkFontHinting); REPORTER_ASSERT(r, paint.getHash() == defaultHash); +#endif } #include "SkColorMatrixFilter.h" diff --git a/tools/viewer/Viewer.cpp b/tools/viewer/Viewer.cpp index 0f5216ddc7..6d8e3b3c95 100644 --- a/tools/viewer/Viewer.cpp +++ b/tools/viewer/Viewer.cpp @@ -52,6 +52,11 @@ #include "NIMASlide.h" #endif +enum PaintFlags { + kAntiAlias_PaintFlag = 1 << 0, + kDither_PaintFlag = 1 << 1, +}; + using namespace sk_app; static std::map<GpuPathRenderers, std::string> gPathRendererNames; @@ -380,9 +385,9 @@ Viewer::Viewer(int argc, char** argv, void* platformData) fWindow->inval(); }); fCommands.addCommand('A', "Paint", "Antialias Mode", [this]() { - if (!(fPaintOverrides.fFlags & SkPaint::kAntiAlias_Flag)) { + if (!(fPaintOverrides.fFlags & kAntiAlias_PaintFlag)) { fPaintOverrides.fAntiAlias = SkPaintFields::AntiAliasState::Alias; - fPaintOverrides.fFlags |= SkPaint::kAntiAlias_Flag; + fPaintOverrides.fFlags |= kAntiAlias_PaintFlag; fPaint.setAntiAlias(false); gSkUseAnalyticAA = gSkForceAnalyticAA = false; gSkUseDeltaAA = gSkForceDeltaAA = false; @@ -418,7 +423,7 @@ Viewer::Viewer(int argc, char** argv, void* platformData) break; case SkPaintFields::AntiAliasState::DeltaAAForced: fPaintOverrides.fAntiAlias = SkPaintFields::AntiAliasState::Alias; - fPaintOverrides.fFlags &= ~SkPaint::kAntiAlias_Flag; + fPaintOverrides.fFlags &= ~kAntiAlias_PaintFlag; gSkUseAnalyticAA = fPaintOverrides.fOriginalSkUseAnalyticAA; gSkForceAnalyticAA = fPaintOverrides.fOriginalSkForceAnalyticAA; gSkUseDeltaAA = fPaintOverrides.fOriginalSkUseDeltaAA; @@ -699,7 +704,7 @@ void Viewer::updateTitle() { } SkPaintTitleUpdater paintTitle(&title); - auto paintFlag = [this, &paintTitle](SkPaint::Flags flag, bool (SkPaint::* isFlag)() const, + auto paintFlag = [this, &paintTitle](PaintFlags flag, bool (SkPaint::* isFlag)() const, const char* on, const char* off) { if (fPaintOverrides.fFlags & flag) { @@ -707,18 +712,8 @@ void Viewer::updateTitle() { } }; - paintFlag(SkPaint::kAntiAlias_Flag, &SkPaint::isAntiAlias, "Antialias", "Alias"); - paintFlag(SkPaint::kDither_Flag, &SkPaint::isDither, "DITHER", "No Dither"); -#if 0 - paintFlag(SkPaint::kFakeBoldText_Flag, &SkPaint::isFakeBoldText, "Fake Bold", "No Fake Bold"); - paintFlag(SkPaint::kLinearText_Flag, &SkPaint::isLinearText, "Linear Text", "Non-Linear Text"); - paintFlag(SkPaint::kSubpixelText_Flag, &SkPaint::isSubpixelText, "Subpixel Text", "Pixel Text"); - paintFlag(SkPaint::kLCDRenderText_Flag, &SkPaint::isLCDRenderText, "LCD", "lcd"); - paintFlag(SkPaint::kEmbeddedBitmapText_Flag, &SkPaint::isEmbeddedBitmapText, - "Bitmap Text", "No Bitmap Text"); - paintFlag(SkPaint::kAutoHinting_Flag, &SkPaint::isAutohinted, - "Force Autohint", "No Force Autohint"); -#endif + paintFlag(kAntiAlias_PaintFlag, &SkPaint::isAntiAlias, "Antialias", "Alias"); + paintFlag(kAntiAlias_PaintFlag, &SkPaint::isDither, "DITHER", "No Dither"); if (fFontOverrides.fHinting) { switch (fFont.getHinting()) { @@ -1050,39 +1045,16 @@ public: if (fFontOverrides->fHinting) { font->writable()->setHinting(fFont->getHinting()); } -#if 0 - if (fFontOverrides->fFlags & SkPaint::kAntiAlias_Flag) { - paint->writable()->setAntiAlias(fPaint->isAntiAlias()); - } - if (fFontOverrides->fFlags & SkPaint::kFakeBoldText_Flag) { - paint->writable()->setFakeBoldText(fPaint->isFakeBoldText()); - } - if (fFontOverrides->fFlags & SkPaint::kLinearText_Flag) { - paint->writable()->setLinearText(fPaint->isLinearText()); - } - if (fFontOverrides->fFlags & SkPaint::kSubpixelText_Flag) { - paint->writable()->setSubpixelText(fPaint->isSubpixelText()); - } - if (fFontOverrides->fFlags & SkPaint::kLCDRenderText_Flag) { - paint->writable()->setLCDRenderText(fPaint->isLCDRenderText()); - } - if (fFontOverrides->fFlags & SkPaint::kEmbeddedBitmapText_Flag) { - paint->writable()->setEmbeddedBitmapText(fPaint->isEmbeddedBitmapText()); - } - if (fFontOverrides->fFlags & SkPaint::kAutoHinting_Flag) { - paint->writable()->setAutohinted(fPaint->isAutohinted()); - } -#endif return true; } bool onFilter(SkTCopyOnFirstWrite<SkPaint>* paint, Type) const override { if (*paint == nullptr) { return true; } - if (fPaintOverrides->fFlags & SkPaint::kAntiAlias_Flag) { + if (fPaintOverrides->fFlags & kAntiAlias_PaintFlag) { paint->writable()->setAntiAlias(fPaint->isAntiAlias()); } - if (fPaintOverrides->fFlags & SkPaint::kDither_Flag) { + if (fPaintOverrides->fFlags & kDither_PaintFlag) { paint->writable()->setDither(fPaint->isDither()); } return true; @@ -1646,7 +1618,7 @@ void Viewer::drawImGui() { } int aliasIdx = 0; - if (fPaintOverrides.fFlags & SkPaint::kAntiAlias_Flag) { + if (fPaintOverrides.fFlags & kAntiAlias_PaintFlag) { aliasIdx = SkTo<int>(fPaintOverrides.fAntiAlias) + 1; } if (ImGui::Combo("Anti-Alias", &aliasIdx, @@ -1659,9 +1631,9 @@ void Viewer::drawImGui() { gSkForceDeltaAA = fPaintOverrides.fOriginalSkForceDeltaAA; if (aliasIdx == 0) { fPaintOverrides.fAntiAlias = SkPaintFields::AntiAliasState::Alias; - fPaintOverrides.fFlags &= ~SkPaint::kAntiAlias_Flag; + fPaintOverrides.fFlags &= ~kAntiAlias_PaintFlag; } else { - fPaintOverrides.fFlags |= SkPaint::kAntiAlias_Flag; + fPaintOverrides.fFlags |= kAntiAlias_PaintFlag; fPaintOverrides.fAntiAlias =SkTo<SkPaintFields::AntiAliasState>(aliasIdx-1); fPaint.setAntiAlias(aliasIdx > 1); switch (fPaintOverrides.fAntiAlias) { @@ -1693,7 +1665,7 @@ void Viewer::drawImGui() { } auto paintFlag = [this, ¶msChanged](const char* label, const char* items, - SkPaint::Flags flag, + PaintFlags flag, bool (SkPaint::* isFlag)() const, void (SkPaint::* setFlag)(bool) ) { @@ -1714,39 +1686,8 @@ void Viewer::drawImGui() { paintFlag("Dither", "Default\0No Dither\0Dither\0\0", - SkPaint::kDither_Flag, + kDither_PaintFlag, &SkPaint::isDither, &SkPaint::setDither); -#if 0 - paintFlag("Fake Bold Glyphs", - "Default\0No Fake Bold\0Fake Bold\0\0", - SkPaint::kFakeBoldText_Flag, - &SkPaint::isFakeBoldText, &SkPaint::setFakeBoldText); - - paintFlag("Linear Text", - "Default\0No Linear Text\0Linear Text\0\0", - SkPaint::kLinearText_Flag, - &SkPaint::isLinearText, &SkPaint::setLinearText); - - paintFlag("Subpixel Position Glyphs", - "Default\0Pixel Text\0Subpixel Text\0\0", - SkPaint::kSubpixelText_Flag, - &SkPaint::isSubpixelText, &SkPaint::setSubpixelText); - - paintFlag("Subpixel Anti-Alias", - "Default\0lcd\0LCD\0\0", - SkPaint::kLCDRenderText_Flag, - &SkPaint::isLCDRenderText, &SkPaint::setLCDRenderText); - - paintFlag("Embedded Bitmap Text", - "Default\0No Embedded Bitmaps\0Embedded Bitmaps\0\0", - SkPaint::kEmbeddedBitmapText_Flag, - &SkPaint::isEmbeddedBitmapText, &SkPaint::setEmbeddedBitmapText); - - paintFlag("Force Auto-Hinting", - "Default\0No Force Auto-Hinting\0Force Auto-Hinting\0\0", - SkPaint::kAutoHinting_Flag, - &SkPaint::isAutohinted, &SkPaint::setAutohinted); -#endif ImGui::Checkbox("Override TextSize", &fFontOverrides.fTextSize); if (fFontOverrides.fTextSize) { ImGui::DragFloat2("TextRange", fFontOverrides.fTextSizeRange, |