aboutsummaryrefslogtreecommitdiffhomepage
path: root/gm/conicpaths.cpp
diff options
context:
space:
mode:
authorGravatar reed <reed@chromium.org>2014-12-31 20:07:01 -0800
committerGravatar Commit bot <commit-bot@chromium.org>2014-12-31 20:07:01 -0800
commitd1bd1d75a3b5902193b430a611f2eb46edf38435 (patch)
tree9a9ab52fcccca7726b1a8c9b3df813ab80b02e45 /gm/conicpaths.cpp
parentb2497c2d945c0a5d770865b026e2d5947bf37c91 (diff)
fix conic gm to have fixed wrapping
BUG=skia: TBR= NOTRY=True Review URL: https://codereview.chromium.org/815143003
Diffstat (limited to 'gm/conicpaths.cpp')
-rw-r--r--gm/conicpaths.cpp105
1 files changed, 39 insertions, 66 deletions
diff --git a/gm/conicpaths.cpp b/gm/conicpaths.cpp
index e7dbb31e8c..96242faf5f 100644
--- a/gm/conicpaths.cpp
+++ b/gm/conicpaths.cpp
@@ -9,109 +9,81 @@
#include "SkCanvas.h"
#include "SkTArray.h"
-namespace skiagm {
-
-class ConicPathsGM : public GM {
+class ConicPathsGM : public skiagm::GM {
protected:
- virtual SkString onShortName() SK_OVERRIDE {
+ SkString onShortName() SK_OVERRIDE {
return SkString("conicpaths");
}
- virtual SkISize onISize() SK_OVERRIDE {
- return SkISize::Make(1000, 1000);
+ SkISize onISize() SK_OVERRIDE {
+ return SkISize::Make(950, 1000);
}
- virtual void onOnceBeforeDraw() SK_OVERRIDE {
+ void onOnceBeforeDraw() SK_OVERRIDE {
{
+ const SkScalar w = SkScalarSqrt(2)/2;
SkPath* conicCirlce = &fPaths.push_back();
conicCirlce->moveTo(0, -0);
- conicCirlce->conicTo(SkIntToScalar(0), SkIntToScalar(50),
- SkIntToScalar(50), SkIntToScalar(50),
- SkScalarHalf(SkScalarSqrt(2)));
- conicCirlce->rConicTo(SkIntToScalar(50), SkIntToScalar(0),
- SkIntToScalar(50), SkIntToScalar(-50),
- SkScalarHalf(SkScalarSqrt(2)));
- conicCirlce->rConicTo(SkIntToScalar(0), SkIntToScalar(-50),
- SkIntToScalar(-50), SkIntToScalar(-50),
- SkScalarHalf(SkScalarSqrt(2)));
- conicCirlce->rConicTo(SkIntToScalar(-50), SkIntToScalar(0),
- SkIntToScalar(-50), SkIntToScalar(50),
- SkScalarHalf(SkScalarSqrt(2)));
+ conicCirlce->conicTo(0, 50, 50, 50, w);
+ conicCirlce->rConicTo(50, 0, 50, -50, w);
+ conicCirlce->rConicTo(0, -50, -50, -50, w);
+ conicCirlce->rConicTo(-50, 0, -50, 50, w);
}
{
SkPath* hyperbola = &fPaths.push_back();
hyperbola->moveTo(0, -0);
- hyperbola->conicTo(SkIntToScalar(0), SkIntToScalar(100),
- SkIntToScalar(100), SkIntToScalar(100),
- SkIntToScalar(2));
+ hyperbola->conicTo(0, 100, 100, 100, 2);
}
{
SkPath* thinHyperbola = &fPaths.push_back();
thinHyperbola->moveTo(0, -0);
- thinHyperbola->conicTo(SkIntToScalar(100), SkIntToScalar(100),
- SkIntToScalar(5), SkIntToScalar(0),
- SkIntToScalar(2));
+ thinHyperbola->conicTo(100, 100, 5, 0, 2);
}
{
SkPath* veryThinHyperbola = &fPaths.push_back();
veryThinHyperbola->moveTo(0, -0);
- veryThinHyperbola->conicTo(SkIntToScalar(100), SkIntToScalar(100),
- SkIntToScalar(1), SkIntToScalar(0),
- SkIntToScalar(2));
+ veryThinHyperbola->conicTo(100, 100, 1, 0, 2);
}
{
SkPath* closedHyperbola = &fPaths.push_back();
closedHyperbola->moveTo(0, -0);
- closedHyperbola->conicTo(SkIntToScalar(100), SkIntToScalar(100),
- SkIntToScalar(0), SkIntToScalar(0),
- SkIntToScalar(2));
+ closedHyperbola->conicTo(100, 100, 0, 0, 2);
}
{
// using 1 as weight defaults to using quadTo
SkPath* nearParabola = &fPaths.push_back();
nearParabola->moveTo(0, -0);
- nearParabola->conicTo(SkIntToScalar(0), SkIntToScalar(100),
- SkIntToScalar(100), SkIntToScalar(100),
- 0.999f);
+ nearParabola->conicTo(0, 100, 100, 100, 0.999f);
}
{
SkPath* thinEllipse = &fPaths.push_back();
thinEllipse->moveTo(0, -0);
- thinEllipse->conicTo(SkIntToScalar(100), SkIntToScalar(100),
- SkIntToScalar(5), SkIntToScalar(0),
- SK_ScalarHalf);
+ thinEllipse->conicTo(100, 100, 5, 0, SK_ScalarHalf);
}
{
SkPath* veryThinEllipse = &fPaths.push_back();
veryThinEllipse->moveTo(0, -0);
- veryThinEllipse->conicTo(SkIntToScalar(100), SkIntToScalar(100),
- SkIntToScalar(1), SkIntToScalar(0),
- SK_ScalarHalf);
+ veryThinEllipse->conicTo(100, 100, 1, 0, SK_ScalarHalf);
}
{
SkPath* closedEllipse = &fPaths.push_back();
closedEllipse->moveTo(0, -0);
- closedEllipse->conicTo(SkIntToScalar(100), SkIntToScalar(100),
- SkIntToScalar(0), SkIntToScalar(0),
- SK_ScalarHalf);
+ closedEllipse->conicTo(100, 100, 0, 0, SK_ScalarHalf);
}
}
- virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
- static const SkAlpha kAlphaValue[] = { 0xFF, 0x40 };
-
- enum {
- kMargin = 15,
- };
- int wrapX = canvas->getDeviceSize().fWidth - kMargin;
+ void onDraw(SkCanvas* canvas) SK_OVERRIDE {
+ const SkAlpha kAlphaValue[] = { 0xFF, 0x40 };
SkScalar maxH = 0;
- canvas->translate(SkIntToScalar(kMargin), SkIntToScalar(kMargin));
+ const SkScalar margin = 15;
+ canvas->translate(margin, margin);
canvas->save();
- SkScalar x = SkIntToScalar(kMargin);
+ SkScalar x = margin;
+ int counter = 0;
for (int p = 0; p < fPaths.count(); ++p) {
for (size_t a = 0; a < SK_ARRAY_COUNT(kAlphaValue); ++a) {
for (int aa = 0; aa < 2; ++aa) {
@@ -119,14 +91,6 @@ protected:
const SkRect& bounds = fPaths[p].getBounds();
- if (x + bounds.width() > wrapX) {
- canvas->restore();
- canvas->translate(0, maxH + SkIntToScalar(kMargin));
- canvas->save();
- maxH = 0;
- x = SkIntToScalar(kMargin);
- }
-
SkPaint paint;
paint.setARGB(kAlphaValue[a], 0, 0, 0);
paint.setAntiAlias(SkToBool(aa));
@@ -143,9 +107,19 @@ protected:
maxH = SkMaxScalar(maxH, bounds.height());
- SkScalar dx = bounds.width() + SkIntToScalar(kMargin);
+ SkScalar dx = bounds.width() + margin;
x += dx;
canvas->translate(dx, 0);
+
+ if (++counter == 8) {
+ counter = 0;
+
+ canvas->restore();
+ canvas->translate(0, maxH + margin);
+ canvas->save();
+ maxH = 0;
+ x = margin;
+ }
}
}
}
@@ -153,16 +127,15 @@ protected:
canvas->restore();
}
- virtual uint32_t onGetFlags() const SK_OVERRIDE {
- return kSkipPDF_Flag;
+ uint32_t onGetFlags() const SK_OVERRIDE {
+ return kSkipPDF_Flag;
}
private:
SkTArray<SkPath> fPaths;
- typedef GM INHERITED;
+ typedef skiagm::GM INHERITED;
};
+DEF_GM( return SkNEW(ConicPathsGM); )
//////////////////////////////////////////////////////////////////////////////
-DEF_GM( return SkNEW(ConicPathsGM); )
-}