aboutsummaryrefslogtreecommitdiffstats
path: root/gm
diff options
context:
space:
mode:
authorHal Canary <halcanary@google.com>2019-01-08 09:38:02 -0500
committerSkia Commit-Bot <skia-commit-bot@chromium.org>2019-01-09 16:01:59 +0000
commitdf2d27e0c7d94f13b7bfacdfb0a8263ceb644f66 (patch)
tree6b16b5458f45894be4765a65b183ec1cbcd6fb59 /gm
parent0995fd5cb71d9532703e0f9ee6c3b667978adff1 (diff)
downloadplatform_external_skqp-df2d27e0c7d94f13b7bfacdfb0a8263ceb644f66.tar.gz
platform_external_skqp-df2d27e0c7d94f13b7bfacdfb0a8263ceb644f66.tar.bz2
platform_external_skqp-df2d27e0c7d94f13b7bfacdfb0a8263ceb644f66.zip
drawText Cleanup, part 2
Change-Id: I6765d623924d12c6eea2c402dd27eade61b73b66 Reviewed-on: https://skia-review.googlesource.com/c/182151 Commit-Queue: Mike Reed <reed@google.com> Reviewed-by: Mike Reed <reed@google.com> Auto-Submit: Hal Canary <halcanary@google.com>
Diffstat (limited to 'gm')
-rw-r--r--gm/hsl.cpp10
-rw-r--r--gm/linepaths.cpp29
-rw-r--r--gm/matrixconvolution.cpp13
-rw-r--r--gm/mipmap.cpp3
-rw-r--r--gm/mixedtextblobs.cpp2
-rw-r--r--gm/morphology.cpp11
-rw-r--r--gm/p3.cpp14
-rw-r--r--gm/pictureimagefilter.cpp16
-rw-r--r--gm/pixelsnap.cpp14
-rw-r--r--gm/poly2poly.cpp8
-rw-r--r--gm/quadpaths.cpp59
-rw-r--r--gm/rectangletexture.cpp5
-rw-r--r--gm/samplerstress.cpp13
-rw-r--r--gm/shadertext3.cpp16
-rw-r--r--gm/simpleaaclip.cpp8
-rw-r--r--gm/srcmode.cpp21
-rw-r--r--gm/strokefill.cpp33
-rw-r--r--gm/textbloblooper.cpp2
-rw-r--r--gm/texteffects.cpp10
-rw-r--r--gm/tilemodes.cpp12
-rw-r--r--gm/tilemodes_scaled.cpp14
-rw-r--r--gm/xfermodes3.cpp9
22 files changed, 122 insertions, 200 deletions
diff --git a/gm/hsl.cpp b/gm/hsl.cpp
index a4c9657ff3..03bc3f72a5 100644
--- a/gm/hsl.cpp
+++ b/gm/hsl.cpp
@@ -145,12 +145,11 @@ static SkColor blend(SkColor dst, SkColor src,
}
DEF_SIMPLE_GM(hsl, canvas, 600, 100) {
- SkPaint label;
- sk_tool_utils::set_portable_typeface(&label);
- label.setAntiAlias(true);
+ SkPaint paint;
+ SkFont font(sk_tool_utils::create_portable_typeface());
const char* comment = "HSL blend modes are correct when you see no circles in the squares.";
- canvas->drawText(comment, strlen(comment), 10,10, label);
+ canvas->drawString(comment, 10,10, font, paint);
// Just to keep things reaaaal simple, we'll only use opaque colors.
SkPaint bg, fg;
@@ -180,8 +179,7 @@ DEF_SIMPLE_GM(hsl, canvas, 600, 100) {
canvas->drawCircle(50,50, 20, ref);
}
- const char* name = SkBlendMode_Name(test.mode);
- canvas->drawText(name, strlen(name), 20,90, label);
+ canvas->drawString(SkBlendMode_Name(test.mode), 20, 90, font, paint);
canvas->translate(100,0);
}
diff --git a/gm/linepaths.cpp b/gm/linepaths.cpp
index 94a297922d..e3f386d43d 100644
--- a/gm/linepaths.cpp
+++ b/gm/linepaths.cpp
@@ -76,17 +76,15 @@ static void draw(SkCanvas* canvas, bool doClose) {
SkPaint titlePaint;
titlePaint.setColor(SK_ColorBLACK);
titlePaint.setAntiAlias(true);
- sk_tool_utils::set_portable_typeface(&titlePaint);
- titlePaint.setTextSize(15 * SK_Scalar1);
+
+ SkFont font(sk_tool_utils::create_portable_typeface(), 15.0f);
+
const char titleNoClose[] = "Line Drawn Into Rectangle Clips With "
"Indicated Style, Fill and Linecaps, with stroke width 10";
const char titleClose[] = "Line Closed Drawn Into Rectangle Clips With "
"Indicated Style, Fill and Linecaps, with stroke width 10";
const char* title = doClose ? titleClose : titleNoClose;
- canvas->drawString(title,
- 20 * SK_Scalar1,
- 20 * SK_Scalar1,
- titlePaint);
+ canvas->drawString(title, 20.0f, 20.0f, font, titlePaint);
SkRandom rand;
SkRect rect = SkRect::MakeWH(100*SK_Scalar1, 30*SK_Scalar1);
@@ -122,18 +120,13 @@ static void draw(SkCanvas* canvas, bool doClose) {
SkPaint labelPaint;
labelPaint.setColor(color);
- labelPaint.setAntiAlias(true);
- sk_tool_utils::set_portable_typeface(&labelPaint);
- labelPaint.setTextSize(10 * SK_Scalar1);
- canvas->drawString(gStyles[style].fName,
- 0, rect.height() + 12 * SK_Scalar1,
- labelPaint);
- canvas->drawString(gFills[fill].fName,
- 0, rect.height() + 24 * SK_Scalar1,
- labelPaint);
- canvas->drawString(gCaps[cap].fName,
- 0, rect.height() + 36 * SK_Scalar1,
- labelPaint);
+ font.setSize(10);
+ canvas->drawString(gStyles[style].fName, 0, rect.height() + 12.0f,
+ font, labelPaint);
+ canvas->drawString(gFills[fill].fName, 0, rect.height() + 24.0f,
+ font, labelPaint);
+ canvas->drawString(gCaps[cap].fName, 0, rect.height() + 36.0f,
+ font, labelPaint);
}
canvas->restore();
}
diff --git a/gm/matrixconvolution.cpp b/gm/matrixconvolution.cpp
index 80ffc6bdec..24fa578e37 100644
--- a/gm/matrixconvolution.cpp
+++ b/gm/matrixconvolution.cpp
@@ -34,17 +34,14 @@ protected:
SkCanvas canvas(fBitmap);
canvas.clear(0x00000000);
SkPaint paint;
- paint.setAntiAlias(true);
- sk_tool_utils::set_portable_typeface(&paint);
paint.setColor(0xFFFFFFFF);
- paint.setTextSize(SkIntToScalar(180));
- SkPoint pts[2] = { SkPoint::Make(0, 0),
- SkPoint::Make(0, SkIntToScalar(80)) };
- SkScalar pos[2] = { 0, SkIntToScalar(80) };
+ SkPoint pts[2] = { {0, 0},
+ {0, 80.0f} };
+ SkScalar pos[2] = { 0, 80.0f };
paint.setShader(SkGradientShader::MakeLinear(
pts, fColors, pos, 2, SkShader::kClamp_TileMode));
- const char* str = "e";
- canvas.drawString(str, SkIntToScalar(-10), SkIntToScalar(80), paint);
+ SkFont font(sk_tool_utils::create_portable_typeface(), 180.0f);
+ canvas.drawString("e", -10.0f, 80.0f, font, paint);
}
SkISize onISize() override {
diff --git a/gm/mipmap.cpp b/gm/mipmap.cpp
index 98b766cb72..7188cd3012 100644
--- a/gm/mipmap.cpp
+++ b/gm/mipmap.cpp
@@ -34,10 +34,9 @@ DEF_SIMPLE_GM(mipmap, canvas, 400, 200) {
SkPaint paint;
const SkRect dst = SkRect::MakeWH(177, 15);
- paint.setTextSize(30);
SkString str;
str.printf("scale %g %g", dst.width() / img->width(), dst.height() / img->height());
-// canvas->drawString(str, 300, 100, paint);
+// canvas->drawString(str, 300, 100, SkFont(nullptr, 30), paint);
canvas->translate(20, 20);
for (int i = 0; i < 4; ++i) {
diff --git a/gm/mixedtextblobs.cpp b/gm/mixedtextblobs.cpp
index afdd736c2e..9e83b90daa 100644
--- a/gm/mixedtextblobs.cpp
+++ b/gm/mixedtextblobs.cpp
@@ -114,8 +114,6 @@ protected:
paint.setColor(SK_ColorBLACK);
canvas->translate(10, 40);
- paint.setTextSize(40);
-
// compute the bounds of the text and setup some clips
SkRect bounds = fBlob->bounds();
diff --git a/gm/morphology.cpp b/gm/morphology.cpp
index 99603c1ebc..d21053a553 100644
--- a/gm/morphology.cpp
+++ b/gm/morphology.cpp
@@ -29,15 +29,12 @@ protected:
fBitmap.allocN32Pixels(135, 135);
SkCanvas canvas(fBitmap);
canvas.clear(0x0);
+
+ SkFont font(sk_tool_utils::create_portable_typeface(), 64.0f);
SkPaint paint;
- paint.setAntiAlias(true);
- sk_tool_utils::set_portable_typeface(&paint);
- const char* str1 = "ABC";
- const char* str2 = "XYZ";
paint.setColor(0xFFFFFFFF);
- paint.setTextSize(64);
- canvas.drawString(str1, 10, 55, paint);
- canvas.drawString(str2, 10, 110, paint);
+ canvas.drawString("ABC", 10, 55, font, paint);
+ canvas.drawString("XYZ", 10, 110, font, paint);
}
SkISize onISize() override {
diff --git a/gm/p3.cpp b/gm/p3.cpp
index a67ab7229b..044af53ede 100644
--- a/gm/p3.cpp
+++ b/gm/p3.cpp
@@ -6,9 +6,11 @@
*/
#include "gm.h"
+
#include "SkColorSpace.h"
#include "SkColorSpaceXformSteps.h"
#include "SkDashPathEffect.h"
+#include "SkFont.h"
#include "SkGradientShader.h"
#include "SkString.h"
@@ -33,8 +35,8 @@ static SkColor4f transform(SkColor4f c, SkColorSpace* src, SkColorSpace* dst) {
static void compare_pixel(const char* label,
SkCanvas* canvas, int x, int y,
SkColor4f color, SkColorSpace* cs) {
- SkPaint text;
- text.setAntiAlias(true);
+ SkPaint paint;
+ SkFont font;
auto canvas_cs = canvas->imageInfo().refColorSpace();
// I'm not really sure if this makes things easier or harder to follow,
@@ -50,7 +52,7 @@ static void compare_pixel(const char* label,
bm.allocPixels(SkImageInfo::Make(1,1, kRGBA_F32_SkColorType, kUnpremul_SkAlphaType, canvas_cs));
if (!canvas->readPixels(bm, x,y)) {
MarkGMGood(canvas, 140,40);
- canvas->drawString("can't readPixels() on this canvas :(", 100,20, text);
+ canvas->drawString("can't readPixels() on this canvas :(", 100,20, font, paint);
return;
}
@@ -85,11 +87,11 @@ static void compare_pixel(const char* label,
};
SkAutoCanvasRestore saveRestore(canvas, true);
- canvas->drawString(label, 80,20, text);
+ canvas->drawString(label, 80,20, font, paint);
for (auto l : lines) {
canvas->translate(0,20);
- canvas->drawString(l.label, 80,20, text);
- canvas->drawString(fmt(l.color).c_str(), 140,20, text);
+ canvas->drawString(l.label, 80,20, font, paint);
+ canvas->drawString(fmt(l.color).c_str(), 140,20, font, paint);
}
}
diff --git a/gm/pictureimagefilter.cpp b/gm/pictureimagefilter.cpp
index 899bbb9302..cf8b579dd2 100644
--- a/gm/pictureimagefilter.cpp
+++ b/gm/pictureimagefilter.cpp
@@ -31,12 +31,9 @@ static sk_sp<SkPicture> make_picture() {
SkPictureRecorder recorder;
SkCanvas* canvas = recorder.beginRecording(100, 100, nullptr, 0);
SkPaint paint;
- paint.setAntiAlias(true);
- sk_tool_utils::set_portable_typeface(&paint);
paint.setColor(0xFFFFFFFF);
- paint.setTextSize(SkIntToScalar(96));
- const char* str = "e";
- canvas->drawString(str, SkIntToScalar(20), SkIntToScalar(70), paint);
+ SkFont font(sk_tool_utils::create_portable_typeface(), 96.0f);
+ canvas->drawString("e", 20.0f, 70.0f, font, paint);
return recorder.finishRecordingAsPicture();
}
@@ -46,14 +43,11 @@ static sk_sp<SkPicture> make_LCD_picture() {
SkCanvas* canvas = recorder.beginRecording(100, 100, nullptr, 0);
canvas->clear(SK_ColorTRANSPARENT);
SkPaint paint;
- paint.setLCDRenderText(true); // want LCD
- paint.setAntiAlias(true); // need AA for LCD
- sk_tool_utils::set_portable_typeface(&paint);
paint.setColor(0xFFFFFFFF);
// this has to be small enough that it doesn't become a path
- paint.setTextSize(SkIntToScalar(36));
- const char* str = "e";
- canvas->drawString(str, SkIntToScalar(20), SkIntToScalar(70), paint);
+ SkFont font(sk_tool_utils::create_portable_typeface(), 36.0f);
+ font.setEdging(SkFont::Edging::kSubpixelAntiAlias);
+ canvas->drawString("e", 20.0f, 70.0f, font, paint);
return recorder.finishRecordingAsPicture();
}
diff --git a/gm/pixelsnap.cpp b/gm/pixelsnap.cpp
index 88fa58a755..b1373b6e4b 100644
--- a/gm/pixelsnap.cpp
+++ b/gm/pixelsnap.cpp
@@ -41,10 +41,8 @@ protected:
SkString offset;
SkPaint labelPaint;
- labelPaint.setAntiAlias(true);
labelPaint.setColor(SK_ColorWHITE);
- labelPaint.setTextSize(SkIntToScalar(kLabelTextSize));
- sk_tool_utils::set_portable_typeface(&labelPaint);
+ SkFont font(sk_tool_utils::create_portable_typeface(), SkIntToScalar(kLabelTextSize));
SkPaint linePaint;
linePaint.setColor(SK_ColorWHITE);
@@ -53,9 +51,8 @@ protected:
canvas->translate(0, SkIntToScalar(kLabelOffsetY));
for (int i = 0; i <= kSubPixelSteps; ++i) {
offset.printf("%d", i);
- canvas->drawString(offset,
- 0, i * kTrans + labelPaint.getTextSize(),
- labelPaint);
+ canvas->drawString(offset, 0, i * kTrans + SkIntToScalar(kLabelTextSize),
+ font, labelPaint);
}
canvas->restore();
@@ -64,9 +61,8 @@ protected:
canvas->translate(SkIntToScalar(kLabelOffsetX), 0);
for (int i = 0; i <= kSubPixelSteps; ++i) {
offset.printf("%d", i);
- canvas->drawString(offset,
- i * SkIntToScalar(kTrans), labelPaint.getTextSize(),
- labelPaint);
+ canvas->drawString(offset, i * SkIntToScalar(kTrans), SkIntToScalar(kLabelTextSize),
+ font, labelPaint);
}
canvas->restore();
diff --git a/gm/poly2poly.cpp b/gm/poly2poly.cpp
index 7b72aa42dc..7e79839cf0 100644
--- a/gm/poly2poly.cpp
+++ b/gm/poly2poly.cpp
@@ -38,11 +38,13 @@ private:
SkPaint fFillPaint;
SkPaint fStrokePaint;
SkPath fPath;
+ SkFont fFont;
};
-SkJSCanvas::SkJSCanvas(SkCanvas* target) : fTarget(target) {
+SkJSCanvas::SkJSCanvas(SkCanvas* target)
+ : fTarget(target)
+ , fFont(sk_tool_utils::create_portable_typeface(), 12) {
fFillPaint.setAntiAlias(true);
- sk_tool_utils::set_portable_typeface(&fFillPaint);
fStrokePaint.setAntiAlias(true);
fStrokePaint.setStyle(SkPaint::kStroke_Style);
fStrokePaint.setStrokeWidth(SK_Scalar1);
@@ -74,7 +76,7 @@ void SkJSCanvas::stroke() {
}
void SkJSCanvas::fillText(const char text[], double x, double y) {
- fTarget->drawString(text, SkDoubleToScalar(x), SkDoubleToScalar(y), fFillPaint);
+ fTarget->drawString(text, SkDoubleToScalar(x), SkDoubleToScalar(y), fFont, fFillPaint);
}
///////////////////////////////////////////////////////////////////////////////
diff --git a/gm/quadpaths.cpp b/gm/quadpaths.cpp
index fb106859a4..82fcd33278 100644
--- a/gm/quadpaths.cpp
+++ b/gm/quadpaths.cpp
@@ -84,16 +84,12 @@ protected:
path.fName = "moveTo-quad";
SkPaint titlePaint;
- titlePaint.setColor(SK_ColorBLACK);
- titlePaint.setAntiAlias(true);
- sk_tool_utils::set_portable_typeface(&titlePaint);
- titlePaint.setTextSize(15 * SK_Scalar1);
+ SkFont font(sk_tool_utils::create_portable_typeface(), 15);
+ SkFont labelFont(sk_tool_utils::create_portable_typeface(), 10);
+
const char title[] = "Quad Drawn Into Rectangle Clips With "
"Indicated Style, Fill and Linecaps, with stroke width 10";
- canvas->drawString(title,
- 20 * SK_Scalar1,
- 20 * SK_Scalar1,
- titlePaint);
+ canvas->drawString(title, 20.0f, 20.0f, font, titlePaint);
SkRandom rand;
SkRect rect = SkRect::MakeWH(100*SK_Scalar1, 30*SK_Scalar1);
@@ -129,18 +125,12 @@ protected:
SkPaint labelPaint;
labelPaint.setColor(color);
- labelPaint.setAntiAlias(true);
- sk_tool_utils::set_portable_typeface(&labelPaint);
- labelPaint.setTextSize(10 * SK_Scalar1);
- canvas->drawString(gStyles[style].fName,
- 0, rect.height() + 12 * SK_Scalar1,
- labelPaint);
- canvas->drawString(gFills[fill].fName,
- 0, rect.height() + 24 * SK_Scalar1,
- labelPaint);
- canvas->drawString(gCaps[cap].fName,
- 0, rect.height() + 36 * SK_Scalar1,
- labelPaint);
+ canvas->drawString(gStyles[style].fName, 0, rect.height() + 12.0f,
+ labelFont, labelPaint);
+ canvas->drawString(gFills[fill].fName, 0, rect.height() + 24.0f,
+ labelFont, labelPaint);
+ canvas->drawString(gCaps[cap].fName, 0, rect.height() + 36.0f,
+ labelFont, labelPaint);
}
canvas->restore();
}
@@ -225,16 +215,11 @@ protected:
path.fName = "moveTo-quad-close";
SkPaint titlePaint;
- titlePaint.setColor(SK_ColorBLACK);
- titlePaint.setAntiAlias(true);
- sk_tool_utils::set_portable_typeface(&titlePaint);
- titlePaint.setTextSize(15 * SK_Scalar1);
+ SkFont font(sk_tool_utils::create_portable_typeface(), 15);
+ SkFont labelFont(sk_tool_utils::create_portable_typeface(), 10);
const char title[] = "Quad Closed Drawn Into Rectangle Clips With "
"Indicated Style, Fill and Linecaps, with stroke width 10";
- canvas->drawString(title,
- 20 * SK_Scalar1,
- 20 * SK_Scalar1,
- titlePaint);
+ canvas->drawString(title, 20.0f, 20.0f, font, titlePaint);
SkRandom rand;
SkRect rect = SkRect::MakeWH(100*SK_Scalar1, 30*SK_Scalar1);
@@ -270,18 +255,12 @@ protected:
SkPaint labelPaint;
labelPaint.setColor(color);
- labelPaint.setAntiAlias(true);
- sk_tool_utils::set_portable_typeface(&labelPaint);
- labelPaint.setTextSize(10 * SK_Scalar1);
- canvas->drawString(gStyles[style].fName,
- 0, rect.height() + 12 * SK_Scalar1,
- labelPaint);
- canvas->drawString(gFills[fill].fName,
- 0, rect.height() + 24 * SK_Scalar1,
- labelPaint);
- canvas->drawString(gCaps[cap].fName,
- 0, rect.height() + 36 * SK_Scalar1,
- labelPaint);
+ canvas->drawString(gStyles[style].fName, 0, rect.height() + 12.0f,
+ labelFont, labelPaint);
+ canvas->drawString(gFills[fill].fName, 0, rect.height() + 24.0f,
+ labelFont, labelPaint);
+ canvas->drawString(gCaps[cap].fName, 0, rect.height() + 36.0f,
+ labelFont, labelPaint);
}
canvas->restore();
}
diff --git a/gm/rectangletexture.cpp b/gm/rectangletexture.cpp
index 4d4e1df4c6..857fecbf51 100644
--- a/gm/rectangletexture.cpp
+++ b/gm/rectangletexture.cpp
@@ -146,9 +146,8 @@ protected:
SkASSERT(SkToBool(rectImgs[0]) == SkToBool(rectImgs[1]));
if (!rectImgs[0]) {
SkPaint paint;
- paint.setAntiAlias(true);
- const char* kMsg = "Could not create rectangle texture image.";
- canvas->drawString(kMsg, 10, 100, paint);
+ SkFont font;
+ canvas->drawString("Could not create rectangle texture image.", 10, 100, font, paint);
return;
}
diff --git a/gm/samplerstress.cpp b/gm/samplerstress.cpp
index 5f41f3dbf8..2e435a3313 100644
--- a/gm/samplerstress.cpp
+++ b/gm/samplerstress.cpp
@@ -95,10 +95,9 @@ protected:
// stipple mask with a round rect soft clip
SkPaint paint;
paint.setAntiAlias(true);
- paint.setTextSize(72);
paint.setShader(fShader);
paint.setMaskFilter(fMaskFilter);
- sk_tool_utils::set_portable_typeface(&paint);
+ SkFont font(sk_tool_utils::create_portable_typeface(), 72);
SkRect temp;
temp.set(SkIntToScalar(115),
@@ -111,9 +110,7 @@ protected:
canvas->clipPath(path, true); // AA is on
- canvas->drawString("M",
- SkIntToScalar(100), SkIntToScalar(100),
- paint);
+ canvas->drawString("M", 100.0f, 100.0f, font, paint);
canvas->restore();
@@ -122,13 +119,9 @@ protected:
SkPaint paint2;
paint2.setColor(SK_ColorBLACK);
paint2.setAntiAlias(true);
- paint2.setTextSize(72);
paint2.setStyle(SkPaint::kStroke_Style);
paint2.setStrokeWidth(1);
- sk_tool_utils::set_portable_typeface(&paint2);
- canvas->drawString("M",
- SkIntToScalar(100), SkIntToScalar(100),
- paint2);
+ canvas->drawString("M", 100.0f, 100.0f, font, paint2);
paint2.setColor(SK_ColorGRAY);
diff --git a/gm/shadertext3.cpp b/gm/shadertext3.cpp
index b6e2613b48..f28b93a995 100644
--- a/gm/shadertext3.cpp
+++ b/gm/shadertext3.cpp
@@ -42,8 +42,6 @@ struct LabeledMatrix {
const char* fLabel;
};
-constexpr char kText[] = "B";
-constexpr int kTextLen = SK_ARRAY_COUNT(kText) - 1;
constexpr int kPointSize = 300;
class ShaderText3GM : public GM {
@@ -72,10 +70,8 @@ protected:
bmpPaint.setAlpha(0x80);
canvas->drawBitmap(fBmp, 5.f, 5.f, &bmpPaint);
+ SkFont font(sk_tool_utils::create_portable_typeface(), SkIntToScalar(kPointSize));
SkPaint outlinePaint;
- outlinePaint.setAntiAlias(true);
- sk_tool_utils::set_portable_typeface(&outlinePaint);
- outlinePaint.setTextSize(SkIntToScalar(kPointSize));
outlinePaint.setStyle(SkPaint::kStroke_Style);
outlinePaint.setStrokeWidth(0.f);
@@ -107,12 +103,10 @@ protected:
fillPaint.setShader(SkShader::MakeBitmapShader(fBmp, kTileModes[tm0],
kTileModes[tm1], &localM));
- SkFont font(sk_tool_utils::create_portable_typeface(), kPointSize);
-
- canvas->drawSimpleText(kText, kTextLen, kUTF8_SkTextEncoding, 0, 0, font, fillPaint);
- canvas->drawSimpleText(kText, kTextLen, kUTF8_SkTextEncoding, 0, 0, font,
- outlinePaint);
- SkScalar w = font.measureText(kText, kTextLen, kUTF8_SkTextEncoding);
+ constexpr char kText[] = "B";
+ canvas->drawString(kText, 0, 0, font, fillPaint);
+ canvas->drawString(kText, 0, 0, font, outlinePaint);
+ SkScalar w = font.measureText(kText, strlen(kText), kUTF8_SkTextEncoding);
canvas->translate(w + 10.f, 0.f);
++i;
if (!(i % 2)) {
diff --git a/gm/simpleaaclip.cpp b/gm/simpleaaclip.cpp
index 36eb5afd83..c2d64dfb33 100644
--- a/gm/simpleaaclip.cpp
+++ b/gm/simpleaaclip.cpp
@@ -156,15 +156,11 @@ protected:
};
SkPaint textPaint;
- textPaint.setAntiAlias(true);
- sk_tool_utils::set_portable_typeface(&textPaint);
- textPaint.setTextSize(SK_Scalar1*24);
+ SkFont font(sk_tool_utils::create_portable_typeface(), 24);
int xOff = 0;
for (size_t op = 0; op < SK_ARRAY_COUNT(gOps); op++) {
- canvas->drawString(gOps[op].fName,
- SkIntToScalar(75), SkIntToScalar(50),
- textPaint);
+ canvas->drawString(gOps[op].fName, 75.0f, 50.0f, font, textPaint);
if (kAAClip_GeomType == fGeomType) {
this->drawRgnOped(canvas, gOps[op].fOp, gOps[op].fColor);
diff --git a/gm/srcmode.cpp b/gm/srcmode.cpp
index 21cf9797f5..f64b1d15aa 100644
--- a/gm/srcmode.cpp
+++ b/gm/srcmode.cpp
@@ -28,32 +28,30 @@ static void gradient_paintproc(SkPaint* paint) {
SkShader::kClamp_TileMode));
}
-typedef void (*Proc)(SkCanvas*, const SkPaint&);
+typedef void (*Proc)(SkCanvas*, const SkPaint&, const SkFont&);
-static void draw_hair(SkCanvas* canvas, const SkPaint& paint) {
+static void draw_hair(SkCanvas* canvas, const SkPaint& paint, const SkFont&) {
SkPaint p(paint);
p.setStrokeWidth(0);
canvas->drawLine(0, 0, W, H, p);
}
-static void draw_thick(SkCanvas* canvas, const SkPaint& paint) {
+static void draw_thick(SkCanvas* canvas, const SkPaint& paint, const SkFont&) {
SkPaint p(paint);
p.setStrokeWidth(H/5);
canvas->drawLine(0, 0, W, H, p);
}
-static void draw_rect(SkCanvas* canvas, const SkPaint& paint) {
+static void draw_rect(SkCanvas* canvas, const SkPaint& paint, const SkFont&) {
canvas->drawRect(SkRect::MakeWH(W, H), paint);
}
-static void draw_oval(SkCanvas* canvas, const SkPaint& paint) {
+static void draw_oval(SkCanvas* canvas, const SkPaint& paint, const SkFont&) {
canvas->drawOval(SkRect::MakeWH(W, H), paint);
}
-static void draw_text(SkCanvas* canvas, const SkPaint& paint) {
- SkPaint p(paint);
- p.setTextSize(H/4);
- canvas->drawString("Hamburge", 0, H*2/3, p);
+static void draw_text(SkCanvas* canvas, const SkPaint& paint, const SkFont& font) {
+ canvas->drawString("Hamburge", 0, H*2/3, font, paint);
}
class SrcModeGM : public skiagm::GM {
@@ -76,7 +74,7 @@ protected:
canvas->translate(SkIntToScalar(20), SkIntToScalar(20));
SkPaint paint;
- sk_tool_utils::set_portable_typeface(&paint);
+ SkFont font(sk_tool_utils::create_portable_typeface(), H/4);
paint.setColor(0x80F60000);
const Proc procs[] = {
@@ -93,6 +91,7 @@ protected:
for (int aa = 0; aa <= 1; ++aa) {
paint.setAntiAlias(SkToBool(aa));
+ font.setEdging(SkToBool(aa) ? SkFont::Edging::kAntiAlias : SkFont::Edging::kAlias);
canvas->save();
for (size_t i = 0; i < SK_ARRAY_COUNT(paintProcs); ++i) {
paintProcs[i](&paint);
@@ -100,7 +99,7 @@ protected:
paint.setBlendMode(modes[x]);
canvas->save();
for (size_t y = 0; y < SK_ARRAY_COUNT(procs); ++y) {
- procs[y](canvas, paint);
+ procs[y](canvas, paint, font);
canvas->translate(0, H * 5 / 4);
}
canvas->restore();
diff --git a/gm/strokefill.cpp b/gm/strokefill.cpp
index b28b415948..a557ab23bd 100644
--- a/gm/strokefill.cpp
+++ b/gm/strokefill.cpp
@@ -227,22 +227,23 @@ static SkPath hiragino_maru_gothic_pro_dash() {
return path;
}
-static void show_bold(SkCanvas* canvas, const void* text, int len,
- SkScalar x, SkScalar y, const SkPaint& paint) {
- SkPaint p(paint);
- canvas->drawText(text, len, x, y, p);
- p.setFakeBoldText(true);
- canvas->drawText(text, len, x, y + SkIntToScalar(120), p);
+static void show_bold(SkCanvas* canvas, const char* text,
+ SkScalar x, SkScalar y, const SkPaint& paint, const SkFont& font) {
+ canvas->drawString(text, x, y, font, paint);
+ SkFont f(font);
+ f.setEmbolden(true);
+ canvas->drawString(text, x, y + 120, f, paint);
}
-static void path_bold(SkCanvas* canvas, const SkPath& path, const SkPaint& paint) {
+static void path_bold(SkCanvas* canvas, const SkPath& path,
+ const SkPaint& paint, float textSize) {
SkPaint p(paint);
canvas->drawPath(path, p);
p.setStyle(SkPaint::kStrokeAndFill_Style);
- SkScalar fakeBoldScale = SkScalarInterpFunc(p.getTextSize(),
+ SkScalar fakeBoldScale = SkScalarInterpFunc(textSize,
kStdFakeBoldInterpKeys, kStdFakeBoldInterpValues,
kStdFakeBoldInterpLength);
- SkScalar extra = p.getTextSize() * fakeBoldScale;
+ SkScalar extra = textSize * fakeBoldScale;
p.setStrokeWidth(extra);
canvas->save();
canvas->translate(0, 120);
@@ -255,21 +256,19 @@ DEF_SIMPLE_GM_BG_NAME(strokefill, canvas, 640, 480, SK_ColorWHITE,
SkScalar x = SkIntToScalar(100);
SkScalar y = SkIntToScalar(88);
+ // use the portable typeface to generically test the fake bold code everywhere
+ // (as long as the freetype option to do the bolding itself isn't enabled)
+ SkFont font(sk_tool_utils::create_portable_typeface("serif", SkFontStyle()), 100);
SkPaint paint;
paint.setAntiAlias(true);
- paint.setTextSize(SkIntToScalar(100));
paint.setStrokeWidth(SkIntToScalar(5));
// use paths instead of text to test the path data on all platforms, since the
// Mac-specific font may change or is not available everywhere
- path_bold(canvas, papyrus_hello(), paint);
- path_bold(canvas, hiragino_maru_gothic_pro_dash(), paint);
+ path_bold(canvas, papyrus_hello(), paint, font.getSize());
+ path_bold(canvas, hiragino_maru_gothic_pro_dash(), paint, font.getSize());
- // use the portable typeface to generically test the fake bold code everywhere
- // (as long as the freetype option to do the bolding itself isn't enabled)
- sk_tool_utils::set_portable_typeface(&paint, "serif");
- const unsigned char hiThere[] = "Hi There";
- show_bold(canvas, hiThere, SK_ARRAY_COUNT(hiThere), x + SkIntToScalar(430), y, paint);
+ show_bold(canvas, "Hi There", x + SkIntToScalar(430), y, paint, font);
paint.setStyle(SkPaint::kStrokeAndFill_Style);
diff --git a/gm/textbloblooper.cpp b/gm/textbloblooper.cpp
index 49ee649231..51e815524f 100644
--- a/gm/textbloblooper.cpp
+++ b/gm/textbloblooper.cpp
@@ -226,8 +226,6 @@ protected:
SkPaint paint;
canvas->translate(10, 40);
- paint.setTextSize(40);
-
SkRect bounds = fBlob->bounds();
int y = 0;
diff --git a/gm/texteffects.cpp b/gm/texteffects.cpp
index 53b0f7fc8d..8fdaf8e62d 100644
--- a/gm/texteffects.cpp
+++ b/gm/texteffects.cpp
@@ -40,9 +40,7 @@ static SkPath create_underline(const SkTDArray<SkScalar>& intersections,
namespace {
-sk_sp<SkTextBlob> MakeFancyBlob(const SkPaint& paint, const char* text) {
- const SkFont font = SkFont::LEGACY_ExtractFromPaint(paint);
-
+sk_sp<SkTextBlob> MakeFancyBlob(const SkPaint& paint, const SkFont& font, const char* text) {
const size_t textLen = strlen(text);
const int glyphCount = font.countText(text, textLen, kUTF8_SkTextEncoding);
SkAutoTArray<SkGlyphID> glyphs(glyphCount);
@@ -107,14 +105,14 @@ DEF_SIMPLE_GM(fancyblobunderline, canvas, 1480, 1380) {
const SkPoint blobOffset = { 10, 80 };
for (size_t font = 0; font < SK_ARRAY_COUNT(fam); ++font) {
- sk_tool_utils::set_portable_typeface(&paint, fam[font]);
for (SkScalar textSize = 100; textSize > 10; textSize -= 20) {
- paint.setTextSize(textSize);
+ SkFont skFont(
+ sk_tool_utils::create_portable_typeface(fam[font], SkFontStyle()), textSize);
const SkScalar uWidth = textSize / 15;
paint.setStrokeWidth(uWidth);
paint.setStyle(SkPaint::kFill_Style);
- sk_sp<SkTextBlob> blob = MakeFancyBlob(paint, test);
+ sk_sp<SkTextBlob> blob = MakeFancyBlob(paint, skFont, test);
canvas->drawTextBlob(blob, blobOffset.x(), blobOffset.y(), paint);
const SkScalar uPos = uWidth;
diff --git a/gm/tilemodes.cpp b/gm/tilemodes.cpp
index be98f8c178..fa94deb455 100644
--- a/gm/tilemodes.cpp
+++ b/gm/tilemodes.cpp
@@ -79,6 +79,8 @@ protected:
}
void onDraw(SkCanvas* canvas) override {
+ SkPaint textPaint;
+ SkFont font(sk_tool_utils::create_portable_typeface(), 12);
int size = fPowerOfTwoSize ? kPOTSize : kNPOTSize;
@@ -136,14 +138,8 @@ protected:
x += r.width() * 4 / 3;
}
}
- {
- SkPaint p;
- SkString str;
- p.setAntiAlias(true);
- sk_tool_utils::set_portable_typeface(&p);
- str.printf("%s, %s", gConfigNames[i], gFilterNames[j]);
- canvas->drawString(str, x, y + r.height() * 2 / 3, p);
- }
+ canvas->drawString(SkStringPrintf("%s, %s", gConfigNames[i], gFilterNames[j]),
+ x, y + r.height() * 2 / 3, font, textPaint);
y += r.height() * 4 / 3;
}
diff --git a/gm/tilemodes_scaled.cpp b/gm/tilemodes_scaled.cpp
index 78c7641a18..9366927d39 100644
--- a/gm/tilemodes_scaled.cpp
+++ b/gm/tilemodes_scaled.cpp
@@ -77,6 +77,9 @@ protected:
}
void onDraw(SkCanvas* canvas) override {
+ SkPaint textPaint;
+ SkFont font(sk_tool_utils::create_portable_typeface(), 12);
+
float scale = 32.f/kPOTSize;
int size = fPowerOfTwoSize ? kPOTSize : kNPOTSize;
@@ -99,7 +102,6 @@ protected:
SkScalar y = SkIntToScalar(24);
SkScalar x = SkIntToScalar(10)/scale;
- SkFont font(sk_tool_utils::create_portable_typeface());
for (size_t kx = 0; kx < SK_ARRAY_COUNT(gModes); kx++) {
for (size_t ky = 0; ky < SK_ARRAY_COUNT(gModes); ky++) {
SkString str;
@@ -138,14 +140,8 @@ protected:
x += r.width() * 4 / 3;
}
}
- {
- SkPaint p;
- SkString str;
- p.setAntiAlias(true);
- sk_tool_utils::set_portable_typeface(&p);
- str.printf("%s, %s", gColorTypeNames[i], gFilterNames[j]);
- canvas->drawString(str, scale*x, scale*(y + r.height() * 2 / 3), p);
- }
+ canvas->drawString(SkStringPrintf("%s, %s", gColorTypeNames[i], gFilterNames[j]),
+ scale * x, scale * (y + r.height() * 2 / 3), font, textPaint);
y += r.height() * 4 / 3;
}
diff --git a/gm/xfermodes3.cpp b/gm/xfermodes3.cpp
index 9d53c2fd1c..b11d82a2fa 100644
--- a/gm/xfermodes3.cpp
+++ b/gm/xfermodes3.cpp
@@ -43,9 +43,8 @@ protected:
void onDraw(SkCanvas* canvas) override {
canvas->translate(SkIntToScalar(10), SkIntToScalar(20));
+ SkFont font(sk_tool_utils::create_portable_typeface());
SkPaint labelP;
- labelP.setAntiAlias(true);
- sk_tool_utils::set_portable_typeface(&labelP);
constexpr SkColor kSolidColors[] = {
SK_ColorTRANSPARENT,
@@ -70,9 +69,9 @@ protected:
for (size_t m = 0; m <= (size_t)SkBlendMode::kLastMode; ++m) {
SkBlendMode mode = static_cast<SkBlendMode>(m);
canvas->drawString(SkBlendMode_Name(mode),
- SkIntToScalar(x),
- SkIntToScalar(y + kSize + 3) + labelP.getTextSize(),
- labelP);
+ SkIntToScalar(x),
+ SkIntToScalar(y + kSize + 3) + font.getSize(),
+ font, labelP);
for (size_t c = 0; c < SK_ARRAY_COUNT(kSolidColors); ++c) {
SkPaint modePaint;
modePaint.setBlendMode(mode);