OLD | NEW |
1 /* | 1 /* |
2 * Copyright 2006 The Android Open Source Project | 2 * Copyright 2006 The Android Open Source Project |
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 #ifndef SkGlyphCache_DEFINED | 8 #ifndef SkGlyphCache_DEFINED |
9 #define SkGlyphCache_DEFINED | 9 #define SkGlyphCache_DEFINED |
10 | 10 |
11 #include "SkBitmap.h" | 11 #include "SkBitmap.h" |
12 #include "SkChecksum.h" | 12 #include "SkChecksum.h" |
13 #include "SkChunkAlloc.h" | 13 #include "SkChunkAlloc.h" |
14 #include "SkDescriptor.h" | 14 #include "SkDescriptor.h" |
15 #include "SkGlyph.h" | 15 #include "SkGlyph.h" |
16 #include "SkScalerContext.h" | 16 #include "SkScalerContext.h" |
17 #include "SkTemplates.h" | 17 #include "SkTemplates.h" |
18 #include "SkTDArray.h" | 18 #include "SkTDArray.h" |
19 | 19 |
20 struct SkDeviceProperties; | |
21 class SkPaint; | 20 class SkPaint; |
22 | 21 |
23 class SkGlyphCache_Globals; | 22 class SkGlyphCache_Globals; |
24 | 23 |
25 // Enable this locally to add stats for hash-table hit rates. It also extends th
e dump() | 24 // Enable this locally to add stats for hash-table hit rates. It also extends th
e dump() |
26 // output to show those stats. | 25 // output to show those stats. |
27 //#define SK_GLYPHCACHE_TRACK_HASH_STATS | 26 //#define SK_GLYPHCACHE_TRACK_HASH_STATS |
28 | 27 |
29 /** \class SkGlyphCache | 28 /** \class SkGlyphCache |
30 | 29 |
(...skipping 238 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
269 } | 268 } |
270 | 269 |
271 protected: | 270 protected: |
272 // Hide the constructors so we can't create one of these directly. | 271 // Hide the constructors so we can't create one of these directly. |
273 // Create SkAutoGlyphCache or SkAutoGlyphCacheNoCache instead. | 272 // Create SkAutoGlyphCache or SkAutoGlyphCacheNoCache instead. |
274 SkAutoGlyphCacheBase(SkGlyphCache* cache) : fCache(cache) {} | 273 SkAutoGlyphCacheBase(SkGlyphCache* cache) : fCache(cache) {} |
275 SkAutoGlyphCacheBase(SkTypeface* typeface, const SkDescriptor* desc) { | 274 SkAutoGlyphCacheBase(SkTypeface* typeface, const SkDescriptor* desc) { |
276 fCache = SkGlyphCache::DetachCache(typeface, desc); | 275 fCache = SkGlyphCache::DetachCache(typeface, desc); |
277 } | 276 } |
278 SkAutoGlyphCacheBase(const SkPaint& /*paint*/, | 277 SkAutoGlyphCacheBase(const SkPaint& /*paint*/, |
279 const SkDeviceProperties* /*deviceProperties*/, | 278 const SkSurfaceProps* /*surfaceProps*/, |
280 const SkMatrix* /*matrix*/) { | 279 const SkMatrix* /*matrix*/) { |
281 fCache = NULL; | 280 fCache = NULL; |
282 } | 281 } |
283 SkAutoGlyphCacheBase() { | 282 SkAutoGlyphCacheBase() { |
284 fCache = NULL; | 283 fCache = NULL; |
285 } | 284 } |
286 ~SkAutoGlyphCacheBase() { | 285 ~SkAutoGlyphCacheBase() { |
287 if (fCache) { | 286 if (fCache) { |
288 SkGlyphCache::AttachCache(fCache); | 287 SkGlyphCache::AttachCache(fCache); |
289 } | 288 } |
290 } | 289 } |
291 | 290 |
292 SkGlyphCache* fCache; | 291 SkGlyphCache* fCache; |
293 | 292 |
294 private: | 293 private: |
295 static bool DetachProc(const SkGlyphCache*, void*); | 294 static bool DetachProc(const SkGlyphCache*, void*); |
296 }; | 295 }; |
297 | 296 |
298 class SkAutoGlyphCache : public SkAutoGlyphCacheBase { | 297 class SkAutoGlyphCache : public SkAutoGlyphCacheBase { |
299 public: | 298 public: |
300 SkAutoGlyphCache(SkGlyphCache* cache) : SkAutoGlyphCacheBase(cache) {} | 299 SkAutoGlyphCache(SkGlyphCache* cache) : SkAutoGlyphCacheBase(cache) {} |
301 SkAutoGlyphCache(SkTypeface* typeface, const SkDescriptor* desc) : | 300 SkAutoGlyphCache(SkTypeface* typeface, const SkDescriptor* desc) : |
302 SkAutoGlyphCacheBase(typeface, desc) {} | 301 SkAutoGlyphCacheBase(typeface, desc) {} |
303 SkAutoGlyphCache(const SkPaint& paint, | 302 SkAutoGlyphCache(const SkPaint& paint, |
304 const SkDeviceProperties* deviceProperties, | 303 const SkSurfaceProps* surfaceProps, |
305 const SkMatrix* matrix) { | 304 const SkMatrix* matrix) { |
306 fCache = paint.detachCache(deviceProperties, matrix, false); | 305 fCache = paint.detachCache(surfaceProps, matrix, false); |
307 } | 306 } |
308 | 307 |
309 private: | 308 private: |
310 SkAutoGlyphCache() : SkAutoGlyphCacheBase() {} | 309 SkAutoGlyphCache() : SkAutoGlyphCacheBase() {} |
311 }; | 310 }; |
312 #define SkAutoGlyphCache(...) SK_REQUIRE_LOCAL_VAR(SkAutoGlyphCache) | 311 #define SkAutoGlyphCache(...) SK_REQUIRE_LOCAL_VAR(SkAutoGlyphCache) |
313 | 312 |
314 class SkAutoGlyphCacheNoGamma : public SkAutoGlyphCacheBase { | 313 class SkAutoGlyphCacheNoGamma : public SkAutoGlyphCacheBase { |
315 public: | 314 public: |
316 SkAutoGlyphCacheNoGamma(SkGlyphCache* cache) : SkAutoGlyphCacheBase(cache) {
} | 315 SkAutoGlyphCacheNoGamma(SkGlyphCache* cache) : SkAutoGlyphCacheBase(cache) {
} |
317 SkAutoGlyphCacheNoGamma(SkTypeface* typeface, const SkDescriptor* desc) : | 316 SkAutoGlyphCacheNoGamma(SkTypeface* typeface, const SkDescriptor* desc) : |
318 SkAutoGlyphCacheBase(typeface, desc) {} | 317 SkAutoGlyphCacheBase(typeface, desc) {} |
319 SkAutoGlyphCacheNoGamma(const SkPaint& paint, | 318 SkAutoGlyphCacheNoGamma(const SkPaint& paint, |
320 const SkDeviceProperties* deviceProperties, | 319 const SkSurfaceProps* surfaceProps, |
321 const SkMatrix* matrix) { | 320 const SkMatrix* matrix) { |
322 fCache = paint.detachCache(deviceProperties, matrix, true); | 321 fCache = paint.detachCache(surfaceProps, matrix, true); |
323 } | 322 } |
324 | 323 |
325 private: | 324 private: |
326 SkAutoGlyphCacheNoGamma() : SkAutoGlyphCacheBase() {} | 325 SkAutoGlyphCacheNoGamma() : SkAutoGlyphCacheBase() {} |
327 }; | 326 }; |
328 #define SkAutoGlyphCacheNoGamma(...) SK_REQUIRE_LOCAL_VAR(SkAutoGlyphCacheNoGamm
a) | 327 #define SkAutoGlyphCacheNoGamma(...) SK_REQUIRE_LOCAL_VAR(SkAutoGlyphCacheNoGamm
a) |
329 | 328 |
330 #endif | 329 #endif |
OLD | NEW |