| 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 GrAtlasTextBlob_DEFINED | 8 #ifndef GrAtlasTextBlob_DEFINED |
| 9 #define GrAtlasTextBlob_DEFINED | 9 #define GrAtlasTextBlob_DEFINED |
| 10 | 10 |
| (...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 71 fSubRunInfo.push_back(); | 71 fSubRunInfo.push_back(); |
| 72 } | 72 } |
| 73 struct SubRunInfo { | 73 struct SubRunInfo { |
| 74 SubRunInfo() | 74 SubRunInfo() |
| 75 : fAtlasGeneration(GrBatchAtlas::kInvalidAtlasGeneration) | 75 : fAtlasGeneration(GrBatchAtlas::kInvalidAtlasGeneration) |
| 76 , fVertexStartIndex(0) | 76 , fVertexStartIndex(0) |
| 77 , fVertexEndIndex(0) | 77 , fVertexEndIndex(0) |
| 78 , fGlyphStartIndex(0) | 78 , fGlyphStartIndex(0) |
| 79 , fGlyphEndIndex(0) | 79 , fGlyphEndIndex(0) |
| 80 , fDrawAsDistanceFields(false) {} | 80 , fDrawAsDistanceFields(false) {} |
| 81 SubRunInfo(const SubRunInfo& that) |
| 82 : fBulkUseToken(that.fBulkUseToken) |
| 83 , fStrike(SkSafeRef(that.fStrike.get())) |
| 84 , fAtlasGeneration(that.fAtlasGeneration) |
| 85 , fVertexStartIndex(that.fVertexStartIndex) |
| 86 , fVertexEndIndex(that.fVertexEndIndex) |
| 87 , fGlyphStartIndex(that.fGlyphStartIndex) |
| 88 , fGlyphEndIndex(that.fGlyphEndIndex) |
| 89 , fTextRatio(that.fTextRatio) |
| 90 , fMaskFormat(that.fMaskFormat) |
| 91 , fDrawAsDistanceFields(that.fDrawAsDistanceFields) |
| 92 , fUseLCDText(that.fUseLCDText) { |
| 93 } |
| 81 // Distance field text cannot draw coloremoji, and so has to fall ba
ck. However, | 94 // Distance field text cannot draw coloremoji, and so has to fall ba
ck. However, |
| 82 // though the distance field text and the coloremoji may share the s
ame run, they | 95 // though the distance field text and the coloremoji may share the s
ame run, they |
| 83 // will have different descriptors. If fOverrideDescriptor is non-N
ULL, then it | 96 // will have different descriptors. If fOverrideDescriptor is non-N
ULL, then it |
| 84 // will be used in place of the run's descriptor to regen texture co
ords | 97 // will be used in place of the run's descriptor to regen texture co
ords |
| 85 // TODO we could have a descriptor cache, it would reduce the size o
f these blobs | 98 // TODO we could have a descriptor cache, it would reduce the size o
f these blobs |
| 86 // significantly, and then the subrun could just have a refed pointe
r to the | 99 // significantly, and then the subrun could just have a refed pointe
r to the |
| 87 // correct descriptor. | 100 // correct descriptor. |
| 88 GrBatchAtlas::BulkUseTokenUpdater fBulkUseToken; | 101 GrBatchAtlas::BulkUseTokenUpdater fBulkUseToken; |
| 102 SkAutoTUnref<GrBatchTextStrike> fStrike; |
| 89 uint64_t fAtlasGeneration; | 103 uint64_t fAtlasGeneration; |
| 90 size_t fVertexStartIndex; | 104 size_t fVertexStartIndex; |
| 91 size_t fVertexEndIndex; | 105 size_t fVertexEndIndex; |
| 92 uint32_t fGlyphStartIndex; | 106 uint32_t fGlyphStartIndex; |
| 93 uint32_t fGlyphEndIndex; | 107 uint32_t fGlyphEndIndex; |
| 94 SkScalar fTextRatio; // df property | 108 SkScalar fTextRatio; // df property |
| 95 GrMaskFormat fMaskFormat; | 109 GrMaskFormat fMaskFormat; |
| 96 bool fDrawAsDistanceFields; // df property | 110 bool fDrawAsDistanceFields; // df property |
| 97 bool fUseLCDText; // df property | 111 bool fUseLCDText; // df property |
| 98 }; | 112 }; |
| 99 | 113 |
| 100 SubRunInfo& push_back() { | 114 SubRunInfo& push_back() { |
| 101 // Forward glyph / vertex information to seed the new sub run | 115 // Forward glyph / vertex information to seed the new sub run |
| 102 SubRunInfo& newSubRun = fSubRunInfo.push_back(); | 116 SubRunInfo& newSubRun = fSubRunInfo.push_back(); |
| 103 SubRunInfo& prevSubRun = fSubRunInfo.fromBack(1); | 117 SubRunInfo& prevSubRun = fSubRunInfo.fromBack(1); |
| 104 | 118 |
| 105 newSubRun.fGlyphStartIndex = prevSubRun.fGlyphEndIndex; | 119 newSubRun.fGlyphStartIndex = prevSubRun.fGlyphEndIndex; |
| 106 newSubRun.fGlyphEndIndex = prevSubRun.fGlyphEndIndex; | 120 newSubRun.fGlyphEndIndex = prevSubRun.fGlyphEndIndex; |
| 107 | 121 |
| 108 newSubRun.fVertexStartIndex = prevSubRun.fVertexEndIndex; | 122 newSubRun.fVertexStartIndex = prevSubRun.fVertexEndIndex; |
| 109 newSubRun.fVertexEndIndex = prevSubRun.fVertexEndIndex; | 123 newSubRun.fVertexEndIndex = prevSubRun.fVertexEndIndex; |
| 110 return newSubRun; | 124 return newSubRun; |
| 111 } | 125 } |
| 112 static const int kMinSubRuns = 1; | 126 static const int kMinSubRuns = 1; |
| 113 SkAutoTUnref<GrBatchTextStrike> fStrike; | |
| 114 SkAutoTUnref<SkTypeface> fTypeface; | 127 SkAutoTUnref<SkTypeface> fTypeface; |
| 115 SkRect fVertexBounds; | 128 SkRect fVertexBounds; |
| 116 SkSTArray<kMinSubRuns, SubRunInfo> fSubRunInfo; | 129 SkSTArray<kMinSubRuns, SubRunInfo> fSubRunInfo; |
| 117 SkAutoDescriptor fDescriptor; | 130 SkAutoDescriptor fDescriptor; |
| 118 SkAutoTDelete<SkAutoDescriptor> fOverrideDescriptor; // df properties | 131 SkAutoTDelete<SkAutoDescriptor> fOverrideDescriptor; // df properties |
| 119 GrColor fColor; | 132 GrColor fColor; |
| 120 bool fInitialized; | 133 bool fInitialized; |
| 121 bool fDrawAsPaths; | 134 bool fDrawAsPaths; |
| 122 }; | 135 }; |
| 123 | 136 |
| (...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 221 void setHasDistanceField() { fTextType |= kHasDistanceField_TextType; } | 234 void setHasDistanceField() { fTextType |= kHasDistanceField_TextType; } |
| 222 void setHasBitmap() { fTextType |= kHasBitmap_TextType; } | 235 void setHasBitmap() { fTextType |= kHasBitmap_TextType; } |
| 223 | 236 |
| 224 #ifdef CACHE_SANITY_CHECK | 237 #ifdef CACHE_SANITY_CHECK |
| 225 static void AssertEqual(const GrAtlasTextBlob&, const GrAtlasTextBlob&); | 238 static void AssertEqual(const GrAtlasTextBlob&, const GrAtlasTextBlob&); |
| 226 size_t fSize; | 239 size_t fSize; |
| 227 #endif | 240 #endif |
| 228 }; | 241 }; |
| 229 | 242 |
| 230 #endif | 243 #endif |
| OLD | NEW |