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

Unified Diff: gm/mixedxfermodes.cpp

Issue 1215703005: kill mixedxfermodes (Closed) Base URL: https://skia.googlesource.com/skia@master
Patch Set: Created 5 years, 6 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 | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: gm/mixedxfermodes.cpp
diff --git a/gm/mixedxfermodes.cpp b/gm/mixedxfermodes.cpp
deleted file mode 100644
index dc858cb88b0cd0a3ce482a6be2438e60b558dc40..0000000000000000000000000000000000000000
--- a/gm/mixedxfermodes.cpp
+++ /dev/null
@@ -1,182 +0,0 @@
-
-/*
- * Copyright 2013 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 "SkBitmap.h"
-#include "SkRandom.h"
-#include "SkShader.h"
-#include "SkXfermode.h"
-
-namespace skiagm {
-
-/**
- * Renders overlapping shapes with random SkXfermode::Modes against a checkerboard.
- */
-class MixedXfermodesGM : public GM {
-public:
- MixedXfermodesGM() {
- }
-
-protected:
- enum ShapeType {
- kShapeTypeCircle,
- kShapeTypeRoundRect,
- kShapeTypeRect,
- kShapeTypeConvexPath,
- kShapeTypeConcavePath,
- kNumShapeTypes
- };
-
- SkString onShortName() override {
- return SkString("mixed_xfermodes");
- }
-
- SkISize onISize() override {
- return SkISize::Make(790, 640);
- }
-
- void drawShape(SkCanvas* canvas,
- const SkPaint& paint,
- ShapeType type) {
- static const SkRect kRect = SkRect::MakeXYWH(SkIntToScalar(-50), SkIntToScalar(-50),
- SkIntToScalar(75), SkIntToScalar(105));
- switch (type) {
- case kShapeTypeCircle:
- canvas->drawCircle(0, 0, 50, paint);
- break;
- case kShapeTypeRoundRect:
- canvas->drawRoundRect(kRect, SkIntToScalar(10), SkIntToScalar(20), paint);
- break;
- case kShapeTypeRect:
- canvas->drawRect(kRect, paint);
- break;
- case kShapeTypeConvexPath:
- if (fConvexPath.isEmpty()) {
- SkPoint points[4];
- kRect.toQuad(points);
- fConvexPath.moveTo(points[0]);
- fConvexPath.quadTo(points[1], points[2]);
- fConvexPath.quadTo(points[3], points[0]);
- SkASSERT(fConvexPath.isConvex());
- }
- canvas->drawPath(fConvexPath, paint);
- break;
- case kShapeTypeConcavePath:
- if (fConcavePath.isEmpty()) {
- SkPoint points[5] = {{0, SkIntToScalar(-50)} };
- SkMatrix rot;
- rot.setRotate(SkIntToScalar(360) / 5);
- for (int i = 1; i < 5; ++i) {
- rot.mapPoints(points + i, points + i - 1, 1);
- }
- fConcavePath.moveTo(points[0]);
- for (int i = 0; i < 5; ++i) {
- fConcavePath.lineTo(points[(2 * i) % 5]);
- }
- fConcavePath.setFillType(SkPath::kEvenOdd_FillType);
- SkASSERT(!fConcavePath.isConvex());
- }
- canvas->drawPath(fConcavePath, paint);
- break;
- default:
- break;
- }
- }
-
- void onDraw(SkCanvas* canvas) override {
- if (NULL == fBG.get()) {
- static uint32_t kCheckerPixelData[] = { 0xFFFFFFFF,
- 0xFFCCCCCC,
- 0xFFCCCCCC,
- 0xFFFFFFFF };
- SkBitmap bitmap;
- bitmap.allocN32Pixels(2, 2);
- memcpy(bitmap.getPixels(), kCheckerPixelData, sizeof(kCheckerPixelData));
- SkMatrix lm;
- lm.setScale(SkIntToScalar(20), SkIntToScalar(20));
- fBG.reset(SkShader::CreateBitmapShader(bitmap,
- SkShader::kRepeat_TileMode,
- SkShader::kRepeat_TileMode,
- &lm));
- }
-
- SkPaint bgPaint;
- bgPaint.setShader(fBG.get());
- canvas->drawPaint(bgPaint);
- SkISize size = canvas->getDeviceSize();
- SkScalar maxScale = SkScalarSqrt((SkIntToScalar(size.fWidth * size.fHeight))) / 300;
- SkRandom random;
- for (int i = 0; i < kNumShapes; ++i) {
- SkScalar s = random.nextRangeScalar(SK_Scalar1 / 8, SK_Scalar1) * maxScale;
- SkScalar r = random.nextRangeScalar(0, SkIntToScalar(360));
- SkScalar dx = random.nextRangeScalar(0, SkIntToScalar(size.fWidth));
- SkScalar dy = random.nextRangeScalar(0, SkIntToScalar(size.fHeight));
- SkColor color = random.nextU();
- SkXfermode::Mode mode =
- static_cast<SkXfermode::Mode>(random.nextULessThan(SkXfermode::kLastMode + 1));
- ShapeType shapeType = static_cast<ShapeType>(random.nextULessThan(kNumShapeTypes));
-
- SkPaint p;
- p.setAntiAlias(true);
- p.setColor(color);
- p.setXfermodeMode(mode);
- canvas->save();
- canvas->translate(dx, dy);
- canvas->scale(s, s);
- canvas->rotate(r);
- this->drawShape(canvas, p, shapeType);
- canvas->restore();
- }
-
- // This draw should not affect the test's result.
- drawWithHueOnWhite(canvas);
- }
-
- /**
- * Draws white color into a white square using the hue blend mode.
- * The result color should be white, so it doesn't change the expectations.
- * This will test a divide by 0 bug in shaders' setLum function,
- * which used to output black pixels.
- */
- void drawWithHueOnWhite(SkCanvas* canvas) {
- SkColor color = SkColorSetARGBMacro(225, 255, 255, 255);
- SkXfermode::Mode mode = SkXfermode::kHue_Mode;
- ShapeType shapeType = kShapeTypeConvexPath;
-
- // Make it fit into a square.
- SkScalar s = 0.15f;
- // Look for a clean white square.
- SkScalar dx = 30.f;
- SkScalar dy = 350.f;
-
- SkPaint p;
- p.setAntiAlias(true);
- p.setColor(color);
- p.setXfermodeMode(mode);
- canvas->save();
- canvas->translate(dx, dy);
- canvas->scale(s, s);
- this->drawShape(canvas, p, shapeType);
- canvas->restore();
- }
-
-private:
- enum {
- kNumShapes = 100,
- };
- SkAutoTUnref<SkShader> fBG;
- SkPath fConcavePath;
- SkPath fConvexPath;
- typedef GM INHERITED;
-};
-
-//////////////////////////////////////////////////////////////////////////////
-
-static GM* MyFactory(void*) { return new MixedXfermodesGM; }
-static GMRegistry reg(MyFactory);
-
-}
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698