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 "sk_tool_utils.h" 10 #include "SkCanvas.h" 11 #include "SkGradientShader.h" 12 #include "../src/fonts/SkGScalerContext.h" 13 14 class ColorTypeGM : public skiagm::GM { 15 public: 16 ColorTypeGM() {} 17 18 protected: 19 void onOnceBeforeDraw() override { 20 const SkColor colors[] = { 21 SK_ColorRED, SK_ColorGREEN, SK_ColorBLUE, 22 SK_ColorMAGENTA, SK_ColorCYAN, SK_ColorYELLOW 23 }; 24 SkMatrix local; 25 local.setRotate(180); 26 SkPaint paint; 27 paint.setAntiAlias(true); 28 paint.setShader(SkGradientShader::MakeSweep(0, 0, colors, nullptr, SK_ARRAY_COUNT(colors), 29 0, &local)); 30 31 sk_sp<SkTypeface> orig(sk_tool_utils::create_portable_typeface( 32 "serif", SkFontStyle::FromOldStyle(SkTypeface::kBold))); 33 if (nullptr == orig) { 34 orig = SkTypeface::MakeDefault(); 35 } 36 fColorType = sk_make_sp<SkGTypeface>(std::move(orig), paint); 37 } 38 39 SkString onShortName() override { 40 return SkString("colortype"); 41 } 42 43 SkISize onISize() override { 44 return SkISize::Make(640, 480); 45 } 46 47 void onDraw(SkCanvas* canvas) override { 48 SkPaint paint; 49 paint.setAntiAlias(true); 50 paint.setTypeface(fColorType); 51 52 for (SkScalar size = 10; size <= 100; size += 10) { 53 paint.setTextSize(size); 54 canvas->translate(0, paint.getFontMetrics(nullptr)); 55 canvas->drawText("Hamburgefons", 12, 10, 10, paint); 56 } 57 } 58 59 private: 60 sk_sp<SkTypeface> fColorType; 61 62 typedef skiagm::GM INHERITED; 63 }; 64 65 DEF_GM(return new ColorTypeGM;) 66