| 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 |