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

Side by Side Diff: gm/fontmgr.cpp

Issue 806653007: Fix up all the easy virtual ... SK_OVERRIDE cases. (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: rebase Created 5 years, 11 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
« no previous file with comments | « gm/fontcache.cpp ('k') | gm/fontscaler.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright 2013 Google Inc. 2 * Copyright 2013 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 "SkFontMgr.h" 10 #include "SkFontMgr.h"
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
61 fName.set("fontmgr_iter"); 61 fName.set("fontmgr_iter");
62 if (fontMgr) { 62 if (fontMgr) {
63 fName.append("_factory"); 63 fName.append("_factory");
64 fFM.reset(fontMgr); 64 fFM.reset(fontMgr);
65 } else { 65 } else {
66 fFM.reset(SkFontMgr::RefDefault()); 66 fFM.reset(SkFontMgr::RefDefault());
67 } 67 }
68 } 68 }
69 69
70 protected: 70 protected:
71 virtual SkString onShortName() SK_OVERRIDE { 71 SkString onShortName() SK_OVERRIDE {
72 return fName; 72 return fName;
73 } 73 }
74 74
75 virtual SkISize onISize() SK_OVERRIDE { 75 SkISize onISize() SK_OVERRIDE {
76 return SkISize::Make(1536, 768); 76 return SkISize::Make(1536, 768);
77 } 77 }
78 78
79 virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE { 79 void onDraw(SkCanvas* canvas) SK_OVERRIDE {
80 SkScalar y = 20; 80 SkScalar y = 20;
81 SkPaint paint; 81 SkPaint paint;
82 paint.setAntiAlias(true); 82 paint.setAntiAlias(true);
83 paint.setLCDRenderText(true); 83 paint.setLCDRenderText(true);
84 paint.setSubpixelText(true); 84 paint.setSubpixelText(true);
85 paint.setTextSize(17); 85 paint.setTextSize(17);
86 86
87 SkFontMgr* fm = fFM; 87 SkFontMgr* fm = fFM;
88 int count = SkMin32(fm->countFamilies(), MAX_FAMILIES); 88 int count = SkMin32(fm->countFamilies(), MAX_FAMILIES);
89 89
(...skipping 18 matching lines...) Expand all
108 // check to see that we get different glyphs in japanese and chi nese 108 // check to see that we get different glyphs in japanese and chi nese
109 x = drawCharacter(canvas, 0x5203, x, y, paint, fm, fName.c_str() , &zh, 1, fs); 109 x = drawCharacter(canvas, 0x5203, x, y, paint, fm, fName.c_str() , &zh, 1, fs);
110 x = drawCharacter(canvas, 0x5203, x, y, paint, fm, fName.c_str() , &ja, 1, fs); 110 x = drawCharacter(canvas, 0x5203, x, y, paint, fm, fName.c_str() , &ja, 1, fs);
111 // check that emoji characters are found 111 // check that emoji characters are found
112 x = drawCharacter(canvas, 0x1f601, x, y, paint, fm, fName.c_str( ), NULL, 0, fs); 112 x = drawCharacter(canvas, 0x1f601, x, y, paint, fm, fName.c_str( ), NULL, 0, fs);
113 } 113 }
114 y += 24; 114 y += 24;
115 } 115 }
116 } 116 }
117 117
118 virtual uint32_t onGetFlags() const SK_OVERRIDE { 118 uint32_t onGetFlags() const SK_OVERRIDE {
119 // fontdescriptors (and therefore serialization) don't yet understand 119 // fontdescriptors (and therefore serialization) don't yet understand
120 // these new styles, so skip tests that exercise that for now. 120 // these new styles, so skip tests that exercise that for now.
121 121
122 // If certain fonts are picked up (e.g. Microsoft Jhenghei 20MB for Regu lar, 12MB for Bold), 122 // If certain fonts are picked up (e.g. Microsoft Jhenghei 20MB for Regu lar, 12MB for Bold),
123 // the resulting pdf can be ~700MB and crashes Chrome's PDF viewer. 123 // the resulting pdf can be ~700MB and crashes Chrome's PDF viewer.
124 124
125 return kSkipPicture_Flag | kSkipPipe_Flag | kSkipPDF_Flag; 125 return kSkipPicture_Flag | kSkipPipe_Flag | kSkipPDF_Flag;
126 } 126 }
127 127
128 private: 128 private:
129 SkAutoTUnref<SkFontMgr> fFM; 129 SkAutoTUnref<SkFontMgr> fFM;
130 SkString fName; 130 SkString fName;
131 typedef GM INHERITED; 131 typedef GM INHERITED;
132 }; 132 };
133 133
134 class FontMgrMatchGM : public skiagm::GM { 134 class FontMgrMatchGM : public skiagm::GM {
135 SkAutoTUnref<SkFontMgr> fFM; 135 SkAutoTUnref<SkFontMgr> fFM;
136 136
137 public: 137 public:
138 FontMgrMatchGM() : fFM(SkFontMgr::RefDefault()) { 138 FontMgrMatchGM() : fFM(SkFontMgr::RefDefault()) {
139 SkGraphics::SetFontCacheLimit(16 * 1024 * 1024); 139 SkGraphics::SetFontCacheLimit(16 * 1024 * 1024);
140 } 140 }
141 141
142 protected: 142 protected:
143 virtual SkString onShortName() SK_OVERRIDE { 143 SkString onShortName() SK_OVERRIDE {
144 return SkString("fontmgr_match"); 144 return SkString("fontmgr_match");
145 } 145 }
146 146
147 virtual SkISize onISize() SK_OVERRIDE { 147 SkISize onISize() SK_OVERRIDE {
148 return SkISize::Make(640, 1024); 148 return SkISize::Make(640, 1024);
149 } 149 }
150 150
151 void iterateFamily(SkCanvas* canvas, const SkPaint& paint, 151 void iterateFamily(SkCanvas* canvas, const SkPaint& paint,
152 SkFontStyleSet* fset) { 152 SkFontStyleSet* fset) {
153 SkPaint p(paint); 153 SkPaint p(paint);
154 SkScalar y = 0; 154 SkScalar y = 0;
155 155
156 for (int j = 0; j < fset->count(); ++j) { 156 for (int j = 0; j < fset->count(); ++j) {
157 SkString sname; 157 SkString sname;
(...skipping 21 matching lines...) Expand all
179 SkString str; 179 SkString str;
180 str.printf("request [%d %d]", fs.weight(), fs.width()); 180 str.printf("request [%d %d]", fs.weight(), fs.width());
181 p.setTypeface(face)->unref(); 181 p.setTypeface(face)->unref();
182 (void)drawString(canvas, str, 0, y, p); 182 (void)drawString(canvas, str, 0, y, p);
183 y += 24; 183 y += 24;
184 } 184 }
185 } 185 }
186 } 186 }
187 } 187 }
188 188
189 virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE { 189 void onDraw(SkCanvas* canvas) SK_OVERRIDE {
190 SkPaint paint; 190 SkPaint paint;
191 paint.setAntiAlias(true); 191 paint.setAntiAlias(true);
192 paint.setLCDRenderText(true); 192 paint.setLCDRenderText(true);
193 paint.setSubpixelText(true); 193 paint.setSubpixelText(true);
194 paint.setTextSize(17); 194 paint.setTextSize(17);
195 195
196 static const char* gNames[] = { 196 static const char* gNames[] = {
197 "Helvetica Neue", "Arial" 197 "Helvetica Neue", "Arial"
198 }; 198 };
199 199
200 SkAutoTUnref<SkFontStyleSet> fset; 200 SkAutoTUnref<SkFontStyleSet> fset;
201 for (size_t i = 0; i < SK_ARRAY_COUNT(gNames); ++i) { 201 for (size_t i = 0; i < SK_ARRAY_COUNT(gNames); ++i) {
202 fset.reset(fFM->matchFamily(gNames[i])); 202 fset.reset(fFM->matchFamily(gNames[i]));
203 if (fset->count() > 0) { 203 if (fset->count() > 0) {
204 break; 204 break;
205 } 205 }
206 } 206 }
207 if (NULL == fset.get()) { 207 if (NULL == fset.get()) {
208 return; 208 return;
209 } 209 }
210 210
211 canvas->translate(20, 40); 211 canvas->translate(20, 40);
212 this->exploreFamily(canvas, paint, fset); 212 this->exploreFamily(canvas, paint, fset);
213 canvas->translate(150, 0); 213 canvas->translate(150, 0);
214 this->iterateFamily(canvas, paint, fset); 214 this->iterateFamily(canvas, paint, fset);
215 } 215 }
216 216
217 virtual uint32_t onGetFlags() const SK_OVERRIDE { 217 uint32_t onGetFlags() const SK_OVERRIDE {
218 // fontdescriptors (and therefore serialization) don't yet understand 218 // fontdescriptors (and therefore serialization) don't yet understand
219 // these new styles, so skip tests that exercise that for now. 219 // these new styles, so skip tests that exercise that for now.
220 return kSkipPicture_Flag | kSkipPipe_Flag; 220 return kSkipPicture_Flag | kSkipPipe_Flag;
221 } 221 }
222 222
223 private: 223 private:
224 typedef GM INHERITED; 224 typedef GM INHERITED;
225 }; 225 };
226 226
227 class FontMgrBoundsGM : public skiagm::GM { 227 class FontMgrBoundsGM : public skiagm::GM {
(...skipping 18 matching lines...) Expand all
246 } 246 }
247 247
248 SkRect r = paint.getFontBounds(); 248 SkRect r = paint.getFontBounds();
249 r.offset(x, y); 249 r.offset(x, y);
250 SkPaint p(paint); 250 SkPaint p(paint);
251 p.setColor(boundsColor); 251 p.setColor(boundsColor);
252 canvas->drawRect(r, p); 252 canvas->drawRect(r, p);
253 } 253 }
254 254
255 protected: 255 protected:
256 virtual SkString onShortName() SK_OVERRIDE { 256 SkString onShortName() SK_OVERRIDE {
257 return fName; 257 return fName;
258 } 258 }
259 259
260 virtual SkISize onISize() SK_OVERRIDE { 260 SkISize onISize() SK_OVERRIDE {
261 return SkISize::Make(1024, 850); 261 return SkISize::Make(1024, 850);
262 } 262 }
263 263
264 virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE { 264 void onDraw(SkCanvas* canvas) SK_OVERRIDE {
265 SkPaint paint; 265 SkPaint paint;
266 paint.setAntiAlias(true); 266 paint.setAntiAlias(true);
267 paint.setSubpixelText(true); 267 paint.setSubpixelText(true);
268 paint.setTextSize(100); 268 paint.setTextSize(100);
269 paint.setStyle(SkPaint::kStroke_Style); 269 paint.setStyle(SkPaint::kStroke_Style);
270 paint.setTextScaleX(fScaleX); 270 paint.setTextScaleX(fScaleX);
271 paint.setTextSkewX(fSkewX); 271 paint.setTextSkewX(fSkewX);
272 272
273 const SkColor boundsColors[2] = { SK_ColorRED, SK_ColorBLUE }; 273 const SkColor boundsColors[2] = { SK_ColorRED, SK_ColorBLUE };
274 274
(...skipping 18 matching lines...) Expand all
293 y += 160; 293 y += 160;
294 } 294 }
295 if (index >= 30) { 295 if (index >= 30) {
296 return; 296 return;
297 } 297 }
298 } 298 }
299 } 299 }
300 } 300 }
301 } 301 }
302 302
303 virtual uint32_t onGetFlags() const SK_OVERRIDE { 303 uint32_t onGetFlags() const SK_OVERRIDE {
304 // fontdescriptors (and therefore serialization) don't yet understand 304 // fontdescriptors (and therefore serialization) don't yet understand
305 // these new styles, so skip tests that exercise that for now. 305 // these new styles, so skip tests that exercise that for now.
306 306
307 // If certain fonts are picked up (e.g. Microsoft Jhenghei 20MB for Regu lar, 12MB for Bold), 307 // If certain fonts are picked up (e.g. Microsoft Jhenghei 20MB for Regu lar, 12MB for Bold),
308 // the resulting pdf can be ~700MB and crashes Chrome's PDF viewer. 308 // the resulting pdf can be ~700MB and crashes Chrome's PDF viewer.
309 309
310 return kSkipPicture_Flag | kSkipPipe_Flag | kSkipPDF_Flag; 310 return kSkipPicture_Flag | kSkipPipe_Flag | kSkipPDF_Flag;
311 } 311 }
312 312
313 private: 313 private:
314 SkAutoTUnref<SkFontMgr> fFM; 314 SkAutoTUnref<SkFontMgr> fFM;
315 SkString fName; 315 SkString fName;
316 SkScalar fScaleX, fSkewX; 316 SkScalar fScaleX, fSkewX;
317 typedef GM INHERITED; 317 typedef GM INHERITED;
318 }; 318 };
319 319
320 ////////////////////////////////////////////////////////////////////////////// 320 //////////////////////////////////////////////////////////////////////////////
321 321
322 DEF_GM( return SkNEW(FontMgrGM); ) 322 DEF_GM( return SkNEW(FontMgrGM); )
323 DEF_GM( return SkNEW(FontMgrMatchGM); ) 323 DEF_GM( return SkNEW(FontMgrMatchGM); )
324 DEF_GM( return SkNEW(FontMgrBoundsGM(1.0, 0)); ) 324 DEF_GM( return SkNEW(FontMgrBoundsGM(1.0, 0)); )
325 DEF_GM( return SkNEW(FontMgrBoundsGM(0.75, 0)); ) 325 DEF_GM( return SkNEW(FontMgrBoundsGM(0.75, 0)); )
326 DEF_GM( return SkNEW(FontMgrBoundsGM(1.0, -0.25)); ) 326 DEF_GM( return SkNEW(FontMgrBoundsGM(1.0, -0.25)); )
327 327
328 #ifdef SK_BUILD_FOR_WIN 328 #ifdef SK_BUILD_FOR_WIN
329 DEF_GM( return SkNEW_ARGS(FontMgrGM, (SkFontMgr_New_DirectWrite())); ) 329 DEF_GM( return SkNEW_ARGS(FontMgrGM, (SkFontMgr_New_DirectWrite())); )
330 #endif 330 #endif
OLDNEW
« no previous file with comments | « gm/fontcache.cpp ('k') | gm/fontscaler.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698