Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(181)

Side by Side Diff: gm/typeface.cpp

Issue 1144023002: Move font loading in gm tests and benches out of constructors (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Created 5 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright 2012 Google Inc. 2 * Copyright 2012 Google Inc.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license that can be 4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file. 5 * found in the LICENSE file.
6 */ 6 */
7 7
8 #include "gm.h" 8 #include "gm.h"
9 #include "SkCanvas.h" 9 #include "SkCanvas.h"
10 #include "SkString.h" 10 #include "SkString.h"
11 #include "SkTypeface.h" 11 #include "SkTypeface.h"
12 #include "SkTypes.h" 12 #include "SkTypes.h"
13 13
14 static const char* gFaces[] = { 14 static const char* gFaces[] = {
15 "Times Roman", 15 "Times Roman",
16 "Hiragino Maru Gothic Pro", 16 "Hiragino Maru Gothic Pro",
17 "Papyrus", 17 "Papyrus",
18 "Helvetica", 18 "Helvetica",
19 "Courier New" 19 "Courier New"
20 }; 20 };
21 21
22 class TypefaceGM : public skiagm::GM { 22 class TypefaceGM : public skiagm::GM {
23 public: 23 public:
24 TypefaceGM() { 24 TypefaceGM()
25 : fFaces(NULL) {
26 }
27
28 virtual ~TypefaceGM() {
29 if (fFaces) {
30 for (size_t i = 0; i < SK_ARRAY_COUNT(gFaces); i++) {
31 SkSafeUnref(fFaces[i]);
32 }
33 delete [] fFaces;
34 }
35 }
36
37 protected:
38 void onOnceBeforeDraw() override {
25 fFaces = new SkTypeface*[SK_ARRAY_COUNT(gFaces)]; 39 fFaces = new SkTypeface*[SK_ARRAY_COUNT(gFaces)];
26 for (size_t i = 0; i < SK_ARRAY_COUNT(gFaces); i++) { 40 for (size_t i = 0; i < SK_ARRAY_COUNT(gFaces); i++) {
27 fFaces[i] = sk_tool_utils::create_portable_typeface(gFaces[i], SkTyp eface::kNormal); 41 fFaces[i] = sk_tool_utils::create_portable_typeface(gFaces[i], SkTyp eface::kNormal);
28 } 42 }
29 } 43 }
30 44
31 virtual ~TypefaceGM() {
32 for (size_t i = 0; i < SK_ARRAY_COUNT(gFaces); i++) {
33 SkSafeUnref(fFaces[i]);
34 }
35 delete [] fFaces;
36 }
37
38 protected:
39 SkString onShortName() override { 45 SkString onShortName() override {
40 return SkString("typeface"); 46 return SkString("typeface");
41 } 47 }
42 48
43 SkISize onISize() override { 49 SkISize onISize() override {
44 return SkISize::Make(640, 480); 50 return SkISize::Make(640, 480);
45 } 51 }
46 52
47 void onDraw(SkCanvas* canvas) override { 53 void onDraw(SkCanvas* canvas) override {
48 SkString text("Typefaces are fun!"); 54 SkString text("Typefaces are fun!");
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after
150 { "monospace", SkTypeface::kBoldItalic }, 156 { "monospace", SkTypeface::kBoldItalic },
151 }; 157 };
152 158
153 static const int gFaceStylesCount = SK_ARRAY_COUNT(gFaceStyles); 159 static const int gFaceStylesCount = SK_ARRAY_COUNT(gFaceStyles);
154 160
155 class TypefaceStylesGM : public skiagm::GM { 161 class TypefaceStylesGM : public skiagm::GM {
156 SkTypeface* fFaces[gFaceStylesCount]; 162 SkTypeface* fFaces[gFaceStylesCount];
157 bool fApplyKerning; 163 bool fApplyKerning;
158 164
159 public: 165 public:
160 TypefaceStylesGM(bool applyKerning) : fApplyKerning(applyKerning) { 166 TypefaceStylesGM(bool applyKerning)
161 for (int i = 0; i < gFaceStylesCount; i++) { 167 : fApplyKerning(applyKerning) {
162 fFaces[i] = sk_tool_utils::create_portable_typeface(gFaceStyles[i].f Name, 168 memset(fFaces, 0, sizeof(fFaces));
mtklein 2015/05/21 13:09:25 Just FYI, we usually use sk_bzero for this so we d
163 gFaceStyles[i].fStyle);
164 }
165 } 169 }
166 170
167 virtual ~TypefaceStylesGM() { 171 virtual ~TypefaceStylesGM() {
168 for (int i = 0; i < gFaceStylesCount; i++) { 172 for (int i = 0; i < gFaceStylesCount; i++) {
169 SkSafeUnref(fFaces[i]); 173 SkSafeUnref(fFaces[i]);
170 } 174 }
171 } 175 }
172 176
173 protected: 177 protected:
178 void onOnceBeforeDraw() override {
179 for (int i = 0; i < gFaceStylesCount; i++) {
180 fFaces[i] = sk_tool_utils::create_portable_typeface(gFaceStyles[i].f Name,
181 gFaceStyles[i].fStyle);
182 }
183 }
184
174 SkString onShortName() override { 185 SkString onShortName() override {
175 SkString name("typefacestyles"); 186 SkString name("typefacestyles");
176 if (fApplyKerning) { 187 if (fApplyKerning) {
177 name.append("_kerning"); 188 name.append("_kerning");
178 } 189 }
179 return name; 190 return name;
180 } 191 }
181 192
182 SkISize onISize() override { 193 SkISize onISize() override {
183 return SkISize::Make(640, 480); 194 return SkISize::Make(640, 480);
(...skipping 28 matching lines...) Expand all
212 223
213 private: 224 private:
214 typedef skiagm::GM INHERITED; 225 typedef skiagm::GM INHERITED;
215 }; 226 };
216 227
217 /////////////////////////////////////////////////////////////////////////////// 228 ///////////////////////////////////////////////////////////////////////////////
218 229
219 DEF_GM( return new TypefaceGM; ) 230 DEF_GM( return new TypefaceGM; )
220 DEF_GM( return new TypefaceStylesGM(false); ) 231 DEF_GM( return new TypefaceStylesGM(false); )
221 DEF_GM( return new TypefaceStylesGM(true); ) 232 DEF_GM( return new TypefaceStylesGM(true); )
OLDNEW
« bench/TextBench.cpp ('K') | « gm/textblob.cpp ('k') | gm/verttext2.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698