| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright 2015 Google Inc. | 2 * Copyright 2015 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 GrAtlasTextContext_DEFINED | 8 #ifndef GrAtlasTextContext_DEFINED |
| 9 #define GrAtlasTextContext_DEFINED | 9 #define GrAtlasTextContext_DEFINED |
| 10 | 10 |
| (...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 79 * handle, we have a bit to mark the run as flusahable via rendering as
paths. It is worth | 79 * handle, we have a bit to mark the run as flusahable via rendering as
paths. It is worth |
| 80 * pointing. It would be a bit expensive to figure out ahead of time whe
ther or not a run | 80 * pointing. It would be a bit expensive to figure out ahead of time whe
ther or not a run |
| 81 * can flush in this manner, so we always allocate vertices for the run,
regardless of | 81 * can flush in this manner, so we always allocate vertices for the run,
regardless of |
| 82 * whether or not it is too large. The benefit of this strategy is that
we can always reuse | 82 * whether or not it is too large. The benefit of this strategy is that
we can always reuse |
| 83 * a blob allocation regardless of viewmatrix changes. We could store p
ositions for these | 83 * a blob allocation regardless of viewmatrix changes. We could store p
ositions for these |
| 84 * glyphs. However, its not clear if this is a win because we'd still h
ave to either go the | 84 * glyphs. However, its not clear if this is a win because we'd still h
ave to either go the |
| 85 * glyph cache to get the path at flush time, or hold onto the path in t
he cache, which | 85 * glyph cache to get the path at flush time, or hold onto the path in t
he cache, which |
| 86 * would greatly increase the memory of these cached items. | 86 * would greatly increase the memory of these cached items. |
| 87 */ | 87 */ |
| 88 struct Run { | 88 struct Run { |
| 89 Run() : fColor(GrColor_ILLEGAL), fInitialized(false), fDrawAsPaths(f
alse) { | 89 Run() |
| 90 : fColor(GrColor_ILLEGAL) |
| 91 , fInitialized(false) |
| 92 , fDrawAsPaths(false) { |
| 90 fVertexBounds.setLargestInverted(); | 93 fVertexBounds.setLargestInverted(); |
| 91 // We insert the first subrun to gurantee a run always has atlea
st one subrun. | |
| 92 // We do this to simplify things when we 'hand off' data from on
e subrun to the | |
| 93 // next | |
| 94 fSubRunInfo.push_back(); | |
| 95 } | 94 } |
| 96 struct SubRunInfo { | 95 struct SubRunInfo { |
| 97 SubRunInfo() | 96 SubRunInfo() |
| 98 : fAtlasGeneration(GrBatchAtlas::kInvalidAtlasGeneration) | 97 : fAtlasGeneration(GrBatchAtlas::kInvalidAtlasGeneration) |
| 99 , fGlyphStartIndex(0) | 98 , fGlyphStartIndex(0) |
| 100 , fGlyphEndIndex(0) | 99 , fGlyphEndIndex(0) |
| 101 , fVertexStartIndex(0) | 100 , fVertexStartIndex(0) |
| 102 , fVertexEndIndex(0) {} | 101 , fVertexEndIndex(0) {} |
| 103 GrMaskFormat fMaskFormat; | 102 GrMaskFormat fMaskFormat; |
| 104 uint64_t fAtlasGeneration; | 103 uint64_t fAtlasGeneration; |
| 105 uint32_t fGlyphStartIndex; | 104 uint32_t fGlyphStartIndex; |
| 106 uint32_t fGlyphEndIndex; | 105 uint32_t fGlyphEndIndex; |
| 107 size_t fVertexStartIndex; | 106 size_t fVertexStartIndex; |
| 108 size_t fVertexEndIndex; | 107 size_t fVertexEndIndex; |
| 109 GrBatchAtlas::BulkUseTokenUpdater fBulkUseToken; | 108 GrBatchAtlas::BulkUseTokenUpdater fBulkUseToken; |
| 110 }; | 109 }; |
| 111 SkSTArray<1, SubRunInfo, true> fSubRunInfo; | 110 |
| 111 class SubRunInfoArray { |
| 112 public: |
| 113 SubRunInfoArray() |
| 114 : fSubRunCount(0) |
| 115 , fSubRunAllocation(kMinSubRuns) { |
| 116 fPtr = reinterpret_cast<SubRunInfo*>(fSubRunStorage.get()); |
| 117 this->push_back(); |
| 118 } |
| 119 |
| 120 int count() const { return fSubRunCount; } |
| 121 SubRunInfo& back() { return fPtr[fSubRunCount - 1]; } |
| 122 SubRunInfo& push_back() { |
| 123 if (fSubRunCount >= fSubRunAllocation) { |
| 124 fSubRunAllocation = fSubRunAllocation << 1; |
| 125 fSubRunStorage.realloc(fSubRunAllocation * sizeof(SubRun
Info)); |
| 126 fPtr = reinterpret_cast<SubRunInfo*>(fSubRunStorage.get(
)); |
| 127 } |
| 128 SkNEW_PLACEMENT(&fPtr[fSubRunCount], SubRunInfo); |
| 129 return fPtr[fSubRunCount++]; |
| 130 } |
| 131 SubRunInfo& operator[](int index) { |
| 132 return fPtr[index]; |
| 133 } |
| 134 const SubRunInfo& operator[](int index) const { |
| 135 return fPtr[index]; |
| 136 } |
| 137 |
| 138 private: |
| 139 static const int kMinSubRuns = 1; |
| 140 static const int kMinSubRunStorage = kMinSubRuns * sizeof(SubRun
Info); |
| 141 SkAutoSTMalloc<kMinSubRunStorage, unsigned char> fSubRunStorage; |
| 142 int fSubRunCount; |
| 143 int fSubRunAllocation; |
| 144 SubRunInfo* fPtr; |
| 145 }; |
| 146 SubRunInfoArray fSubRunInfo; |
| 112 SkAutoDescriptor fDescriptor; | 147 SkAutoDescriptor fDescriptor; |
| 113 SkAutoTUnref<SkTypeface> fTypeface; | 148 SkAutoTUnref<SkTypeface> fTypeface; |
| 114 SkRect fVertexBounds; | 149 SkRect fVertexBounds; |
| 115 GrColor fColor; | 150 GrColor fColor; |
| 116 bool fInitialized; | 151 bool fInitialized; |
| 117 bool fDrawAsPaths; | 152 bool fDrawAsPaths; |
| 118 }; | 153 }; |
| 119 | 154 |
| 120 struct BigGlyph { | 155 struct BigGlyph { |
| 121 BigGlyph(const SkPath& path, int vx, int vy) : fPath(path), fVx(vx),
fVy(vy) {} | 156 BigGlyph(const SkPath& path, int vx, int vy) : fPath(path), fVx(vx),
fVy(vy) {} |
| (...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 237 GrBatchTextStrike* fCurrStrike; | 272 GrBatchTextStrike* fCurrStrike; |
| 238 GrTextBlobCache* fCache; | 273 GrTextBlobCache* fCache; |
| 239 | 274 |
| 240 friend class GrTextBlobCache; | 275 friend class GrTextBlobCache; |
| 241 friend class BitmapTextBatch; | 276 friend class BitmapTextBatch; |
| 242 | 277 |
| 243 typedef GrTextContext INHERITED; | 278 typedef GrTextContext INHERITED; |
| 244 }; | 279 }; |
| 245 | 280 |
| 246 #endif | 281 #endif |
| OLD | NEW |