Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(326)

Side by Side Diff: src/gpu/GrAtlasTextBlob.h

Issue 1502323002: A small cleanup of GrAtlasTextContext (Closed) Base URL: https://skia.googlesource.com/skia.git@cleanuptext
Patch Set: fix refcount issue Created 5 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | src/gpu/GrAtlasTextBlob.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 GrAtlasTextBlob_DEFINED 8 #ifndef GrAtlasTextBlob_DEFINED
9 #define GrAtlasTextBlob_DEFINED 9 #define GrAtlasTextBlob_DEFINED
10 10
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
86 , fAtlasGeneration(that.fAtlasGeneration) 86 , fAtlasGeneration(that.fAtlasGeneration)
87 , fVertexStartIndex(that.fVertexStartIndex) 87 , fVertexStartIndex(that.fVertexStartIndex)
88 , fVertexEndIndex(that.fVertexEndIndex) 88 , fVertexEndIndex(that.fVertexEndIndex)
89 , fGlyphStartIndex(that.fGlyphStartIndex) 89 , fGlyphStartIndex(that.fGlyphStartIndex)
90 , fGlyphEndIndex(that.fGlyphEndIndex) 90 , fGlyphEndIndex(that.fGlyphEndIndex)
91 , fMaskFormat(that.fMaskFormat) 91 , fMaskFormat(that.fMaskFormat)
92 , fDrawAsDistanceFields(that.fDrawAsDistanceFields) 92 , fDrawAsDistanceFields(that.fDrawAsDistanceFields)
93 , fUseLCDText(that.fUseLCDText) { 93 , fUseLCDText(that.fUseLCDText) {
94 } 94 }
95 95
96 // TODO when this object is more internal, drop the privacy
96 void resetBulkUseToken() { fBulkUseToken.reset(); } 97 void resetBulkUseToken() { fBulkUseToken.reset(); }
97 GrBatchAtlas::BulkUseTokenUpdater* bulkUseToken() { return &fBulkUse Token; } 98 GrBatchAtlas::BulkUseTokenUpdater* bulkUseToken() { return &fBulkUse Token; }
98 void setStrike(GrBatchTextStrike* strike) { fStrike.reset(SkRef(stri ke)); } 99 void setStrike(GrBatchTextStrike* strike) { fStrike.reset(SkRef(stri ke)); }
99 GrBatchTextStrike* strike() const { return fStrike.get(); } 100 GrBatchTextStrike* strike() const { return fStrike.get(); }
100 101
101 void setAtlasGeneration(uint64_t atlasGeneration) { fAtlasGeneration = atlasGeneration;} 102 void setAtlasGeneration(uint64_t atlasGeneration) { fAtlasGeneration = atlasGeneration;}
102 uint64_t atlasGeneration() const { return fAtlasGeneration; } 103 uint64_t atlasGeneration() const { return fAtlasGeneration; }
103 104
104 size_t byteCount() const { return fVertexEndIndex - fVertexStartInde x; } 105 size_t byteCount() const { return fVertexEndIndex - fVertexStartInde x; }
105 void setVertexStartIndex(size_t vertStartIndex) { fVertexStartIndex = vertStartIndex;}
106 size_t vertexStartIndex() const { return fVertexStartIndex; } 106 size_t vertexStartIndex() const { return fVertexStartIndex; }
107 void setVertexEndIndex(size_t vertEndIndex) { fVertexEndIndex = vert EndIndex; }
108 size_t vertexEndIndex() const { return fVertexEndIndex; } 107 size_t vertexEndIndex() const { return fVertexEndIndex; }
109 void appendVertices(size_t vertexStride) { 108 void appendVertices(size_t vertexStride) {
110 fVertexEndIndex += vertexStride * kVerticesPerGlyph; 109 fVertexEndIndex += vertexStride * kVerticesPerGlyph;
111 } 110 }
112 111
113 uint32_t glyphCount() const { return fGlyphEndIndex - fGlyphStartInd ex; } 112 uint32_t glyphCount() const { return fGlyphEndIndex - fGlyphStartInd ex; }
114 void setGlyphStartIndex(uint32_t glyphStartIndex) { fGlyphStartIndex = glyphStartIndex;}
115 uint32_t glyphStartIndex() const { return fGlyphStartIndex; } 113 uint32_t glyphStartIndex() const { return fGlyphStartIndex; }
116 void setGlyphEndIndex(uint32_t glyphEndIndex) { fGlyphEndIndex = gly phEndIndex; }
117 uint32_t glyphEndIndex() const { return fGlyphEndIndex; } 114 uint32_t glyphEndIndex() const { return fGlyphEndIndex; }
118 void glyphAppended() { fGlyphEndIndex++; } 115 void glyphAppended() { fGlyphEndIndex++; }
119 void setMaskFormat(GrMaskFormat format) { fMaskFormat = format; } 116 void setMaskFormat(GrMaskFormat format) { fMaskFormat = format; }
120 GrMaskFormat maskFormat() const { return fMaskFormat; } 117 GrMaskFormat maskFormat() const { return fMaskFormat; }
121 118
119 void setAsSuccessor(const SubRunInfo& prev) {
120 fGlyphStartIndex = prev.glyphEndIndex();
121 fGlyphEndIndex = prev.glyphEndIndex();
122
123 fVertexStartIndex = prev.vertexEndIndex();
124 fVertexEndIndex = prev.vertexEndIndex();
125 }
126
122 // df properties 127 // df properties
123 void setUseLCDText(bool useLCDText) { fUseLCDText = useLCDText; } 128 void setUseLCDText(bool useLCDText) { fUseLCDText = useLCDText; }
124 bool hasUseLCDText() const { return fUseLCDText; } 129 bool hasUseLCDText() const { return fUseLCDText; }
125 void setDrawAsDistanceFields() { fDrawAsDistanceFields = true; } 130 void setDrawAsDistanceFields() { fDrawAsDistanceFields = true; }
126 bool drawAsDistanceFields() const { return fDrawAsDistanceFields; } 131 bool drawAsDistanceFields() const { return fDrawAsDistanceFields; }
127 132
128 private: 133 private:
129 GrBatchAtlas::BulkUseTokenUpdater fBulkUseToken; 134 GrBatchAtlas::BulkUseTokenUpdater fBulkUseToken;
130 SkAutoTUnref<GrBatchTextStrike> fStrike; 135 SkAutoTUnref<GrBatchTextStrike> fStrike;
131 uint64_t fAtlasGeneration; 136 uint64_t fAtlasGeneration;
132 size_t fVertexStartIndex; 137 size_t fVertexStartIndex;
133 size_t fVertexEndIndex; 138 size_t fVertexEndIndex;
134 uint32_t fGlyphStartIndex; 139 uint32_t fGlyphStartIndex;
135 uint32_t fGlyphEndIndex; 140 uint32_t fGlyphEndIndex;
136 GrMaskFormat fMaskFormat; 141 GrMaskFormat fMaskFormat;
137 bool fDrawAsDistanceFields; // df property 142 bool fDrawAsDistanceFields; // df property
138 bool fUseLCDText; // df property 143 bool fUseLCDText; // df property
139 }; 144 };
140 145
141 SubRunInfo& push_back() { 146 SubRunInfo& push_back() {
142 // Forward glyph / vertex information to seed the new sub run 147 // Forward glyph / vertex information to seed the new sub run
143 SubRunInfo& newSubRun = fSubRunInfo.push_back(); 148 SubRunInfo& newSubRun = fSubRunInfo.push_back();
144 SubRunInfo& prevSubRun = fSubRunInfo.fromBack(1); 149 const SubRunInfo& prevSubRun = fSubRunInfo.fromBack(1);
145 150
146 newSubRun.setGlyphStartIndex(prevSubRun.glyphEndIndex()); 151 newSubRun.setAsSuccessor(prevSubRun);
147 newSubRun.setGlyphEndIndex(prevSubRun.glyphEndIndex());
148
149 newSubRun.setVertexStartIndex(prevSubRun.vertexEndIndex());
150 newSubRun.setVertexEndIndex(prevSubRun.vertexEndIndex());
151 return newSubRun; 152 return newSubRun;
152 } 153 }
153 static const int kMinSubRuns = 1; 154 static const int kMinSubRuns = 1;
154 SkAutoTUnref<SkTypeface> fTypeface; 155 SkAutoTUnref<SkTypeface> fTypeface;
155 SkRect fVertexBounds; 156 SkRect fVertexBounds;
156 SkSTArray<kMinSubRuns, SubRunInfo> fSubRunInfo; 157 SkSTArray<kMinSubRuns, SubRunInfo> fSubRunInfo;
157 SkAutoDescriptor fDescriptor; 158 SkAutoDescriptor fDescriptor;
158 159
159 // Distance field text cannot draw coloremoji, and so has to fall back. However, 160 // Distance field text cannot draw coloremoji, and so has to fall back. However,
160 // though the distance field text and the coloremoji may share the same run, they 161 // though the distance field text and the coloremoji may share the same run, they
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after
262 263
263 void* operator new(size_t, void* p) { return p; } 264 void* operator new(size_t, void* p) { return p; }
264 void operator delete(void* target, void* placement) { 265 void operator delete(void* target, void* placement) {
265 ::operator delete(target, placement); 266 ::operator delete(target, placement);
266 } 267 }
267 268
268 bool hasDistanceField() const { return SkToBool(fTextType & kHasDistanceFiel d_TextType); } 269 bool hasDistanceField() const { return SkToBool(fTextType & kHasDistanceFiel d_TextType); }
269 bool hasBitmap() const { return SkToBool(fTextType & kHasBitmap_TextType); } 270 bool hasBitmap() const { return SkToBool(fTextType & kHasBitmap_TextType); }
270 void setHasDistanceField() { fTextType |= kHasDistanceField_TextType; } 271 void setHasDistanceField() { fTextType |= kHasDistanceField_TextType; }
271 void setHasBitmap() { fTextType |= kHasBitmap_TextType; } 272 void setHasBitmap() { fTextType |= kHasBitmap_TextType; }
272 void appendGlyph(Run::SubRunInfo* subrun, GrGlyph* glyph) { 273
273 this->fGlyphs[subrun->glyphEndIndex()] = glyph; 274 void push_back_run(int currRun) {
274 subrun->glyphAppended(); 275 SkASSERT(currRun < fRunCount);
276 if (currRun > 0) {
277 Run::SubRunInfo& newRun = fRuns[currRun].fSubRunInfo.back();
278 Run::SubRunInfo& lastRun = fRuns[currRun - 1].fSubRunInfo.back();
279 newRun.setAsSuccessor(lastRun);
280 }
275 } 281 }
276 282
283 void appendGlyph(Run* run,
284 Run::SubRunInfo* subRun,
285 const SkRect& positions, GrColor color,
286 size_t vertexStride, bool useVertexColor,
287 GrGlyph* glyph);
288
277 static const int kVerticesPerGlyph = 4; 289 static const int kVerticesPerGlyph = 4;
278 290
279 #ifdef CACHE_SANITY_CHECK 291 #ifdef CACHE_SANITY_CHECK
280 static void AssertEqual(const GrAtlasTextBlob&, const GrAtlasTextBlob&); 292 static void AssertEqual(const GrAtlasTextBlob&, const GrAtlasTextBlob&);
281 size_t fSize; 293 size_t fSize;
282 #endif 294 #endif
283 }; 295 };
284 296
285 #endif 297 #endif
OLDNEW
« no previous file with comments | « no previous file | src/gpu/GrAtlasTextBlob.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698