aboutsummaryrefslogtreecommitdiffhomepage
path: root/gm
diff options
context:
space:
mode:
authorGravatar bungeman <bungeman@google.com>2016-07-12 15:01:19 -0700
committerGravatar Commit bot <commit-bot@chromium.org>2016-07-12 15:01:19 -0700
commit7438bfc0804d021aa92cdd5ea644994a4248f3db (patch)
tree0b801d131d01d45e83160a6d0d877949590908de /gm
parent2edf0c6a719b8dff4365628cf3b4481c5035f07a (diff)
Factor code to rotate a canvas about a point.
SkMatrix::scale and ::rotate take a point around which to scale or rotate. Canvas lacks these helpers, so the code to rotate a canvas around a point has been duplicated many times. Factor all of these implementations into SkCanvas::rotate. GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2142033002 Review-Url: https://codereview.chromium.org/2142033002
Diffstat (limited to 'gm')
-rw-r--r--gm/dftext.cpp10
-rw-r--r--gm/fontscaler.cpp13
-rw-r--r--gm/fontscalerdistortable.cpp10
-rw-r--r--gm/imagefilterstransformed.cpp8
-rw-r--r--gm/strokes.cpp8
-rw-r--r--gm/typeface.cpp15
6 files changed, 8 insertions, 56 deletions
diff --git a/gm/dftext.cpp b/gm/dftext.cpp
index 42d650ed2f..8ab2df71ba 100644
--- a/gm/dftext.cpp
+++ b/gm/dftext.cpp
@@ -33,14 +33,6 @@ protected:
return SkISize::Make(1024, 768);
}
- static void rotate_about(SkCanvas* canvas,
- SkScalar degrees,
- SkScalar px, SkScalar py) {
- canvas->translate(px, py);
- canvas->rotate(degrees);
- canvas->translate(-px, -py);
- }
-
virtual void onDraw(SkCanvas* inputCanvas) override {
SkScalar textSizes[] = { 9.0f, 9.0f*2.0f, 9.0f*5.0f, 9.0f*2.0f*5.0f };
SkScalar scales[] = { 2.0f*5.0f, 5.0f, 2.0f, 1.0f };
@@ -95,7 +87,7 @@ protected:
SkAutoCanvasRestore acr(canvas, true);
canvas->translate(SkIntToScalar(10 + i * 200), -80);
- rotate_about(canvas, SkIntToScalar(i * 5), rotX, rotY);
+ canvas->rotate(SkIntToScalar(i * 5), rotX, rotY);
for (int ps = 6; ps <= 32; ps += 3) {
paint.setTextSize(SkIntToScalar(ps));
canvas->drawText(text, textLen, rotX, rotY, paint);
diff --git a/gm/fontscaler.cpp b/gm/fontscaler.cpp
index 69cf346c4d..cc9815c9d9 100644
--- a/gm/fontscaler.cpp
+++ b/gm/fontscaler.cpp
@@ -15,9 +15,6 @@ public:
this->setBGColor(0xFFFFFFFF);
}
- virtual ~FontScalerGM() {
- }
-
protected:
SkString onShortName() override {
@@ -30,14 +27,6 @@ protected:
return SkISize::Make(1450, 750);
}
- static void rotate_about(SkCanvas* canvas,
- SkScalar degrees,
- SkScalar px, SkScalar py) {
- canvas->translate(px, py);
- canvas->rotate(degrees);
- canvas->translate(-px, -py);
- }
-
void onDraw(SkCanvas* canvas) override {
SkPaint paint;
@@ -59,7 +48,7 @@ protected:
SkAutoCanvasRestore acr(canvas, true);
canvas->translate(SkIntToScalar(50 + i * 230),
SkIntToScalar(20));
- rotate_about(canvas, SkIntToScalar(i * 5), x, y * 10);
+ canvas->rotate(SkIntToScalar(i * 5), x, y * 10);
{
SkPaint p;
diff --git a/gm/fontscalerdistortable.cpp b/gm/fontscalerdistortable.cpp
index b4f2ca370c..be6a7ebc58 100644
--- a/gm/fontscalerdistortable.cpp
+++ b/gm/fontscalerdistortable.cpp
@@ -19,8 +19,6 @@ public:
this->setBGColor(0xFFFFFFFF);
}
- virtual ~FontScalerDistortableGM() { }
-
protected:
SkString onShortName() override {
@@ -31,12 +29,6 @@ protected:
return SkISize::Make(550, 700);
}
- static void rotate_about(SkCanvas* canvas, SkScalar degrees, SkScalar px, SkScalar py) {
- canvas->translate(px, py);
- canvas->rotate(degrees);
- canvas->translate(-px, -py);
- }
-
void onDraw(SkCanvas* canvas) override {
SkPaint paint;
paint.setAntiAlias(true);
@@ -63,7 +55,7 @@ protected:
SkAutoCanvasRestore acr(canvas, true);
canvas->translate(SkIntToScalar(30 + i * 100), SkIntToScalar(20));
- rotate_about(canvas, SkIntToScalar(i * 5), x, y * 10);
+ canvas->rotate(SkIntToScalar(i * 5), x, y * 10);
{
SkPaint p;
diff --git a/gm/imagefilterstransformed.cpp b/gm/imagefilterstransformed.cpp
index 7ceff00135..0906eb3f3c 100644
--- a/gm/imagefilterstransformed.cpp
+++ b/gm/imagefilterstransformed.cpp
@@ -140,18 +140,14 @@ DEF_SIMPLE_GM(rotate_imagefilter, canvas, 500, 500) {
canvas->translate(150, 0);
canvas->save();
- canvas->translate(100, 100);
- canvas->rotate(30);
- canvas->translate(-100, -100);
+ canvas->rotate(30, 100, 100);
canvas->drawRect(r, paint);
canvas->restore();
paint.setAntiAlias(true);
canvas->translate(150, 0);
canvas->save();
- canvas->translate(100, 100);
- canvas->rotate(30);
- canvas->translate(-100, -100);
+ canvas->rotate(30, 100, 100);
canvas->drawRect(r, paint);
canvas->restore();
diff --git a/gm/strokes.cpp b/gm/strokes.cpp
index 61f5a8af6a..afbe5ee4da 100644
--- a/gm/strokes.cpp
+++ b/gm/strokes.cpp
@@ -290,12 +290,6 @@ protected:
return SkISize::Make(W, H*2);
}
- static void rotate(SkScalar angle, SkScalar px, SkScalar py, SkCanvas* canvas) {
- SkMatrix matrix;
- matrix.setRotate(angle, px, py);
- canvas->concat(matrix);
- }
-
void onDraw(SkCanvas* canvas) override {
canvas->drawColor(SK_ColorWHITE);
@@ -316,7 +310,7 @@ protected:
for (int i = 0; i < N/2; i++) {
SkRect r;
rnd_rect(&r, &paint, rand);
- rotate(SkIntToScalar(15), SW/2, SH/2, canvas);
+ canvas->rotate(SkIntToScalar(15), SW/2, SH/2);
canvas->drawPath(fPath, paint);
}
}
diff --git a/gm/typeface.cpp b/gm/typeface.cpp
index 34420dbee1..d579a156a6 100644
--- a/gm/typeface.cpp
+++ b/gm/typeface.cpp
@@ -154,20 +154,9 @@ private:
typedef skiagm::GM INHERITED;
};
-static void rotate_about(SkCanvas* canvas,
- SkScalar degrees,
- SkScalar px, SkScalar py) {
- canvas->translate(px, py);
- canvas->rotate(degrees);
- canvas->translate(-px, -py);
-}
-
class TypefaceRenderingGM : public skiagm::GM {
sk_sp<SkTypeface> fFace;
-public:
- TypefaceRenderingGM() { }
-
protected:
void onOnceBeforeDraw() override {
fFace = MakeResourceAsTypeface("/fonts/hintgasp.ttf");
@@ -256,8 +245,8 @@ protected:
for (const bool& rotateABit : rotateABitTypes) {
SkAutoCanvasRestore acr(canvas, true);
if (rotateABit) {
- rotate_about(canvas, 2, x + subpixel.offset.x(),
- y + subpixel.offset.y());
+ canvas->rotate(2, x + subpixel.offset.x(),
+ y + subpixel.offset.y());
}
canvas->drawText("A", 1, x + subpixel.offset.x(),
y + subpixel.offset.y(), paint);