| Index: gm/badpaint.cpp
|
| diff --git a/gm/badpaint.cpp b/gm/badpaint.cpp
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..45b17f85fe87ba0976a994faf5d8fed32d3894a9
|
| --- /dev/null
|
| +++ b/gm/badpaint.cpp
|
| @@ -0,0 +1,62 @@
|
| +/*
|
| + * Copyright 2015 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 "SkShader.h"
|
| +
|
| +
|
| +/** This GM draws with invalid paints. It should draw nothing other than the background. */
|
| +class BadPaintGM : public skiagm::GM {
|
| + public:
|
| + BadPaintGM() {}
|
| +
|
| +protected:
|
| + SkString onShortName() override { return SkString("badpaint"); }
|
| +
|
| + SkISize onISize() override { return SkISize::Make(100, 100); }
|
| +
|
| + void onOnceBeforeDraw() override {
|
| + SkBitmap emptyBmp;
|
| +
|
| + SkBitmap blueBmp;
|
| + blueBmp.allocN32Pixels(10, 10);
|
| + blueBmp.eraseColor(SK_ColorBLUE);
|
| +
|
| + SkMatrix badMatrix;
|
| + badMatrix.setAll(0, 0, 0, 0, 0, 0, 0, 0, 0);
|
| +
|
| +#if 0 // This crashes pipe!
|
| + // Empty bitmap.
|
| + fPaints.push_back().setColor(SK_ColorGREEN);
|
| + fPaints.back().setShader(SkShader::CreateBitmapShader(emptyBmp, SkShader::kClamp_TileMode,
|
| + SkShader::kClamp_TileMode))->unref();
|
| +#endif
|
| +
|
| + // Non-invertible local matrix.
|
| + fPaints.push_back().setColor(SK_ColorGREEN);
|
| + fPaints.back().setShader(SkShader::CreateBitmapShader(blueBmp, SkShader::kClamp_TileMode,
|
| + SkShader::kClamp_TileMode,
|
| + &badMatrix))->unref();
|
| + }
|
| +
|
| + void onDraw(SkCanvas* canvas) override {
|
| + SkRect rect = SkRect::MakeXYWH(10, 10, 80, 80);
|
| + for (int i = 0; i < fPaints.count(); ++i) {
|
| + canvas->drawRect(rect, fPaints[i]);
|
| + }
|
| + }
|
| +
|
| +private:
|
| + SkTArray<SkPaint> fPaints;
|
| +
|
| + typedef skiagm::GM INHERITED;
|
| +};
|
| +
|
| +/////////////////////////////////////////////////////////////////////////////////////
|
| +
|
| +DEF_GM( return SkNEW(BadPaintGM); )
|
|
|