| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright 2014 Google Inc. | 2 * Copyright 2014 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 #ifndef SkTextBlob_DEFINED | 8 #ifndef SkTextBlob_DEFINED |
| 9 #define SkTextBlob_DEFINED | 9 #define SkTextBlob_DEFINED |
| 10 | 10 |
| (...skipping 28 matching lines...) Expand all Loading... |
| 39 | 39 |
| 40 /** | 40 /** |
| 41 * Recreate an SkTextBlob that was serialized into a buffer. | 41 * Recreate an SkTextBlob that was serialized into a buffer. |
| 42 * | 42 * |
| 43 * @param SkReadBuffer Serialized blob data. | 43 * @param SkReadBuffer Serialized blob data. |
| 44 * @return A new SkTextBlob representing the serialized data, or NULL if th
e buffer is | 44 * @return A new SkTextBlob representing the serialized data, or NULL if th
e buffer is |
| 45 * invalid. | 45 * invalid. |
| 46 */ | 46 */ |
| 47 static const SkTextBlob* CreateFromBuffer(SkReadBuffer&); | 47 static const SkTextBlob* CreateFromBuffer(SkReadBuffer&); |
| 48 | 48 |
| 49 private: | |
| 50 enum GlyphPositioning { | 49 enum GlyphPositioning { |
| 51 kDefault_Positioning = 0, // Default glyph advances -- zero scalars
per glyph. | 50 kDefault_Positioning = 0, // Default glyph advances -- zero scalars
per glyph. |
| 52 kHorizontal_Positioning = 1, // Horizontal positioning -- one scalar p
er glyph. | 51 kHorizontal_Positioning = 1, // Horizontal positioning -- one scalar p
er glyph. |
| 53 kFull_Positioning = 2 // Point positioning -- two scalars per g
lyph. | 52 kFull_Positioning = 2 // Point positioning -- two scalars per g
lyph. |
| 54 }; | 53 }; |
| 55 | 54 |
| 55 private: |
| 56 class RunRecord; | 56 class RunRecord; |
| 57 | 57 |
| 58 class RunIterator { | |
| 59 public: | |
| 60 RunIterator(const SkTextBlob* blob); | |
| 61 | |
| 62 bool done() const; | |
| 63 void next(); | |
| 64 | |
| 65 uint32_t glyphCount() const; | |
| 66 const uint16_t* glyphs() const; | |
| 67 const SkScalar* pos() const; | |
| 68 const SkPoint& offset() const; | |
| 69 void applyFontToPaint(SkPaint*) const; | |
| 70 GlyphPositioning positioning() const; | |
| 71 bool isLCD() const; | |
| 72 | |
| 73 private: | |
| 74 const RunRecord* fCurrentRun; | |
| 75 int fRemainingRuns; | |
| 76 | |
| 77 SkDEBUGCODE(uint8_t* fStorageTop;) | |
| 78 }; | |
| 79 | |
| 80 SkTextBlob(int runCount, const SkRect& bounds); | 58 SkTextBlob(int runCount, const SkRect& bounds); |
| 81 | 59 |
| 82 virtual ~SkTextBlob(); | 60 virtual ~SkTextBlob(); |
| 83 | 61 |
| 84 // Memory for objects of this class is created with sk_malloc rather than op
erator new and must | 62 // Memory for objects of this class is created with sk_malloc rather than op
erator new and must |
| 85 // be freed with sk_free. | 63 // be freed with sk_free. |
| 86 void operator delete(void* p) { sk_free(p); } | 64 void operator delete(void* p) { sk_free(p); } |
| 87 void* operator new(size_t) { | 65 void* operator new(size_t) { |
| 88 SkFAIL("All blobs are created by placement new."); | 66 SkFAIL("All blobs are created by placement new."); |
| 89 return sk_malloc_throw(0); | 67 return sk_malloc_throw(0); |
| 90 } | 68 } |
| 91 void* operator new(size_t, void* p) { return p; } | 69 void* operator new(size_t, void* p) { return p; } |
| 92 | 70 |
| 93 static unsigned ScalarsPerGlyph(GlyphPositioning pos); | 71 static unsigned ScalarsPerGlyph(GlyphPositioning pos); |
| 94 | 72 |
| 95 friend class GrAtlasTextContext; | |
| 96 friend class GrStencilAndCoverTextContext; | |
| 97 friend class GrTextBlobCache; | |
| 98 friend class GrTextContext; | |
| 99 friend class SkBaseDevice; | |
| 100 friend class SkTextBlobBuilder; | 73 friend class SkTextBlobBuilder; |
| 101 friend class TextBlobTester; | 74 friend class SkTextBlobRunIterator; |
| 102 | 75 |
| 103 const int fRunCount; | 76 const int fRunCount; |
| 104 const SkRect fBounds; | 77 const SkRect fBounds; |
| 105 const uint32_t fUniqueID; | 78 const uint32_t fUniqueID; |
| 106 | 79 |
| 107 SkDEBUGCODE(size_t fStorageSize;) | 80 SkDEBUGCODE(size_t fStorageSize;) |
| 108 | 81 |
| 109 // The actual payload resides in externally-managed storage, following the o
bject. | 82 // The actual payload resides in externally-managed storage, following the o
bject. |
| 110 // (see the .cpp for more details) | 83 // (see the .cpp for more details) |
| 111 | 84 |
| (...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 202 | 175 |
| 203 SkRect fBounds; | 176 SkRect fBounds; |
| 204 int fRunCount; | 177 int fRunCount; |
| 205 bool fDeferredBounds; | 178 bool fDeferredBounds; |
| 206 size_t fLastRun; // index into fStorage | 179 size_t fLastRun; // index into fStorage |
| 207 | 180 |
| 208 RunBuffer fCurrentRunBuffer; | 181 RunBuffer fCurrentRunBuffer; |
| 209 }; | 182 }; |
| 210 | 183 |
| 211 #endif // SkTextBlob_DEFINED | 184 #endif // SkTextBlob_DEFINED |
| OLD | NEW |