xref: /aosp_15_r20/external/skia/gm/drawable.cpp (revision c8dee2aa9b3f27cf6c858bd81872bdeb2c07ed17)
1*c8dee2aaSAndroid Build Coastguard Worker /*
2*c8dee2aaSAndroid Build Coastguard Worker  * Copyright 2015 Google Inc.
3*c8dee2aaSAndroid Build Coastguard Worker  *
4*c8dee2aaSAndroid Build Coastguard Worker  * Use of this source code is governed by a BSD-style license that can be
5*c8dee2aaSAndroid Build Coastguard Worker  * found in the LICENSE file.
6*c8dee2aaSAndroid Build Coastguard Worker  */
7*c8dee2aaSAndroid Build Coastguard Worker 
8*c8dee2aaSAndroid Build Coastguard Worker #include "gm/gm.h"
9*c8dee2aaSAndroid Build Coastguard Worker #include "include/core/SkCanvas.h"
10*c8dee2aaSAndroid Build Coastguard Worker #include "include/core/SkColor.h"
11*c8dee2aaSAndroid Build Coastguard Worker #include "include/core/SkDrawable.h"
12*c8dee2aaSAndroid Build Coastguard Worker #include "include/core/SkMatrix.h"
13*c8dee2aaSAndroid Build Coastguard Worker #include "include/core/SkPaint.h"
14*c8dee2aaSAndroid Build Coastguard Worker #include "include/core/SkPathBuilder.h"
15*c8dee2aaSAndroid Build Coastguard Worker #include "include/core/SkRect.h"
16*c8dee2aaSAndroid Build Coastguard Worker #include "include/core/SkRefCnt.h"
17*c8dee2aaSAndroid Build Coastguard Worker 
18*c8dee2aaSAndroid Build Coastguard Worker struct MyDrawable : public SkDrawable {
onGetBoundsMyDrawable19*c8dee2aaSAndroid Build Coastguard Worker     SkRect onGetBounds() override { return SkRect::MakeWH(50, 100);  }
20*c8dee2aaSAndroid Build Coastguard Worker 
onDrawMyDrawable21*c8dee2aaSAndroid Build Coastguard Worker     void onDraw(SkCanvas* canvas) override {
22*c8dee2aaSAndroid Build Coastguard Worker         SkPath path = SkPathBuilder().moveTo(10, 10)
23*c8dee2aaSAndroid Build Coastguard Worker                                      .conicTo(10, 90, 50, 90, 0.9f)
24*c8dee2aaSAndroid Build Coastguard Worker                                      .detach();
25*c8dee2aaSAndroid Build Coastguard Worker 
26*c8dee2aaSAndroid Build Coastguard Worker        SkPaint paint;
27*c8dee2aaSAndroid Build Coastguard Worker        paint.setColor(SK_ColorBLUE);
28*c8dee2aaSAndroid Build Coastguard Worker        canvas->drawRect(path.getBounds(), paint);
29*c8dee2aaSAndroid Build Coastguard Worker 
30*c8dee2aaSAndroid Build Coastguard Worker        paint.setAntiAlias(true);
31*c8dee2aaSAndroid Build Coastguard Worker        paint.setColor(SK_ColorWHITE);
32*c8dee2aaSAndroid Build Coastguard Worker        canvas->drawPath(path, paint);
33*c8dee2aaSAndroid Build Coastguard Worker     }
34*c8dee2aaSAndroid Build Coastguard Worker };
35*c8dee2aaSAndroid Build Coastguard Worker 
36*c8dee2aaSAndroid Build Coastguard Worker /*
37*c8dee2aaSAndroid Build Coastguard Worker  *  Test calling drawables w/ translate and matrices
38*c8dee2aaSAndroid Build Coastguard Worker  */
39*c8dee2aaSAndroid Build Coastguard Worker DEF_SIMPLE_GM(drawable, canvas, 180, 275) {
40*c8dee2aaSAndroid Build Coastguard Worker     sk_sp<SkDrawable> drawable(new MyDrawable);
41*c8dee2aaSAndroid Build Coastguard Worker 
42*c8dee2aaSAndroid Build Coastguard Worker     canvas->translate(10, 10);
43*c8dee2aaSAndroid Build Coastguard Worker     canvas->drawDrawable(drawable.get());
44*c8dee2aaSAndroid Build Coastguard Worker     canvas->drawDrawable(drawable.get(), 0, 150);
45*c8dee2aaSAndroid Build Coastguard Worker 
46*c8dee2aaSAndroid Build Coastguard Worker     SkMatrix m = SkMatrix::Scale(1.5f, 0.8f);
47*c8dee2aaSAndroid Build Coastguard Worker     m.postTranslate(70, 0);
48*c8dee2aaSAndroid Build Coastguard Worker     canvas->drawDrawable(drawable.get(), &m);
49*c8dee2aaSAndroid Build Coastguard Worker 
50*c8dee2aaSAndroid Build Coastguard Worker     m.postTranslate(0, 150);
51*c8dee2aaSAndroid Build Coastguard Worker     canvas->drawDrawable(drawable.get(), &m);
52*c8dee2aaSAndroid Build Coastguard Worker }
53