Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(640)

Unified Diff: gm/complexclip2.cpp

Issue 23576015: Change old PRG to be SkLCGRandom; change new one to SkRandom (Closed) Base URL: https://skia.googlecode.com/svn/trunk
Patch Set: Fix some spurious SkMWCRandoms Created 7 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « gm/circles.cpp ('k') | gm/convexpaths.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: gm/complexclip2.cpp
diff --git a/gm/complexclip2.cpp b/gm/complexclip2.cpp
index ce1f0e07460caed6329da6a1bd8cf05a556ca417..2773321cfdce2da92763a3d3abbdb22e1ae131d6 100644
--- a/gm/complexclip2.cpp
+++ b/gm/complexclip2.cpp
@@ -1,182 +1,182 @@
-/*
- * Copyright 2011 Google Inc.
- *
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file.
- */
-
-
-#include "gm.h"
-#include "SkCanvas.h"
-#include "SkPath.h"
-#include "SkRandom.h"
-
-namespace skiagm {
-
-class ComplexClip2GM : public GM {
-public:
- ComplexClip2GM(bool doPaths, bool antiAlias)
- : fDoPaths(doPaths)
- , fAntiAlias(antiAlias) {
- this->setBGColor(SkColorSetRGB(0xDD,0xA0,0xDD));
-
- // offset the rects a bit so we get antialiasing even in the rect case
- SkScalar xA = SkFloatToScalar(0.65f);
- SkScalar xB = SkFloatToScalar(10.65f);
- SkScalar xC = SkFloatToScalar(20.65f);
- SkScalar xD = SkFloatToScalar(30.65f);
- SkScalar xE = SkFloatToScalar(40.65f);
- SkScalar xF = SkFloatToScalar(50.65f);
-
- SkScalar yA = SkFloatToScalar(0.65f);
- SkScalar yB = SkFloatToScalar(10.65f);
- SkScalar yC = SkFloatToScalar(20.65f);
- SkScalar yD = SkFloatToScalar(30.65f);
- SkScalar yE = SkFloatToScalar(40.65f);
- SkScalar yF = SkFloatToScalar(50.65f);
-
- fWidth = xF - xA;
- fHeight = yF - yA;
-
- fRects[0].set(xB, yB, xE, yE);
- fPaths[0].addRoundRect(fRects[0], SkIntToScalar(5), SkIntToScalar(5));
- fRectColors[0] = SK_ColorRED;
-
- fRects[1].set(xA, yA, xD, yD);
- fPaths[1].addRoundRect(fRects[1], SkIntToScalar(5), SkIntToScalar(5));
- fRectColors[1] = SK_ColorGREEN;
-
- fRects[2].set(xC, yA, xF, yD);
- fPaths[2].addRoundRect(fRects[2], SkIntToScalar(5), SkIntToScalar(5));
- fRectColors[2] = SK_ColorBLUE;
-
- fRects[3].set(xA, yC, xD, yF);
- fPaths[3].addRoundRect(fRects[3], SkIntToScalar(5), SkIntToScalar(5));
- fRectColors[3] = SK_ColorYELLOW;
-
- fRects[4].set(xC, yC, xF, yF);
- fPaths[4].addRoundRect(fRects[4], SkIntToScalar(5), SkIntToScalar(5));
- fRectColors[4] = SK_ColorCYAN;
-
- fTotalWidth = kCols * fWidth + SK_Scalar1 * (kCols + 1) * kPadX;
- fTotalHeight = kRows * fHeight + SK_Scalar1 * (kRows + 1) * kPadY;
-
- SkRegion::Op ops[] = {
- SkRegion::kDifference_Op,
- SkRegion::kIntersect_Op,
- SkRegion::kUnion_Op,
- SkRegion::kXOR_Op,
- SkRegion::kReverseDifference_Op,
- SkRegion::kReplace_Op,
- };
-
- SkRandom r;
- for (int i = 0; i < kRows; ++i) {
- for (int j = 0; j < kCols; ++j) {
- for (int k = 0; k < 5; ++k) {
- fOps[j*kRows+i][k] = ops[r.nextU() % SK_ARRAY_COUNT(ops)];
- }
- }
- }
- }
-
-protected:
-
- static const int kRows = 5;
- static const int kCols = 5;
- static const int kPadX = 20;
- static const int kPadY = 20;
-
- virtual SkString onShortName() {
- if (!fDoPaths && !fAntiAlias) {
- return SkString("complexclip2");
- }
-
- SkString str;
- str.printf("complexclip2_%s_%s",
- fDoPaths ? "path" : "rect",
- fAntiAlias ? "aa" : "bw");
- return str;
- }
-
- virtual SkISize onISize() {
- return make_isize(SkScalarRoundToInt(fTotalWidth),
- SkScalarRoundToInt(fTotalHeight));
- }
-
- virtual void onDraw(SkCanvas* canvas) {
- SkPaint rectPaint;
- rectPaint.setStyle(SkPaint::kStroke_Style);
- rectPaint.setStrokeWidth(-1);
-
- SkPaint fillPaint;
- fillPaint.setColor(SkColorSetRGB(0xA0,0xDD,0xA0));
-
- for (int i = 0; i < kRows; ++i) {
- for (int j = 0; j < kCols; ++j) {
- canvas->save();
-
- canvas->translate(kPadX * SK_Scalar1 + (fWidth + kPadX * SK_Scalar1)*j,
- kPadY * SK_Scalar1 + (fHeight + kPadY * SK_Scalar1)*i);
-
- // draw the original shapes first so we can see the
- // antialiasing on the clipped draw
- for (int k = 0; k < 5; ++k) {
- rectPaint.setColor(fRectColors[k]);
- if (fDoPaths) {
- canvas->drawPath(fPaths[k], rectPaint);
- } else {
- canvas->drawRect(fRects[k], rectPaint);
- }
- }
-
- for (int k = 0; k < 5; ++k) {
- if (fDoPaths) {
- canvas->clipPath(fPaths[k],
- fOps[j*kRows+i][k],
- fAntiAlias);
- } else {
- canvas->clipRect(fRects[k],
- fOps[j*kRows+i][k],
- fAntiAlias);
- }
- }
- canvas->drawRect(SkRect::MakeWH(fWidth, fHeight), fillPaint);
- canvas->restore();
- }
- }
- }
-private:
- bool fDoPaths;
- bool fAntiAlias;
- SkRect fRects[5];
- SkPath fPaths[5];
- SkColor fRectColors[5];
- SkRegion::Op fOps[kRows * kCols][5];
- SkScalar fWidth;
- SkScalar fHeight;
- SkScalar fTotalWidth;
- SkScalar fTotalHeight;
-
- typedef GM INHERITED;
-};
-
-//////////////////////////////////////////////////////////////////////////////
-
-// bw rects
-static GM* MyFactory(void*) { return new ComplexClip2GM(false, false); }
-static GMRegistry reg(MyFactory);
-
-// bw paths
-static GM* MyFactory2(void*) { return new ComplexClip2GM(true, false); }
-static GMRegistry reg2(MyFactory2);
-
-// aa rects
-static GM* MyFactory3(void*) { return new ComplexClip2GM(false, true); }
-static GMRegistry reg3(MyFactory3);
-
-// aa paths
-static GM* MyFactory4(void*) { return new ComplexClip2GM(true, true); }
-static GMRegistry reg4(MyFactory4);
-
-}
+/*
+ * Copyright 2011 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+
+#include "gm.h"
+#include "SkCanvas.h"
+#include "SkPath.h"
+#include "SkRandom.h"
+
+namespace skiagm {
+
+class ComplexClip2GM : public GM {
+public:
+ ComplexClip2GM(bool doPaths, bool antiAlias)
+ : fDoPaths(doPaths)
+ , fAntiAlias(antiAlias) {
+ this->setBGColor(SkColorSetRGB(0xDD,0xA0,0xDD));
+
+ // offset the rects a bit so we get antialiasing even in the rect case
+ SkScalar xA = SkFloatToScalar(0.65f);
+ SkScalar xB = SkFloatToScalar(10.65f);
+ SkScalar xC = SkFloatToScalar(20.65f);
+ SkScalar xD = SkFloatToScalar(30.65f);
+ SkScalar xE = SkFloatToScalar(40.65f);
+ SkScalar xF = SkFloatToScalar(50.65f);
+
+ SkScalar yA = SkFloatToScalar(0.65f);
+ SkScalar yB = SkFloatToScalar(10.65f);
+ SkScalar yC = SkFloatToScalar(20.65f);
+ SkScalar yD = SkFloatToScalar(30.65f);
+ SkScalar yE = SkFloatToScalar(40.65f);
+ SkScalar yF = SkFloatToScalar(50.65f);
+
+ fWidth = xF - xA;
+ fHeight = yF - yA;
+
+ fRects[0].set(xB, yB, xE, yE);
+ fPaths[0].addRoundRect(fRects[0], SkIntToScalar(5), SkIntToScalar(5));
+ fRectColors[0] = SK_ColorRED;
+
+ fRects[1].set(xA, yA, xD, yD);
+ fPaths[1].addRoundRect(fRects[1], SkIntToScalar(5), SkIntToScalar(5));
+ fRectColors[1] = SK_ColorGREEN;
+
+ fRects[2].set(xC, yA, xF, yD);
+ fPaths[2].addRoundRect(fRects[2], SkIntToScalar(5), SkIntToScalar(5));
+ fRectColors[2] = SK_ColorBLUE;
+
+ fRects[3].set(xA, yC, xD, yF);
+ fPaths[3].addRoundRect(fRects[3], SkIntToScalar(5), SkIntToScalar(5));
+ fRectColors[3] = SK_ColorYELLOW;
+
+ fRects[4].set(xC, yC, xF, yF);
+ fPaths[4].addRoundRect(fRects[4], SkIntToScalar(5), SkIntToScalar(5));
+ fRectColors[4] = SK_ColorCYAN;
+
+ fTotalWidth = kCols * fWidth + SK_Scalar1 * (kCols + 1) * kPadX;
+ fTotalHeight = kRows * fHeight + SK_Scalar1 * (kRows + 1) * kPadY;
+
+ SkRegion::Op ops[] = {
+ SkRegion::kDifference_Op,
+ SkRegion::kIntersect_Op,
+ SkRegion::kUnion_Op,
+ SkRegion::kXOR_Op,
+ SkRegion::kReverseDifference_Op,
+ SkRegion::kReplace_Op,
+ };
+
+ SkLCGRandom r;
+ for (int i = 0; i < kRows; ++i) {
+ for (int j = 0; j < kCols; ++j) {
+ for (int k = 0; k < 5; ++k) {
+ fOps[j*kRows+i][k] = ops[r.nextU() % SK_ARRAY_COUNT(ops)];
+ }
+ }
+ }
+ }
+
+protected:
+
+ static const int kRows = 5;
+ static const int kCols = 5;
+ static const int kPadX = 20;
+ static const int kPadY = 20;
+
+ virtual SkString onShortName() {
+ if (!fDoPaths && !fAntiAlias) {
+ return SkString("complexclip2");
+ }
+
+ SkString str;
+ str.printf("complexclip2_%s_%s",
+ fDoPaths ? "path" : "rect",
+ fAntiAlias ? "aa" : "bw");
+ return str;
+ }
+
+ virtual SkISize onISize() {
+ return make_isize(SkScalarRoundToInt(fTotalWidth),
+ SkScalarRoundToInt(fTotalHeight));
+ }
+
+ virtual void onDraw(SkCanvas* canvas) {
+ SkPaint rectPaint;
+ rectPaint.setStyle(SkPaint::kStroke_Style);
+ rectPaint.setStrokeWidth(-1);
+
+ SkPaint fillPaint;
+ fillPaint.setColor(SkColorSetRGB(0xA0,0xDD,0xA0));
+
+ for (int i = 0; i < kRows; ++i) {
+ for (int j = 0; j < kCols; ++j) {
+ canvas->save();
+
+ canvas->translate(kPadX * SK_Scalar1 + (fWidth + kPadX * SK_Scalar1)*j,
+ kPadY * SK_Scalar1 + (fHeight + kPadY * SK_Scalar1)*i);
+
+ // draw the original shapes first so we can see the
+ // antialiasing on the clipped draw
+ for (int k = 0; k < 5; ++k) {
+ rectPaint.setColor(fRectColors[k]);
+ if (fDoPaths) {
+ canvas->drawPath(fPaths[k], rectPaint);
+ } else {
+ canvas->drawRect(fRects[k], rectPaint);
+ }
+ }
+
+ for (int k = 0; k < 5; ++k) {
+ if (fDoPaths) {
+ canvas->clipPath(fPaths[k],
+ fOps[j*kRows+i][k],
+ fAntiAlias);
+ } else {
+ canvas->clipRect(fRects[k],
+ fOps[j*kRows+i][k],
+ fAntiAlias);
+ }
+ }
+ canvas->drawRect(SkRect::MakeWH(fWidth, fHeight), fillPaint);
+ canvas->restore();
+ }
+ }
+ }
+private:
+ bool fDoPaths;
+ bool fAntiAlias;
+ SkRect fRects[5];
+ SkPath fPaths[5];
+ SkColor fRectColors[5];
+ SkRegion::Op fOps[kRows * kCols][5];
+ SkScalar fWidth;
+ SkScalar fHeight;
+ SkScalar fTotalWidth;
+ SkScalar fTotalHeight;
+
+ typedef GM INHERITED;
+};
+
+//////////////////////////////////////////////////////////////////////////////
+
+// bw rects
+static GM* MyFactory(void*) { return new ComplexClip2GM(false, false); }
+static GMRegistry reg(MyFactory);
+
+// bw paths
+static GM* MyFactory2(void*) { return new ComplexClip2GM(true, false); }
+static GMRegistry reg2(MyFactory2);
+
+// aa rects
+static GM* MyFactory3(void*) { return new ComplexClip2GM(false, true); }
+static GMRegistry reg3(MyFactory3);
+
+// aa paths
+static GM* MyFactory4(void*) { return new ComplexClip2GM(true, true); }
+static GMRegistry reg4(MyFactory4);
+
+}
« no previous file with comments | « gm/circles.cpp ('k') | gm/convexpaths.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698