From e005edd3a5deb602beec59f59cdc8b14d3764d58 Mon Sep 17 00:00:00 2001 From: Leon Scroggins Date: Fri, 17 Feb 2017 22:48:51 +0000 Subject: Revert "hide deprecated underline and strikethru" This reverts commit a01bf9ab748836fc4bf271bd5024151bf1ce2e88. Reason for revert: Breaking Android merge. They access setUnderlineText on their subclass of SkPaint. Original change's description: > hide deprecated underline and strikethru > > BUG=skia:6250 > > Change-Id: I85395e4960b16ab91237a74ff35e5b7588965512 > Reviewed-on: https://skia-review.googlesource.com/8600 > Reviewed-by: Ben Wagner > Commit-Queue: Mike Reed > TBR=bungeman@google.com,reed@google.com,reviews@skia.org NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=skia:6250 Change-Id: If55f69f061dc4439ca2faa62807a9c5694ebbeb4 Reviewed-on: https://skia-review.googlesource.com/8687 Reviewed-by: Leon Scroggins Commit-Queue: Leon Scroggins --- fuzz/FilterFuzz.cpp | 2 ++ fuzz/FuzzDrawFunctions.cpp | 4 ++++ gm/texteffects.cpp | 32 ++++++++++++++++++++++++++++++++ gn/android_framework_defines.gni | 1 - include/core/SkPaint.h | 33 +++++++++++++++++++++------------ public.bzl | 1 - samplecode/SampleFilterFuzz.cpp | 2 ++ src/core/SkPaint.cpp | 10 ++++++++++ src/core/SkTextBlob.cpp | 2 ++ tests/TextBlobTest.cpp | 6 ++++++ tools/viewer/sk_app/CommandSet.cpp | 1 + 11 files changed, 80 insertions(+), 14 deletions(-) diff --git a/fuzz/FilterFuzz.cpp b/fuzz/FilterFuzz.cpp index bd9e5fde8f..e3d30b5af7 100644 --- a/fuzz/FilterFuzz.cpp +++ b/fuzz/FilterFuzz.cpp @@ -525,6 +525,8 @@ static SkPaint make_paint() { paint.setEmbeddedBitmapText(make_bool()); paint.setAutohinted(make_bool()); paint.setVerticalText(make_bool()); + paint.setUnderlineText(make_bool()); + paint.setStrikeThruText(make_bool()); paint.setFakeBoldText(make_bool()); paint.setDevKernText(make_bool()); paint.setFilterQuality(make_filter_quality()); diff --git a/fuzz/FuzzDrawFunctions.cpp b/fuzz/FuzzDrawFunctions.cpp index 521e44be2f..a30804facc 100644 --- a/fuzz/FuzzDrawFunctions.cpp +++ b/fuzz/FuzzDrawFunctions.cpp @@ -137,6 +137,8 @@ static void fuzz_drawText(Fuzz* fuzz, sk_sp font) { fuzz->next(&b); p.setLinearText(b); fuzz->next(&b); + p.setStrikeThruText(b); + fuzz->next(&b); p.setSubpixelText(b); fuzz->next(&x); p.setTextScaleX(x); @@ -145,6 +147,8 @@ static void fuzz_drawText(Fuzz* fuzz, sk_sp font) { fuzz->next(&x); p.setTextSize(x); fuzz->next(&b); + p.setUnderlineText(b); + fuzz->next(&b); p.setVerticalText(b); SkCanvas* cnv = surface->getCanvas(); diff --git a/gm/texteffects.cpp b/gm/texteffects.cpp index e74d7a97f5..c4c389a065 100644 --- a/gm/texteffects.cpp +++ b/gm/texteffects.cpp @@ -195,6 +195,38 @@ DEF_SIMPLE_GM(texteffects, canvas, 460, 680) { canvas->restore(); } +DEF_SIMPLE_GM(textunderstrike, canvas, 460, 680) { + canvas->clear(SK_ColorYELLOW); + SkPaint paint; + sk_tool_utils::set_portable_typeface(&paint); + paint.setTextSize(50); + paint.setStrokeWidth(5); + paint.setAntiAlias(true); + + auto drawText = [&]() { + paint.setStyle(SkPaint::kFill_Style); + canvas->drawText("Hello", 5, 100, 50, paint); + paint.setStyle(SkPaint::kStroke_Style); + canvas->drawText("Hello", 5, 100, 100, paint); + canvas->translate(0, 100); + }; + + drawText(); + paint.setUnderlineText(true); + drawText(); + paint.setUnderlineText(false); + paint.setStrikeThruText(true); + drawText(); + paint.setUnderlineText(true); + drawText(); + paint.setColor(SK_ColorWHITE); + paint.setStyle(SkPaint::kStroke_Style); + canvas->drawText("Hello", 5, 100, 50, paint); + paint.setColor(SK_ColorBLUE); + paint.setStyle(SkPaint::kFill_Style); + canvas->drawText("Hello", 5, 100, 50, paint); +} + static SkPath create_underline(const SkTDArray& intersections, SkScalar last, SkScalar finalPos, SkScalar uPos, SkScalar uWidth, SkScalar textSize) { diff --git a/gn/android_framework_defines.gni b/gn/android_framework_defines.gni index 43a309eff5..b693d2808d 100644 --- a/gn/android_framework_defines.gni +++ b/gn/android_framework_defines.gni @@ -16,5 +16,4 @@ android_framework_defines = [ "SK_SUPPORT_LEGACY_SHADER_ISABITMAP", "SK_SUPPORT_LEGACY_EMBOSSMASKFILTER", "SK_SUPPORT_EXOTIC_CLIPOPS", - "SK_SUPPORT_LEGACY_PAINT_TEXTDECORATION", ] diff --git a/include/core/SkPaint.h b/include/core/SkPaint.h index f4b6db98c8..7a42238319 100644 --- a/include/core/SkPaint.h +++ b/include/core/SkPaint.h @@ -101,6 +101,8 @@ public: enum Flags { kAntiAlias_Flag = 0x01, //!< mask to enable antialiasing kDither_Flag = 0x04, //!< mask to enable dithering + kUnderlineText_Flag = 0x08, //!< mask to enable underline text + kStrikeThruText_Flag = 0x10, //!< mask to enable strike-thru text kFakeBoldText_Flag = 0x20, //!< mask to enable fake-bold text kLinearText_Flag = 0x40, //!< mask to enable linear-text kSubpixelText_Flag = 0x80, //!< mask to enable subpixel text positioning @@ -113,12 +115,7 @@ public: // when adding extra flags, note that the fFlags member is specified // with a bit-width and you'll have to expand it. - kAllFlags = 0xFFFF, - -#ifdef SK_SUPPORT_LEGACY_PAINT_TEXTDECORATION - kUnderlineText_Flag = 0x08, - kStrikeThruText_Flag = 0x10, -#endif + kAllFlags = 0xFFFF }; /** Return the paint's flags. Use the Flag enum to test flag values. @@ -232,16 +229,28 @@ public: /** Helper for getFlags(), returning true if kUnderlineText_Flag bit is set @return true if the underlineText bit is set in the paint's flags. */ -#ifdef SK_SUPPORT_LEGACY_PAINT_TEXTDECORATION - bool isUnderlineText() const { return false; } -#endif + bool isUnderlineText() const { + return SkToBool(this->getFlags() & kUnderlineText_Flag); + } + + /** Helper for setFlags(), setting or clearing the kUnderlineText_Flag bit + @param underlineText true to set the underlineText bit in the paint's + flags, false to clear it. + */ + void setUnderlineText(bool underlineText); /** Helper for getFlags(), returns true if kStrikeThruText_Flag bit is set @return true if the strikeThruText bit is set in the paint's flags. */ -#ifdef SK_SUPPORT_LEGACY_PAINT_TEXTDECORATION - bool isStrikeThruText() const { return false; } -#endif + bool isStrikeThruText() const { + return SkToBool(this->getFlags() & kStrikeThruText_Flag); + } + + /** Helper for setFlags(), setting or clearing the kStrikeThruText_Flag bit + @param strikeThruText true to set the strikeThruText bit in the + paint's flags, false to clear it. + */ + void setStrikeThruText(bool strikeThruText); /** Helper for getFlags(), returns true if kFakeBoldText_Flag bit is set @return true if the kFakeBoldText_Flag bit is set in the paint's flags. diff --git a/public.bzl b/public.bzl index 7975875bff..a69b760a35 100644 --- a/public.bzl +++ b/public.bzl @@ -596,7 +596,6 @@ DEFINES_ALL = [ "SK_NO_ANALYTIC_AA", "SK_SUPPORT_LEGACY_BITMAP_SETPIXELREF", "SK_SUPPORT_LEGACY_CLIPOP_EXOTIC_NAMES", - "SK_SUPPORT_LEGACY_PAINT_TEXTDECORATION", ] ################################################################################ diff --git a/samplecode/SampleFilterFuzz.cpp b/samplecode/SampleFilterFuzz.cpp index d90476aef7..ef4eee8520 100644 --- a/samplecode/SampleFilterFuzz.cpp +++ b/samplecode/SampleFilterFuzz.cpp @@ -495,6 +495,8 @@ static SkPaint make_paint() { paint.setEmbeddedBitmapText(make_bool()); paint.setAutohinted(make_bool()); paint.setVerticalText(make_bool()); + paint.setUnderlineText(make_bool()); + paint.setStrikeThruText(make_bool()); paint.setFakeBoldText(make_bool()); paint.setDevKernText(make_bool()); paint.setFilterQuality(make_filter_quality()); diff --git a/src/core/SkPaint.cpp b/src/core/SkPaint.cpp index 568ba6a021..a2dfa73dfa 100644 --- a/src/core/SkPaint.cpp +++ b/src/core/SkPaint.cpp @@ -245,6 +245,14 @@ void SkPaint::setVerticalText(bool doVertical) { this->setFlags(set_clear_mask(fBitfields.fFlags, doVertical, kVerticalText_Flag)); } +void SkPaint::setUnderlineText(bool doUnderline) { + this->setFlags(set_clear_mask(fBitfields.fFlags, doUnderline, kUnderlineText_Flag)); +} + +void SkPaint::setStrikeThruText(bool doStrikeThru) { + this->setFlags(set_clear_mask(fBitfields.fFlags, doStrikeThru, kStrikeThruText_Flag)); +} + void SkPaint::setFakeBoldText(bool doFakeBold) { this->setFlags(set_clear_mask(fBitfields.fFlags, doFakeBold, kFakeBoldText_Flag)); } @@ -2134,6 +2142,8 @@ void SkPaint::toString(SkString* str) const { bool needSeparator = false; SkAddFlagToString(str, this->isAntiAlias(), "AntiAlias", &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); diff --git a/src/core/SkTextBlob.cpp b/src/core/SkTextBlob.cpp index 817fc62a4a..4065771862 100644 --- a/src/core/SkTextBlob.cpp +++ b/src/core/SkTextBlob.cpp @@ -56,6 +56,8 @@ public: private: const static uint32_t kFlagsMask = SkPaint::kAntiAlias_Flag | + SkPaint::kUnderlineText_Flag | + SkPaint::kStrikeThruText_Flag | SkPaint::kFakeBoldText_Flag | SkPaint::kLinearText_Flag | SkPaint::kSubpixelText_Flag | diff --git a/tests/TextBlobTest.cpp b/tests/TextBlobTest.cpp index 09389a4b52..dafbe74e69 100644 --- a/tests/TextBlobTest.cpp +++ b/tests/TextBlobTest.cpp @@ -186,6 +186,8 @@ public: font.setTextAlign(SkPaint::kCenter_Align); font.setHinting(SkPaint::kFull_Hinting); font.setAntiAlias(true); + font.setUnderlineText(true); + font.setStrikeThruText(true); font.setFakeBoldText(true); font.setLinearText(true); font.setSubpixelText(true); @@ -205,6 +207,8 @@ public: REPORTER_ASSERT(reporter, defaultPaint.getTextAlign() != font.getTextAlign()); REPORTER_ASSERT(reporter, defaultPaint.getHinting() != font.getHinting()); REPORTER_ASSERT(reporter, defaultPaint.isAntiAlias() != font.isAntiAlias()); + REPORTER_ASSERT(reporter, defaultPaint.isUnderlineText() != font.isUnderlineText()); + REPORTER_ASSERT(reporter, defaultPaint.isStrikeThruText() != font.isStrikeThruText()); REPORTER_ASSERT(reporter, defaultPaint.isFakeBoldText() != font.isFakeBoldText()); REPORTER_ASSERT(reporter, defaultPaint.isLinearText() != font.isLinearText()); REPORTER_ASSERT(reporter, defaultPaint.isSubpixelText() != font.isSubpixelText()); @@ -234,6 +238,8 @@ public: REPORTER_ASSERT(reporter, paint.getTextAlign() == font.getTextAlign()); REPORTER_ASSERT(reporter, paint.getHinting() == font.getHinting()); REPORTER_ASSERT(reporter, paint.isAntiAlias() == font.isAntiAlias()); + REPORTER_ASSERT(reporter, paint.isUnderlineText() == font.isUnderlineText()); + REPORTER_ASSERT(reporter, paint.isStrikeThruText() == font.isStrikeThruText()); REPORTER_ASSERT(reporter, paint.isFakeBoldText() == font.isFakeBoldText()); REPORTER_ASSERT(reporter, paint.isLinearText() == font.isLinearText()); REPORTER_ASSERT(reporter, paint.isSubpixelText() == font.isSubpixelText()); diff --git a/tools/viewer/sk_app/CommandSet.cpp b/tools/viewer/sk_app/CommandSet.cpp index 689b97f864..f6568ec342 100644 --- a/tools/viewer/sk_app/CommandSet.cpp +++ b/tools/viewer/sk_app/CommandSet.cpp @@ -112,6 +112,7 @@ void CommandSet::drawHelp(SkCanvas* canvas) { SkPaint groupPaint; groupPaint.setTextSize(18); + groupPaint.setUnderlineText(true); groupPaint.setAntiAlias(true); groupPaint.setColor(0xFFFFFFFF); -- cgit v1.2.3