Index: gm/drawatlas.cpp |
diff --git a/gm/drawatlas.cpp b/gm/drawatlas.cpp |
index ba71eaea574fe40812d9f2e1394b690ba83b7611..ca0e9b91ba387666d956695c4e998e14b93a425a 100644 |
--- a/gm/drawatlas.cpp |
+++ b/gm/drawatlas.cpp |
@@ -121,16 +121,17 @@ static void draw_text_on_path_rigid(SkCanvas* canvas, const void* text, size_t l |
} |
xform[i].fSCos = tan.x(); |
xform[i].fSSin = tan.y(); |
- xform[i].fTx = pos.x(); |
- xform[i].fTy = pos.y(); |
+ xform[i].fTx = pos.x() - tan.y() * xy[i].y(); |
+ xform[i].fTy = pos.y() + tan.x() * xy[i].y(); |
} |
canvas->drawTextRSXform(text, length, &xform[0], nullptr, paint); |
} |
-DEF_SIMPLE_GM(drawTextRSXform, canvas, 510, 310) { |
- const char text[] = "ABCDFGHJKLMNOPQRSTUVWXYZ"; |
- const int N = sizeof(text) - 1; |
+DEF_SIMPLE_GM(drawTextRSXform, canvas, 510, 370) { |
+ const char text0[] = "ABCDFGHJKLMNOPQRSTUVWXYZ"; |
+ const char text1[] = "AAAAAAAAAAAAAAAAAAAAAAAAAA"; |
+ const int N = sizeof(text0) - 1; |
SkPoint pos[N]; |
SkRSXform xform[N]; |
@@ -145,7 +146,7 @@ DEF_SIMPLE_GM(drawTextRSXform, canvas, 510, 310) { |
xform[i].fSSin = SkScalarSin(rad); |
xform[i].fTx = x; |
xform[i].fTy = 0; |
- pos[i].set(x, 0); |
+ pos[i].set(x, -10); |
x += dx; |
rad += drad; |
} |
@@ -153,12 +154,12 @@ DEF_SIMPLE_GM(drawTextRSXform, canvas, 510, 310) { |
SkPaint paint; |
paint.setAntiAlias(true); |
paint.setTextSize(20); |
- canvas->drawTextRSXform(text, N, xform, nullptr, paint); |
+ canvas->drawTextRSXform(text0, N, xform, nullptr, paint); |
SkPath path; |
- path.addOval(SkRect::MakeXYWH(150, 50, 200, 200)); |
+ path.addOval(SkRect::MakeXYWH(150, 100, 200, 200)); |
- draw_text_on_path_rigid(canvas, text, N, pos, path, paint); |
+ draw_text_on_path_rigid(canvas, text1, N, pos, path, paint); |
paint.setStyle(SkPaint::kStroke_Style); |
canvas->drawPath(path, paint); |