diff options
author | Mike Reed <reed@google.com> | 2018-11-23 15:27:51 -0500 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2018-11-23 20:54:16 +0000 |
commit | 358fcad1b864f464d197fc2761110dac0267f5d7 (patch) | |
tree | b8fb8e03469d6b4f25b062da90bb0a04b9b1f64d /fuzz | |
parent | 7593b34081f2de0a828c33236ebc4b0d96591e81 (diff) | |
download | skia-358fcad1b864f464d197fc2761110dac0267f5d7.tar.gz |
start to hide textparams on SkPaint
Bug: skia:
Change-Id: Id73c983cc71d39fe587d355e690261627fa63aee
Reviewed-on: https://skia-review.googlesource.com/c/172643
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Mike Reed <reed@google.com>
Diffstat (limited to 'fuzz')
-rw-r--r-- | fuzz/FuzzCanvas.cpp | 70 |
1 files changed, 42 insertions, 28 deletions
diff --git a/fuzz/FuzzCanvas.cpp b/fuzz/FuzzCanvas.cpp index aea7405a81..7ba19618cf 100644 --- a/fuzz/FuzzCanvas.cpp +++ b/fuzz/FuzzCanvas.cpp @@ -877,19 +877,21 @@ static void fuzz_paint(Fuzz* fuzz, SkPaint* paint, int depth) { } } -static void fuzz_paint_text(Fuzz* fuzz, SkPaint* paint) { - paint->setTypeface( make_fuzz_typeface(fuzz)); - paint->setTextSize( make_fuzz_t<SkScalar>(fuzz)); - paint->setTextScaleX( make_fuzz_t<SkScalar>(fuzz)); - paint->setTextSkewX( make_fuzz_t<SkScalar>(fuzz)); - paint->setLinearText( make_fuzz_t<bool>(fuzz)); - paint->setSubpixelText( make_fuzz_t<bool>(fuzz)); - paint->setLCDRenderText( make_fuzz_t<bool>(fuzz)); - paint->setEmbeddedBitmapText(make_fuzz_t<bool>(fuzz)); - paint->setAutohinted( make_fuzz_t<bool>(fuzz)); - paint->setFakeBoldText( make_fuzz_t<bool>(fuzz)); - paint->setHinting( make_fuzz_t_range<SkFontHinting>(fuzz, 0, - kFull_SkFontHinting)); +static SkFont fuzz_font(Fuzz* fuzz) { + SkFont font; + font.setTypeface( make_fuzz_typeface(fuzz)); + font.setSize( make_fuzz_t<SkScalar>(fuzz)); + font.setScaleX( make_fuzz_t<SkScalar>(fuzz)); + font.setSkewX( make_fuzz_t<SkScalar>(fuzz)); + font.setLinearMetrics( make_fuzz_t<bool>(fuzz)); + font.setSubpixel( make_fuzz_t<bool>(fuzz)); + font.setEmbeddedBitmaps( make_fuzz_t<bool>(fuzz)); + font.setForceAutoHinting( make_fuzz_t<bool>(fuzz)); + font.setEmbolden( make_fuzz_t<bool>(fuzz)); + font.setHinting( make_fuzz_t_range<SkFontHinting>(fuzz, 0, kFull_SkFontHinting)); + font.setEdging( make_fuzz_t_range<SkFont::Edging>(fuzz, 0, + (int)SkFont::Edging::kSubpixelAntiAlias)); + return font; } static SkTextEncoding fuzz_paint_text_encoding(Fuzz* fuzz) { @@ -1041,6 +1043,7 @@ static void fuzz_canvas(Fuzz* fuzz, SkCanvas* canvas, int depth = 9) { return; } SkPaint paint; + SkFont font; unsigned drawCommand; fuzz->nextRange(&drawCommand, 0, 53); switch (drawCommand) { @@ -1463,25 +1466,29 @@ static void fuzz_canvas(Fuzz* fuzz, SkCanvas* canvas, int depth = 9) { } case 45: { fuzz_paint(fuzz, &paint, depth - 1); - fuzz_paint_text(fuzz, &paint); - paint.setTextEncoding(fuzz_paint_text_encoding(fuzz)); + font = fuzz_font(fuzz); + SkTextEncoding encoding = fuzz_paint_text_encoding(fuzz); SkScalar x, y; fuzz->next(&x, &y); - SkTDArray<uint8_t> text = make_fuzz_text(fuzz, paint); - canvas->drawText(text.begin(), SkToSizeT(text.count()), x, y, paint); + SkTDArray<uint8_t> text = make_fuzz_text(fuzz, font, encoding); + canvas->drawSimpleText(text.begin(), SkToSizeT(text.count()), encoding, x, y, + font, paint); break; } +#ifdef SK_SUPPORT_LEGACY_FONTMETRICS_IN_PAINT case 46: { fuzz_paint(fuzz, &paint, depth - 1); - fuzz_paint_text(fuzz, &paint); - paint.setTextEncoding(fuzz_paint_text_encoding(fuzz)); - SkTDArray<uint8_t> text = make_fuzz_text(fuzz, paint); - int glyphCount = paint.countText(text.begin(), SkToSizeT(text.count())); + font = fuzz_font(fuzz); + SkTextEncoding encoding = fuzz_paint_text_encoding(fuzz); + SkTDArray<uint8_t> text = make_fuzz_text(fuzz, font, encoding); + int glyphCount = font.countText(text.begin(), SkToSizeT(text.count()), encoding); if (glyphCount < 1) { break; } SkAutoTMalloc<SkPoint> pos(glyphCount); SkAutoTMalloc<SkScalar> widths(glyphCount); + font.LEGACY_applyToPaint(&paint); + paint.setTextEncoding(encoding); paint.getTextWidths(text.begin(), SkToSizeT(text.count()), widths.get()); pos[0] = {0, 0}; for (int i = 1; i < glyphCount; ++i) { @@ -1494,14 +1501,16 @@ static void fuzz_canvas(Fuzz* fuzz, SkCanvas* canvas, int depth = 9) { } case 47: { fuzz_paint(fuzz, &paint, depth - 1); - fuzz_paint_text(fuzz, &paint); - paint.setTextEncoding(fuzz_paint_text_encoding(fuzz)); - SkTDArray<uint8_t> text = make_fuzz_text(fuzz, paint); - int glyphCount = paint.countText(text.begin(), SkToSizeT(text.count())); + font = fuzz_font(fuzz); + SkTextEncoding encoding = fuzz_paint_text_encoding(fuzz); + SkTDArray<uint8_t> text = make_fuzz_text(fuzz, font, encoding); + int glyphCount = font.countText(text.begin(), SkToSizeT(text.count()), encoding); SkAutoTMalloc<SkScalar> widths(glyphCount); if (glyphCount < 1) { break; } + font.LEGACY_applyToPaint(&paint); + paint.setTextEncoding(encoding); paint.getTextWidths(text.begin(), SkToSizeT(text.count()), widths.get()); SkScalar x = widths[0]; for (int i = 0; i < glyphCount; ++i) { @@ -1518,6 +1527,7 @@ static void fuzz_canvas(Fuzz* fuzz, SkCanvas* canvas, int depth = 9) { canvas->drawPosTextH(text.begin(), SkToSizeT(text.count()), widths.get(), y, paint); break; } +#endif case 48: { // was drawtextonpath break; @@ -1526,13 +1536,14 @@ static void fuzz_canvas(Fuzz* fuzz, SkCanvas* canvas, int depth = 9) { // was drawtextonpath break; } +#ifdef SK_SUPPORT_LEGACY_FONTMETRICS_IN_PAINT case 50: { fuzz_paint(fuzz, &paint, depth - 1); - fuzz_paint_text(fuzz, &paint); - paint.setTextEncoding(fuzz_paint_text_encoding(fuzz)); + font = fuzz_font(fuzz); + SkTextEncoding encoding = fuzz_paint_text_encoding(fuzz); SkTDArray<uint8_t> text = make_fuzz_text(fuzz, paint); SkRSXform rSXform[kMaxGlyphCount]; - int glyphCount = paint.countText(text.begin(), SkToSizeT(text.count())); + int glyphCount = font.countText(text.begin(), SkToSizeT(text.count()), encoding); SkASSERT(glyphCount <= kMaxGlyphCount); fuzz->nextN(rSXform, glyphCount); SkRect cullRect; @@ -1541,10 +1552,13 @@ static void fuzz_canvas(Fuzz* fuzz, SkCanvas* canvas, int depth = 9) { if (useCullRect) { fuzz->next(&cullRect); } + font.LEGACY_applyToPaint(&paint); + paint.setTextEncoding(encoding); canvas->drawTextRSXform(text.begin(), SkToSizeT(text.count()), rSXform, useCullRect ? &cullRect : nullptr, paint); break; } +#endif case 51: { sk_sp<SkTextBlob> blob = make_fuzz_textblob(fuzz); fuzz_paint(fuzz, &paint, depth - 1); |