blob: 85eaa1ed109f27fabe49d69c481213846baecd21 [file] [log] [blame]
bsalomonbed83a62015-04-15 14:18:34 -07001/*
2 * Copyright 2015 Google Inc.
3 *
4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file.
6 */
7
8#include "gm.h"
9#include "SkCanvas.h"
10#include "SkShader.h"
11
12
13/** This GM draws with invalid paints. It should draw nothing other than the background. */
14class BadPaintGM : public skiagm::GM {
15 public:
16 BadPaintGM() {}
17
18protected:
19 SkString onShortName() override { return SkString("badpaint"); }
20
21 SkISize onISize() override { return SkISize::Make(100, 100); }
22
23 void onOnceBeforeDraw() override {
24 SkBitmap emptyBmp;
25
26 SkBitmap blueBmp;
27 blueBmp.allocN32Pixels(10, 10);
28 blueBmp.eraseColor(SK_ColorBLUE);
29
30 SkMatrix badMatrix;
31 badMatrix.setAll(0, 0, 0, 0, 0, 0, 0, 0, 0);
32
bsalomonbed83a62015-04-15 14:18:34 -070033 // Empty bitmap.
34 fPaints.push_back().setColor(SK_ColorGREEN);
reed8a21c9f2016-03-08 18:50:00 -080035 fPaints.back().setShader(SkShader::MakeBitmapShader(emptyBmp, SkShader::kClamp_TileMode,
36 SkShader::kClamp_TileMode));
bsalomonbed83a62015-04-15 14:18:34 -070037
38 // Non-invertible local matrix.
39 fPaints.push_back().setColor(SK_ColorGREEN);
reed8a21c9f2016-03-08 18:50:00 -080040 fPaints.back().setShader(SkShader::MakeBitmapShader(blueBmp, SkShader::kClamp_TileMode,
41 SkShader::kClamp_TileMode, &badMatrix));
bsalomonbed83a62015-04-15 14:18:34 -070042 }
43
44 void onDraw(SkCanvas* canvas) override {
45 SkRect rect = SkRect::MakeXYWH(10, 10, 80, 80);
46 for (int i = 0; i < fPaints.count(); ++i) {
47 canvas->drawRect(rect, fPaints[i]);
48 }
49 }
50
51private:
52 SkTArray<SkPaint> fPaints;
53
54 typedef skiagm::GM INHERITED;
55};
56
57/////////////////////////////////////////////////////////////////////////////////////
58
halcanary385fe4d2015-08-26 13:07:48 -070059DEF_GM(return new BadPaintGM;)