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());
fuzz->next(&b);
p.setLinearText(b);
fuzz->next(&b);
- p.setStrikeThruText(b);
- fuzz->next(&b);
p.setSubpixelText(b);
fuzz->next(&x);
p.setTextScaleX(x);
fuzz->next(&x);
p.setTextSize(x);
fuzz->next(&b);
- p.setUnderlineText(b);
- fuzz->next(&b);
p.setVerticalText(b);
SkCanvas* cnv = surface->getCanvas();
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<SkScalar>& intersections,
SkScalar last, SkScalar finalPos,
SkScalar uPos, SkScalar uWidth, SkScalar textSize) {
"SK_SUPPORT_LEGACY_SHADER_ISABITMAP",
"SK_SUPPORT_LEGACY_EMBOSSMASKFILTER",
"SK_SUPPORT_EXOTIC_CLIPOPS",
+ "SK_SUPPORT_LEGACY_PAINT_TEXTDECORATION",
]
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
// when adding extra flags, note that the fFlags member is specified
// with a bit-width and you'll have to expand it.
- kAllFlags = 0xFFFF
+ kAllFlags = 0xFFFF,
+
+#ifdef SK_SUPPORT_LEGACY_PAINT_TEXTDECORATION
+ kUnderlineText_Flag = 0x08,
+ kStrikeThruText_Flag = 0x10,
+#endif
};
/** Return the paint's flags. Use the Flag enum to test flag values.
/** Helper for getFlags(), returning true if kUnderlineText_Flag bit is set
@return true if the underlineText bit is set in the paint's flags.
*/
- 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);
+#ifdef SK_SUPPORT_LEGACY_PAINT_TEXTDECORATION
+ bool isUnderlineText() const { return false; }
+#endif
/** Helper for getFlags(), returns true if kStrikeThruText_Flag bit is set
@return true if the strikeThruText bit is set in the paint's flags.
*/
- 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);
+#ifdef SK_SUPPORT_LEGACY_PAINT_TEXTDECORATION
+ bool isStrikeThruText() const { return false; }
+#endif
/** 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.
"SK_NO_ANALYTIC_AA",
"SK_SUPPORT_LEGACY_BITMAP_SETPIXELREF",
"SK_SUPPORT_LEGACY_CLIPOP_EXOTIC_NAMES",
+ "SK_SUPPORT_LEGACY_PAINT_TEXTDECORATION",
]
################################################################################
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());
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));
}
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);
private:
const static uint32_t kFlagsMask =
SkPaint::kAntiAlias_Flag |
- SkPaint::kUnderlineText_Flag |
- SkPaint::kStrikeThruText_Flag |
SkPaint::kFakeBoldText_Flag |
SkPaint::kLinearText_Flag |
SkPaint::kSubpixelText_Flag |
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);
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());
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());
SkPaint groupPaint;
groupPaint.setTextSize(18);
- groupPaint.setUnderlineText(true);
groupPaint.setAntiAlias(true);
groupPaint.setColor(0xFFFFFFFF);