Index: skia/gl/SkGLTextCache.h |
=================================================================== |
--- skia/gl/SkGLTextCache.h (revision 16859) |
+++ skia/gl/SkGLTextCache.h (working copy) |
@@ -1,86 +0,0 @@ |
-#ifndef SkGLTextCache_DEFINED |
-#define SkGLTextCache_DEFINED |
- |
-#include "SkGL.h" |
- |
-class SkGlyph; |
- |
-class SkGLTextCache { |
-public: |
- SkGLTextCache(); |
- ~SkGLTextCache(); |
- |
- /** Delete all of the strikes in the cache. Pass true if the texture IDs are |
- still valid, in which case glDeleteTextures will be called. Pass false |
- if they are invalid (e.g. the gl-context has changed), in which case |
- they will just be abandoned. |
- */ |
- void deleteAllStrikes(bool texturesAreValid); |
- |
- class Strike { |
- public: |
- int width() const { return fStrikeWidth; } |
- int height() const { return fStrikeHeight; } |
- GLuint texture() const { return fTexName; } |
- int widthShift() const { return fStrikeWidthShift; } |
- int heightShift() const { return fStrikeHeightShift; } |
- |
- // call this to force us to ignore the texture name in our destructor |
- // only call it right before our destructor |
- void abandonTexture() { fTexName = 0; } |
- |
- private: |
- // if next is non-null, its height must match our height |
- Strike(Strike* next, int width, int height); |
- ~Strike(); |
- |
- Strike* findGlyph(const SkGlyph&, int* offset); |
- Strike* addGlyphAndBind(const SkGlyph&, const uint8_t*, int* offset); |
- |
- enum { |
- kMinStrikeWidth = 1024, |
- kMaxGlyphCount = 256 |
- }; |
- |
- Strike* fNext; |
- GLuint fTexName; |
- uint32_t fGlyphIDArray[kMaxGlyphCount]; // stores glyphIDs |
- uint16_t fGlyphOffsetX[kMaxGlyphCount]; // stores x-offsets |
- uint16_t fGlyphCount; |
- uint16_t fNextFreeOffsetX; |
- uint16_t fStrikeWidth; |
- uint16_t fStrikeHeight; |
- uint8_t fStrikeWidthShift; // pow2(fStrikeWidth) |
- uint8_t fStrikeHeightShift; // pow2(fStrikeHeight) |
- |
- friend class SkGLTextCache; |
- }; |
- |
- /** If found, returns the exact strike containing it (there may be more than |
- one with a given height), and sets offset to the offset for that glyph |
- (if not null). Does NOT bind the texture. |
- If not found, returns null and ignores offset param. |
- */ |
- Strike* findGlyph(const SkGlyph&, int* offset); |
- |
- /** Adds the specified glyph to this list of strikes, returning the new |
- head of the list. If offset is not null, it is set to the offset |
- for this glyph within the strike. The associated texture is bound |
- to the gl context. |
- */ |
- Strike* addGlyphAndBind(const SkGlyph&, const uint8_t image[], int* offset); |
- |
-private: |
- enum { |
- // greater than this we won't cache |
- kMaxGlyphHeightShift = 9, |
- |
- kMaxGlyphHeight = 1 << kMaxGlyphHeightShift, |
- kMaxStrikeListCount = kMaxGlyphHeightShift + 1 |
- }; |
- |
- // heads of the N families, one for each pow2 height |
- Strike* fStrikeList[kMaxStrikeListCount]; |
-}; |
- |
-#endif |