Home | History | Annotate | Download | only in gm
      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