Make fontscalerdistortable more flexible.
This gm is often used as a testbed for various variable font issues, so
make it easier to tweak all the values.
Change-Id: I8291c693b73036a8f3b395e6bdd50b0037da1b84
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/233418
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Ben Wagner <bungeman@google.com>
diff --git a/gm/fontscalerdistortable.cpp b/gm/fontscalerdistortable.cpp
index 609b75a..441e705 100644
--- a/gm/fontscalerdistortable.cpp
+++ b/gm/fontscalerdistortable.cpp
@@ -34,7 +34,7 @@
this->setBGColor(0xFFFFFFFF);
}
-protected:
+private:
SkString onShortName() override {
return SkString("fontscalerdistortable");
@@ -61,17 +61,22 @@
const char* text = "abc";
const size_t textLen = strlen(text);
- for (int j = 0; j < 2; ++j) {
- for (int i = 0; i < 5; ++i) {
+ SkFourByteTag tag = SkSetFourByteTag('w','g','h','t');
+ constexpr SkScalar tagMin = 0.5f;
+ constexpr SkScalar tagMax = 2.0f;
+ constexpr int rows = 2;
+ constexpr int cols = 5;
+ for (int row = 0; row < rows; ++row) {
+ for (int col = 0; col < cols; ++col) {
SkScalar x = SkIntToScalar(10);
SkScalar y = SkIntToScalar(20);
- SkFourByteTag tag = SkSetFourByteTag('w','g','h','t');
- SkScalar styleValue = SkDoubleToScalar(0.5 + (5 * j + i) * ((2.0 - 0.5) / (2 * 5)));
+ SkScalar styleValue = SkScalarInterp(tagMin, tagMax,
+ SkScalar(row * cols + col) / (rows * cols));
SkFontArguments::VariationPosition::Coordinate coordinates[] = {{tag, styleValue}};
SkFontArguments::VariationPosition position =
{ coordinates, SK_ARRAY_COUNT(coordinates) };
- if (j == 0 && distortable) {
+ if (row == 0 && distortable) {
sk_sp<SkTypeface> clone = distortable->makeClone(
SkFontArguments().setVariationDesignPosition(position));
font.setTypeface(clone ? std::move(clone) : distortable);
@@ -82,8 +87,8 @@
}
SkAutoCanvasRestore acr(canvas, true);
- canvas->translate(SkIntToScalar(30 + i * 100), SkIntToScalar(20));
- canvas->rotate(SkIntToScalar(i * 5), x, y * 10);
+ canvas->translate(SkIntToScalar(30 + col * 100), SkIntToScalar(20));
+ canvas->rotate(SkIntToScalar(col * 5), x, y * 10);
{
SkPaint p;
@@ -106,9 +111,6 @@
}
return DrawResult::kOk;
}
-
-private:
- typedef GM INHERITED;
};
//////////////////////////////////////////////////////////////////////////////