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 "SkGradientShader.h"
11#include "../src/fonts/SkGScalerContext.h"
12
13class ColorTypeGM : public skiagm::GM {
14public:
15    ColorTypeGM() {
16        const SkColor colors[] = {
17            SK_ColorRED, SK_ColorGREEN, SK_ColorBLUE,
18            SK_ColorMAGENTA, SK_ColorCYAN, SK_ColorYELLOW
19        };
20        SkMatrix local;
21        local.setRotate(180);
22        SkShader* s = SkGradientShader::CreateSweep(0,0, colors, NULL,
23                                                    SK_ARRAY_COUNT(colors), 0, &local);
24
25        SkPaint paint;
26        paint.setAntiAlias(true);
27        paint.setShader(s)->unref();
28
29        SkTypeface* orig = SkTypeface::CreateFromName("Times",
30                                                      SkTypeface::kBold);
31        if (NULL == orig) {
32            orig = SkTypeface::RefDefault();
33        }
34        fColorType = SkNEW_ARGS(SkGTypeface, (orig, paint));
35        orig->unref();
36    }
37
38    virtual ~ColorTypeGM() {
39        fColorType->unref();
40    }
41
42protected:
43    virtual SkString onShortName() SK_OVERRIDE {
44        return SkString("colortype");
45    }
46
47    virtual SkISize onISize() SK_OVERRIDE {
48        return SkISize::Make(640, 480);
49    }
50
51    virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
52        SkPaint paint;
53        paint.setAntiAlias(true);
54        paint.setTypeface(fColorType);
55
56        for (SkScalar size = 10; size <= 100; size += 10) {
57            paint.setTextSize(size);
58            canvas->translate(0, paint.getFontMetrics(NULL));
59            canvas->drawText("Hamburgefons", 12, 10, 10, paint);
60        }
61    }
62
63    virtual uint32_t onGetFlags() const {
64        return kSkipPipe_Flag | kSkipPicture_Flag;
65    }
66
67private:
68    SkTypeface* fColorType;
69
70    typedef skiagm::GM INHERITED;
71};
72
73DEF_GM( return SkNEW(ColorTypeGM); )
74