blob: a72e64d7603fbbd78defde190ccf66ae1971b614 [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:
mtklein72c9faa2015-01-09 10:06:39 -080032 SkString onShortName() SK_OVERRIDE {
reedcc0e3112014-09-10 10:20:24 -070033 return SkString("emboss");
34 }
35
mtklein72c9faa2015-01-09 10:06:39 -080036 SkISize onISize() SK_OVERRIDE {
reedcc0e3112014-09-10 10:20:24 -070037 return SkISize::Make(600, 120);
38 }
39
mtklein72c9faa2015-01-09 10:06:39 -080040 void onDraw(SkCanvas* canvas) SK_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 };
46 paint.setMaskFilter(SkBlurMaskFilter::CreateEmboss(3, dir, 0.3f, 0.1f))->unref();
47 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.
52 paint.setColorFilter(SkColorFilter::CreateModeFilter(0xFFFF0000, SkXfermode::kSrcATop_Mode))->unref();
53 canvas->translate(bm.width() + SkIntToScalar(10), 0);
54 canvas->drawBitmap(bm, 10, 10, &paint);
55 }
56
57private:
58 typedef skiagm::GM INHERITED;
59};
60
61DEF_GM( return SkNEW(EmbossGM); )