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 2913e1540f8c0e2cea4b775d5dc3d8105eeaf4e209reed@google.com SkTypeface* orig = SkTypeface::CreateFromName("Times", 3013e1540f8c0e2cea4b775d5dc3d8105eeaf4e209reed@google.com 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