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

Unified 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | src/gpu/GrAtlasTextBlob.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/gpu/GrAtlasTextBlob.h
diff --git a/src/gpu/GrAtlasTextBlob.h b/src/gpu/GrAtlasTextBlob.h
index 09f9dc01a8aa97257b17b89e32b602e6ed5622a0..22e2298a4e2c66effae0717902285f6f589a2b62 100644
--- a/src/gpu/GrAtlasTextBlob.h
+++ b/src/gpu/GrAtlasTextBlob.h
@@ -93,6 +93,7 @@ struct GrAtlasTextBlob : public SkRefCnt {
, fUseLCDText(that.fUseLCDText) {
}
+ // TODO when this object is more internal, drop the privacy
void resetBulkUseToken() { fBulkUseToken.reset(); }
GrBatchAtlas::BulkUseTokenUpdater* bulkUseToken() { return &fBulkUseToken; }
void setStrike(GrBatchTextStrike* strike) { fStrike.reset(SkRef(strike)); }
@@ -102,23 +103,27 @@ struct GrAtlasTextBlob : public SkRefCnt {
uint64_t atlasGeneration() const { return fAtlasGeneration; }
size_t byteCount() const { return fVertexEndIndex - fVertexStartIndex; }
- void setVertexStartIndex(size_t vertStartIndex) { fVertexStartIndex = vertStartIndex;}
size_t vertexStartIndex() const { return fVertexStartIndex; }
- void setVertexEndIndex(size_t vertEndIndex) { fVertexEndIndex = vertEndIndex; }
size_t vertexEndIndex() const { return fVertexEndIndex; }
void appendVertices(size_t vertexStride) {
fVertexEndIndex += vertexStride * kVerticesPerGlyph;
}
uint32_t glyphCount() const { return fGlyphEndIndex - fGlyphStartIndex; }
- void setGlyphStartIndex(uint32_t glyphStartIndex) { fGlyphStartIndex = glyphStartIndex;}
uint32_t glyphStartIndex() const { return fGlyphStartIndex; }
- void setGlyphEndIndex(uint32_t glyphEndIndex) { fGlyphEndIndex = glyphEndIndex; }
uint32_t glyphEndIndex() const { return fGlyphEndIndex; }
void glyphAppended() { fGlyphEndIndex++; }
void setMaskFormat(GrMaskFormat format) { fMaskFormat = format; }
GrMaskFormat maskFormat() const { return fMaskFormat; }
+ void setAsSuccessor(const SubRunInfo& prev) {
+ fGlyphStartIndex = prev.glyphEndIndex();
+ fGlyphEndIndex = prev.glyphEndIndex();
+
+ fVertexStartIndex = prev.vertexEndIndex();
+ fVertexEndIndex = prev.vertexEndIndex();
+ }
+
// df properties
void setUseLCDText(bool useLCDText) { fUseLCDText = useLCDText; }
bool hasUseLCDText() const { return fUseLCDText; }
@@ -141,13 +146,9 @@ struct GrAtlasTextBlob : public SkRefCnt {
SubRunInfo& push_back() {
// Forward glyph / vertex information to seed the new sub run
SubRunInfo& newSubRun = fSubRunInfo.push_back();
- SubRunInfo& prevSubRun = fSubRunInfo.fromBack(1);
-
- newSubRun.setGlyphStartIndex(prevSubRun.glyphEndIndex());
- newSubRun.setGlyphEndIndex(prevSubRun.glyphEndIndex());
+ const SubRunInfo& prevSubRun = fSubRunInfo.fromBack(1);
- newSubRun.setVertexStartIndex(prevSubRun.vertexEndIndex());
- newSubRun.setVertexEndIndex(prevSubRun.vertexEndIndex());
+ newSubRun.setAsSuccessor(prevSubRun);
return newSubRun;
}
static const int kMinSubRuns = 1;
@@ -269,11 +270,22 @@ struct GrAtlasTextBlob : public SkRefCnt {
bool hasBitmap() const { return SkToBool(fTextType & kHasBitmap_TextType); }
void setHasDistanceField() { fTextType |= kHasDistanceField_TextType; }
void setHasBitmap() { fTextType |= kHasBitmap_TextType; }
- void appendGlyph(Run::SubRunInfo* subrun, GrGlyph* glyph) {
- this->fGlyphs[subrun->glyphEndIndex()] = glyph;
- subrun->glyphAppended();
+
+ void push_back_run(int currRun) {
+ SkASSERT(currRun < fRunCount);
+ if (currRun > 0) {
+ Run::SubRunInfo& newRun = fRuns[currRun].fSubRunInfo.back();
+ Run::SubRunInfo& lastRun = fRuns[currRun - 1].fSubRunInfo.back();
+ newRun.setAsSuccessor(lastRun);
+ }
}
+ void appendGlyph(Run* run,
+ Run::SubRunInfo* subRun,
+ const SkRect& positions, GrColor color,
+ size_t vertexStride, bool useVertexColor,
+ GrGlyph* glyph);
+
static const int kVerticesPerGlyph = 4;
#ifdef CACHE_SANITY_CHECK
« 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