blob: e7c58001f47e2c68180d8a2bb5cfd97ddffa7188 [file] [log] [blame]
reedcc0e3112014-09-10 10:20:24 -07001/*
2 * Copyright 2014 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 "SkBlurMaskFilter.h"
10#include "SkCanvas.h"
11#include "SkColorFilter.h"
12
13#include "SkColorFilter.h"
14static SkBitmap make_bm() {
15 SkBitmap bm;
16 bm.allocN32Pixels(100, 100);
17
18 SkCanvas canvas(bm);
19 canvas.clear(0);
20 SkPaint paint;
21 paint.setAntiAlias(true);
22 canvas.drawCircle(50, 50, 50, paint);
23 return bm;
24}
25
26class EmbossGM : public skiagm::GM {
27public:
28 EmbossGM() {
29 }
30
31protected:
mtklein36352bf2015-03-25 18:17:31 -070032 SkString onShortName() override {
reedcc0e3112014-09-10 10:20:24 -070033 return SkString("emboss");
34 }
35
mtklein36352bf2015-03-25 18:17:31 -070036 SkISize onISize() override {
reedcc0e3112014-09-10 10:20:24 -070037 return SkISize::Make(600, 120);
38 }
39
mtklein36352bf2015-03-25 18:17:31 -070040 void onDraw(SkCanvas* canvas) override {
reedcc0e3112014-09-10 10:20:24 -070041 SkPaint paint;
42 SkBitmap bm = make_bm();
43 canvas->drawBitmap(bm, 10, 10, &paint);
44
45 const SkScalar dir[] = { 1, 1, 1 };
reedefdfd512016-04-04 10:02:58 -070046 paint.setMaskFilter(SkBlurMaskFilter::MakeEmboss(3, dir, 0.3f, 0.1f));
reedcc0e3112014-09-10 10:20:24 -070047 canvas->translate(bm.width() + SkIntToScalar(10), 0);
48 canvas->drawBitmap(bm, 10, 10, &paint);
49
50 // this combination of emboss+colorfilter used to crash -- so we exercise it to
51 // confirm that we have a fix.
reedd053ce92016-03-22 10:17:23 -070052 paint.setColorFilter(SkColorFilter::MakeModeFilter(0xFFFF0000, SkXfermode::kSrcATop_Mode));
reedcc0e3112014-09-10 10:20:24 -070053 canvas->translate(bm.width() + SkIntToScalar(10), 0);
54 canvas->drawBitmap(bm, 10, 10, &paint);
55 }
56
57private:
58 typedef skiagm::GM INHERITED;
59};
60
halcanary385fe4d2015-08-26 13:07:48 -070061DEF_GM(return new EmbossGM;)