aboutsummaryrefslogtreecommitdiffhomepage
path: root/gm/drawable.cpp
blob: 9428e32c4db9908506ab7a3948e1b94e3b70c9a7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
/*
 * Copyright 2015 Google Inc.
 *
 * Use of this source code is governed by a BSD-style license that can be
 * found in the LICENSE file.
 */

#include "gm.h"
#include "SkCanvas.h"
#include "SkDrawable.h"
#include "SkPath.h"

struct MyDrawable : public SkDrawable {
    SkRect onGetBounds() override { return SkRect::MakeWH(50, 100);  }

    void onDraw(SkCanvas* canvas) override {
       SkPath path;
       path.moveTo(10, 10);
       path.conicTo(10, 90, 50, 90, 0.9f);

       SkPaint paint;
       paint.setColor(SK_ColorBLUE);
       canvas->drawRect(path.getBounds(), paint);

       paint.setAntiAlias(true);
       paint.setColor(SK_ColorWHITE);
       canvas->drawPath(path, paint);
    }
};

/*
 *  Test calling drawables w/ translate and matrices
 */
DEF_SIMPLE_GM(drawable, canvas, 180, 275) {
    sk_sp<SkDrawable> drawable(new MyDrawable);

    canvas->translate(10, 10);
    canvas->drawDrawable(drawable.get());
    canvas->drawDrawable(drawable.get(), 0, 150);

    SkMatrix m = SkMatrix::MakeScale(1.5f, 0.8f);
    m.postTranslate(70, 0);
    canvas->drawDrawable(drawable.get(), &m);

    m.postTranslate(0, 150);
    canvas->drawDrawable(drawable.get(), &m);
}