aboutsummaryrefslogtreecommitdiffhomepage
path: root/samplecode
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 /samplecode
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 'samplecode')
-rw-r--r--samplecode/SampleApp.cpp4
-rw-r--r--samplecode/SampleCircle.cpp7
-rw-r--r--samplecode/SampleDither.cpp5
-rw-r--r--samplecode/SampleFontScalerTest.cpp9
-rw-r--r--samplecode/SampleHT.cpp4
5 files changed, 4 insertions, 25 deletions
diff --git a/samplecode/SampleApp.cpp b/samplecode/SampleApp.cpp
index ffa507bc17..7afaa96972 100644
--- a/samplecode/SampleApp.cpp
+++ b/samplecode/SampleApp.cpp
@@ -1372,9 +1372,7 @@ void SampleWindow::beforeChild(SkView* child, SkCanvas* canvas) {
if (fRotate) {
SkScalar cx = this->width() / 2;
SkScalar cy = this->height() / 2;
- canvas->translate(cx, cy);
- canvas->rotate(gAnimTimer.scaled(10));
- canvas->translate(-cx, -cy);
+ canvas->rotate(gAnimTimer.scaled(10), cx, cy);
}
if (fPerspAnim) {
diff --git a/samplecode/SampleCircle.cpp b/samplecode/SampleCircle.cpp
index ff88ac4b9b..f4e6cc99b4 100644
--- a/samplecode/SampleCircle.cpp
+++ b/samplecode/SampleCircle.cpp
@@ -87,17 +87,10 @@ protected:
path->close();
}
- static void rotate(SkCanvas* canvas, SkScalar angle, SkScalar px, SkScalar py) {
- canvas->translate(-px, -py);
- canvas->rotate(angle);
- canvas->translate(px, py);
- }
-
virtual void onDrawContent(SkCanvas* canvas) {
SkPaint paint;
paint.setAntiAlias(true);
paint.setStyle(SkPaint::kStroke_Style);
-// canvas->drawCircle(250, 250, 220, paint);
SkMatrix matrix;
matrix.setScale(SkIntToScalar(100), SkIntToScalar(100));
matrix.postTranslate(SkIntToScalar(200), SkIntToScalar(200));
diff --git a/samplecode/SampleDither.cpp b/samplecode/SampleDither.cpp
index 99b33f0f0e..a1b751b96f 100644
--- a/samplecode/SampleDither.cpp
+++ b/samplecode/SampleDither.cpp
@@ -37,10 +37,7 @@ static void draw_sweep(SkCanvas* c, int width, int height, SkScalar angle) {
colors, nullptr, SK_ARRAY_COUNT(colors)));
SkAutoCanvasRestore acr(c, true);
-
- c->translate(r.centerX(), r.centerY());
- c->rotate(angle);
- c->translate(-r.centerX(), -r.centerY());
+ c->rotate(angle, r.centerX(), r.centerY());
SkRect bounds = r;
r.inset(p.getStrokeWidth(), p.getStrokeWidth());
diff --git a/samplecode/SampleFontScalerTest.cpp b/samplecode/SampleFontScalerTest.cpp
index bd9309790e..2b4a46d00c 100644
--- a/samplecode/SampleFontScalerTest.cpp
+++ b/samplecode/SampleFontScalerTest.cpp
@@ -44,7 +44,6 @@ public:
fFaces[i] = SkTypeface::MakeFromName(
gFaces[i].fName, SkFontStyle::FromOldStyle(gFaces[i].fStyle));
}
-// this->setBGColor(0xFFDDDDDD);
}
protected:
@@ -57,12 +56,6 @@ protected:
return this->INHERITED::onQuery(evt);
}
- 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 onDrawContent(SkCanvas* canvas) {
SkPaint paint;
@@ -100,7 +93,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/samplecode/SampleHT.cpp b/samplecode/SampleHT.cpp
index d0cd3a5499..50ea2875ec 100644
--- a/samplecode/SampleHT.cpp
+++ b/samplecode/SampleHT.cpp
@@ -95,9 +95,7 @@ public:
fColor = floats_to_color(values);
canvas->save();
- canvas->translate(fR.centerX(), fR.centerY());
- canvas->rotate(values[4]);
- canvas->translate(-fR.centerX(), -fR.centerY());
+ canvas->rotate(values[4], fR.centerX(), fR.centerY());
switch (res) {
case SkInterpolator::kFreezeEnd_Result: