Chromium Code Reviews| Index: gm/mixedxfermodes.cpp |
| diff --git a/gm/mixedxfermodes.cpp b/gm/mixedxfermodes.cpp |
| index a5023e1b0b07218ad6b2acc171568ecae7d35de4..a22ead13aa27b3f9484979a0e212bd04fecfc7d6 100644 |
| --- a/gm/mixedxfermodes.cpp |
| +++ b/gm/mixedxfermodes.cpp |
| @@ -22,6 +22,15 @@ public: |
| } |
| protected: |
| + enum ShapeType { |
| + kShapeTypeCircle, |
| + kShapeTypeRoundRect, |
| + kShapeTypeRect, |
| + kShapeTypeConvexPath, |
| + kShapeTypeConcavePath, |
| + kNumShapeTypes |
| + }; |
| + |
| virtual SkString onShortName() SK_OVERRIDE { |
| return SkString("mixed_xfermodes"); |
| } |
| @@ -32,21 +41,20 @@ protected: |
| void drawShape(SkCanvas* canvas, |
| const SkPaint& paint, |
| - SkRandom* random) { |
| + ShapeType type) { |
| static const SkRect kRect = SkRect::MakeXYWH(SkIntToScalar(-50), SkIntToScalar(-50), |
| SkIntToScalar(75), SkIntToScalar(105)); |
| - int shape = random->nextULessThan(5); |
| - switch (shape) { |
| - case 0: |
| + switch (type) { |
|
egdaniel
2014/11/14 16:08:21
You need to have a default case or else there will
rosca
2014/11/17 16:09:31
Done.
|
| + case kShapeTypeCircle: |
| canvas->drawCircle(0, 0, 50, paint); |
| break; |
| - case 1: |
| + case kShapeTypeRoundRect: |
| canvas->drawRoundRect(kRect, SkIntToScalar(10), SkIntToScalar(20), paint); |
| break; |
| - case 2: |
| + case kShapeTypeRect: |
| canvas->drawRect(kRect, paint); |
| break; |
| - case 3: |
| + case kShapeTypeConvexPath: |
| if (fConvexPath.isEmpty()) { |
| SkPoint points[4]; |
| kRect.toQuad(points); |
| @@ -57,7 +65,7 @@ protected: |
| } |
| canvas->drawPath(fConvexPath, paint); |
| break; |
| - case 4: |
| + case kShapeTypeConcavePath: |
| if (fConcavePath.isEmpty()) { |
| SkPoint points[5] = {{0, SkIntToScalar(-50)} }; |
| SkMatrix rot; |
| @@ -108,6 +116,13 @@ protected: |
| SkColor color = random.nextU(); |
| SkXfermode::Mode mode = |
| static_cast<SkXfermode::Mode>(random.nextULessThan(SkXfermode::kLastMode + 1)); |
| + ShapeType shapeType = static_cast<ShapeType>(random.nextULessThan(kNumShapeTypes)); |
| + |
| + if (i == kNumShapes - 1) { |
|
egdaniel
2014/11/14 16:08:21
Since what you want to test ends up drawing nothin
rosca
2014/11/17 16:09:31
Done.
|
| + color = SkColorSetARGBMacro(225, 100, 100, 100); |
| + mode = SkXfermode::kSaturation_Mode; |
| + shapeType = kShapeTypeConvexPath; |
| + } |
| SkPaint p; |
| p.setAntiAlias(true); |
| @@ -117,7 +132,7 @@ protected: |
| canvas->translate(dx, dy); |
| canvas->scale(s, s); |
| canvas->rotate(r); |
| - this->drawShape(canvas, p, &random); |
| + this->drawShape(canvas, p, shapeType); |
| canvas->restore(); |
| } |
| } |