17edec140391ce06933cc1506d96bb70093b63c7breed@google.com/*
27edec140391ce06933cc1506d96bb70093b63c7breed@google.com * Copyright 2013 Google Inc.
37edec140391ce06933cc1506d96bb70093b63c7breed@google.com *
47edec140391ce06933cc1506d96bb70093b63c7breed@google.com * Use of this source code is governed by a BSD-style license that can be
57edec140391ce06933cc1506d96bb70093b63c7breed@google.com * found in the LICENSE file.
67edec140391ce06933cc1506d96bb70093b63c7breed@google.com */
77edec140391ce06933cc1506d96bb70093b63c7breed@google.com
87edec140391ce06933cc1506d96bb70093b63c7breed@google.com#include "gm.h"
97edec140391ce06933cc1506d96bb70093b63c7breed@google.com#include "SkCanvas.h"
107edec140391ce06933cc1506d96bb70093b63c7breed@google.com#include "SkGradientShader.h"
117edec140391ce06933cc1506d96bb70093b63c7breed@google.com#include "../src/fonts/SkGScalerContext.h"
127edec140391ce06933cc1506d96bb70093b63c7breed@google.com
137edec140391ce06933cc1506d96bb70093b63c7breed@google.comclass ColorTypeGM : public skiagm::GM {
147edec140391ce06933cc1506d96bb70093b63c7breed@google.compublic:
157edec140391ce06933cc1506d96bb70093b63c7breed@google.com    ColorTypeGM() {
167edec140391ce06933cc1506d96bb70093b63c7breed@google.com        const SkColor colors[] = {
177edec140391ce06933cc1506d96bb70093b63c7breed@google.com            SK_ColorRED, SK_ColorGREEN, SK_ColorBLUE,
187edec140391ce06933cc1506d96bb70093b63c7breed@google.com            SK_ColorMAGENTA, SK_ColorCYAN, SK_ColorYELLOW
197edec140391ce06933cc1506d96bb70093b63c7breed@google.com        };
207edec140391ce06933cc1506d96bb70093b63c7breed@google.com        SkMatrix local;
217edec140391ce06933cc1506d96bb70093b63c7breed@google.com        local.setRotate(180);
229c9005a347e9996f357bd79591bd34f74f8bbc66commit-bot@chromium.org        SkShader* s = SkGradientShader::CreateSweep(0,0, colors, NULL,
2383f23d87f1d67e6e73873e1ef7cda621c43703a0commit-bot@chromium.org                                                    SK_ARRAY_COUNT(colors), 0, &local);
2426da7f00aedba107d4b3e382283034e265db09b6skia.committer@gmail.com
257edec140391ce06933cc1506d96bb70093b63c7breed@google.com        SkPaint paint;
267edec140391ce06933cc1506d96bb70093b63c7breed@google.com        paint.setAntiAlias(true);
277edec140391ce06933cc1506d96bb70093b63c7breed@google.com        paint.setShader(s)->unref();
2826da7f00aedba107d4b3e382283034e265db09b6skia.committer@gmail.com
29992c7b03ef7914a18bfd78e965b0b4c99a5f5672Cary Clark        SkTypeface* orig = sk_tool_utils::create_portable_typeface("Times",
30992c7b03ef7914a18bfd78e965b0b4c99a5f5672Cary Clark                                                            SkTypeface::kBold);
3113e1540f8c0e2cea4b775d5dc3d8105eeaf4e209reed@google.com        if (NULL == orig) {
3213e1540f8c0e2cea4b775d5dc3d8105eeaf4e209reed@google.com            orig = SkTypeface::RefDefault();
3313e1540f8c0e2cea4b775d5dc3d8105eeaf4e209reed@google.com        }
347edec140391ce06933cc1506d96bb70093b63c7breed@google.com        fColorType = SkNEW_ARGS(SkGTypeface, (orig, paint));
3513e1540f8c0e2cea4b775d5dc3d8105eeaf4e209reed@google.com        orig->unref();
367edec140391ce06933cc1506d96bb70093b63c7breed@google.com    }
3726da7f00aedba107d4b3e382283034e265db09b6skia.committer@gmail.com
387edec140391ce06933cc1506d96bb70093b63c7breed@google.com    virtual ~ColorTypeGM() {
397edec140391ce06933cc1506d96bb70093b63c7breed@google.com        fColorType->unref();
407edec140391ce06933cc1506d96bb70093b63c7breed@google.com    }
417edec140391ce06933cc1506d96bb70093b63c7breed@google.com
427edec140391ce06933cc1506d96bb70093b63c7breed@google.comprotected:
437edec140391ce06933cc1506d96bb70093b63c7breed@google.com    virtual SkString onShortName() SK_OVERRIDE {
447edec140391ce06933cc1506d96bb70093b63c7breed@google.com        return SkString("colortype");
457edec140391ce06933cc1506d96bb70093b63c7breed@google.com    }
467edec140391ce06933cc1506d96bb70093b63c7breed@google.com
477edec140391ce06933cc1506d96bb70093b63c7breed@google.com    virtual SkISize onISize() SK_OVERRIDE {
487edec140391ce06933cc1506d96bb70093b63c7breed@google.com        return SkISize::Make(640, 480);
497edec140391ce06933cc1506d96bb70093b63c7breed@google.com    }
507edec140391ce06933cc1506d96bb70093b63c7breed@google.com
517edec140391ce06933cc1506d96bb70093b63c7breed@google.com    virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
527edec140391ce06933cc1506d96bb70093b63c7breed@google.com        SkPaint paint;
537edec140391ce06933cc1506d96bb70093b63c7breed@google.com        paint.setAntiAlias(true);
547edec140391ce06933cc1506d96bb70093b63c7breed@google.com        paint.setTypeface(fColorType);
5526da7f00aedba107d4b3e382283034e265db09b6skia.committer@gmail.com
56e1613d8284d94d39f7c1b784853cc7d0d019b5b1reed@google.com        for (SkScalar size = 10; size <= 100; size += 10) {
577edec140391ce06933cc1506d96bb70093b63c7breed@google.com            paint.setTextSize(size);
587edec140391ce06933cc1506d96bb70093b63c7breed@google.com            canvas->translate(0, paint.getFontMetrics(NULL));
597edec140391ce06933cc1506d96bb70093b63c7breed@google.com            canvas->drawText("Hamburgefons", 12, 10, 10, paint);
607edec140391ce06933cc1506d96bb70093b63c7breed@google.com        }
617edec140391ce06933cc1506d96bb70093b63c7breed@google.com    }
627edec140391ce06933cc1506d96bb70093b63c7breed@google.com
6342e2cf71d5a867cbc442b8571cf91f8a7c07ead4reed@google.com    virtual uint32_t onGetFlags() const {
6442e2cf71d5a867cbc442b8571cf91f8a7c07ead4reed@google.com        return kSkipPipe_Flag | kSkipPicture_Flag;
6542e2cf71d5a867cbc442b8571cf91f8a7c07ead4reed@google.com    }
667edec140391ce06933cc1506d96bb70093b63c7breed@google.com
677edec140391ce06933cc1506d96bb70093b63c7breed@google.comprivate:
687edec140391ce06933cc1506d96bb70093b63c7breed@google.com    SkTypeface* fColorType;
697edec140391ce06933cc1506d96bb70093b63c7breed@google.com
707edec140391ce06933cc1506d96bb70093b63c7breed@google.com    typedef skiagm::GM INHERITED;
717edec140391ce06933cc1506d96bb70093b63c7breed@google.com};
727edec140391ce06933cc1506d96bb70093b63c7breed@google.com
737edec140391ce06933cc1506d96bb70093b63c7breed@google.comDEF_GM( return SkNEW(ColorTypeGM); )
74