OLD | NEW |
| (Empty) |
1 /* | |
2 * Copyright 2013 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 "SkLerpXfermode.h" | |
11 | |
12 static void show_circlelayers(SkCanvas* canvas, SkXfermode* mode) { | |
13 SkPaint paint; | |
14 paint.setAntiAlias(true); | |
15 SkRect r, bounds = { 10, 10, 110, 110 }; | |
16 | |
17 r = bounds; | |
18 r.fRight = bounds.centerX(); | |
19 canvas->drawRect(r, paint); | |
20 | |
21 canvas->saveLayer(&bounds, nullptr); | |
22 | |
23 paint.setColor(0x80FF0000); | |
24 r = bounds; | |
25 r.inset(20, 0); | |
26 canvas->drawOval(r, paint); | |
27 | |
28 paint.setColor(0x800000FF); | |
29 r = bounds; | |
30 r.inset(0, 20); | |
31 paint.setXfermode(mode); | |
32 canvas->drawOval(r, paint); | |
33 | |
34 canvas->restore(); | |
35 } | |
36 | |
37 DEF_SIMPLE_GM(lerpmode, canvas, 240, 120) { | |
38 show_circlelayers(canvas, nullptr); | |
39 canvas->translate(150, 0); | |
40 SkAutoTUnref<SkXfermode> mode(SkLerpXfermode::Create(0.5f)); | |
41 show_circlelayers(canvas, mode.get()); | |
42 } | |
OLD | NEW |