Add fixes & test for isConfigTexturable and isConfigRenderable
[platform/upstream/libSkiaSharp.git] / gm / fontcache.cpp
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 "SkGraphics.h"
12 #include "SkTypeface.h"
13
14 // GM to stress the GPU font cache
15
16 static SkScalar draw_string(SkCanvas* canvas, const SkString& text, SkScalar x,
17                            SkScalar y, const SkPaint& paint) {
18     canvas->drawString(text, x, y, paint);
19     return x + paint.measureText(text.c_str(), text.size());
20 }
21
22 class FontCacheGM : public skiagm::GM {
23 public:
24     FontCacheGM() {}
25
26 protected:
27     SkString onShortName() override {
28         return SkString("fontcache");
29     }
30
31     SkISize onISize() override {
32         return SkISize::Make(1280, 640);
33     }
34
35     void onOnceBeforeDraw() override {
36         fTypefaces[0] = sk_tool_utils::create_portable_typeface("serif",
37             SkFontStyle::FromOldStyle(SkTypeface::kItalic));
38         fTypefaces[1] = sk_tool_utils::create_portable_typeface("sans-serif",
39             SkFontStyle::FromOldStyle(SkTypeface::kItalic));
40     }
41
42     void onDraw(SkCanvas* canvas) override {
43         SkPaint paint;
44         paint.setAntiAlias(true);
45         paint.setLCDRenderText(true);
46         paint.setSubpixelText(true);
47         paint.setTypeface(fTypefaces[0]);
48         paint.setTextSize(192);
49
50         // Make sure the nul character does not cause problems.
51         paint.measureText("\0", 1);
52
53         SkScalar x = 20;
54         SkScalar y = 128;
55         SkString text("ABCDEFGHIJ");
56         draw_string(canvas, text, x, y, paint);
57         y += 100;
58         SkString text2("KLMNOPQRS");
59         draw_string(canvas, text2, x, y, paint);
60         y += 100;
61         SkString text3("TUVWXYZ012");
62         draw_string(canvas, text3, x, y, paint);
63         y += 100;
64         paint.setTypeface(fTypefaces[1]);
65         draw_string(canvas, text, x, y, paint);
66         y += 100;
67         draw_string(canvas, text2, x, y, paint);
68         y += 100;
69         draw_string(canvas, text3, x, y, paint);
70         y += 100;
71     }
72
73 private:
74     sk_sp<SkTypeface> fTypefaces[2];
75     typedef GM INHERITED;
76 };
77
78
79 //////////////////////////////////////////////////////////////////////////////
80
81 DEF_GM(return new FontCacheGM;)