| 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 #include "GrAtlasTextBatch.h" | 8 #include "GrAtlasTextBatch.h" |
| 9 | 9 |
| 10 #include "GrBatchFlushState.h" | 10 #include "GrBatchFlushState.h" |
| (...skipping 16 matching lines...) Expand all Loading... |
| 27 | 27 |
| 28 static const int kDistanceAdjustLumShift = 5; | 28 static const int kDistanceAdjustLumShift = 5; |
| 29 | 29 |
| 30 SkString GrAtlasTextBatch::dumpInfo() const { | 30 SkString GrAtlasTextBatch::dumpInfo() const { |
| 31 SkString str; | 31 SkString str; |
| 32 | 32 |
| 33 for (int i = 0; i < fGeoCount; ++i) { | 33 for (int i = 0; i < fGeoCount; ++i) { |
| 34 str.appendf("%d: Color: 0x%08x Trans: %.2f,%.2f Runs: %d\n", | 34 str.appendf("%d: Color: 0x%08x Trans: %.2f,%.2f Runs: %d\n", |
| 35 i, | 35 i, |
| 36 fGeoData[i].fColor, | 36 fGeoData[i].fColor, |
| 37 fGeoData[i].fTransX, | 37 fGeoData[i].fX, |
| 38 fGeoData[i].fTransY, | 38 fGeoData[i].fY, |
| 39 fGeoData[i].fBlob->runCount()); | 39 fGeoData[i].fBlob->runCount()); |
| 40 } | 40 } |
| 41 | 41 |
| 42 str.append(INHERITED::dumpInfo()); | 42 str.append(INHERITED::dumpInfo()); |
| 43 return str; | 43 return str; |
| 44 } | 44 } |
| 45 | 45 |
| 46 void GrAtlasTextBatch::computePipelineOptimizations(GrInitInvariantOutput* color
, | 46 void GrAtlasTextBatch::computePipelineOptimizations(GrInitInvariantOutput* color
, |
| 47 GrInitInvariantOutput* cover
age, | 47 GrInitInvariantOutput* cover
age, |
| 48 GrBatchToXPOverrides* overri
des) const { | 48 GrBatchToXPOverrides* overri
des) const { |
| (...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 141 GrFontScaler* scaler = nullptr; | 141 GrFontScaler* scaler = nullptr; |
| 142 SkTypeface* typeface = nullptr; | 142 SkTypeface* typeface = nullptr; |
| 143 | 143 |
| 144 GrBlobRegenHelper helper(this, target, &flushInfo, gp); | 144 GrBlobRegenHelper helper(this, target, &flushInfo, gp); |
| 145 | 145 |
| 146 for (int i = 0; i < fGeoCount; i++) { | 146 for (int i = 0; i < fGeoCount; i++) { |
| 147 const Geometry& args = fGeoData[i]; | 147 const Geometry& args = fGeoData[i]; |
| 148 Blob* blob = args.fBlob; | 148 Blob* blob = args.fBlob; |
| 149 size_t byteCount; | 149 size_t byteCount; |
| 150 void* blobVertices; | 150 void* blobVertices; |
| 151 int glyphCount; | 151 int subRunGlyphCount; |
| 152 blob->regenInBatch(target, fFontCache, &helper, args.fRun, args.fSubRun,
&cache, | 152 blob->regenInBatch(target, fFontCache, &helper, args.fRun, args.fSubRun,
&cache, |
| 153 &typeface, &scaler, &desc, vertexStride, args.fColor,
args.fTransX, | 153 &typeface, &scaler, &desc, vertexStride, args.fViewMa
trix, args.fX, |
| 154 args.fTransY, &blobVertices, &byteCount, &glyphCount)
; | 154 args.fY, args.fColor, &blobVertices, &byteCount, &sub
RunGlyphCount); |
| 155 | 155 |
| 156 // now copy all vertices | 156 // now copy all vertices |
| 157 memcpy(currVertex, blobVertices, byteCount); | 157 memcpy(currVertex, blobVertices, byteCount); |
| 158 | 158 |
| 159 #ifdef SK_DEBUG | 159 #ifdef SK_DEBUG |
| 160 // bounds sanity check | 160 // bounds sanity check |
| 161 SkRect rect; | 161 SkRect rect; |
| 162 rect.setLargestInverted(); | 162 rect.setLargestInverted(); |
| 163 SkPoint* vertex = (SkPoint*) ((char*)blobVertices); | 163 SkPoint* vertex = (SkPoint*) ((char*)blobVertices); |
| 164 rect.growToInclude(vertex, vertexStride, kVerticesPerGlyph * glyphCount)
; | 164 rect.growToInclude(vertex, vertexStride, kVerticesPerGlyph * subRunGlyph
Count); |
| 165 | 165 |
| 166 if (this->usesDistanceFields()) { | 166 if (this->usesDistanceFields()) { |
| 167 fBatch.fViewMatrix.mapRect(&rect); | 167 args.fViewMatrix.mapRect(&rect); |
| 168 } | 168 } |
| 169 SkASSERT(fBounds.contains(rect)); | 169 SkASSERT(fBounds.contains(rect)); |
| 170 #endif | 170 #endif |
| 171 | 171 |
| 172 currVertex += byteCount; | 172 currVertex += byteCount; |
| 173 } | 173 } |
| 174 | 174 |
| 175 // Make sure to attach the last cache if applicable | 175 // Make sure to attach the last cache if applicable |
| 176 if (cache) { | 176 if (cache) { |
| 177 SkGlyphCache::AttachCache(cache); | 177 SkGlyphCache::AttachCache(cache); |
| (...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 308 this->usesLocalCoords()); | 308 this->usesLocalCoords()); |
| 309 #endif | 309 #endif |
| 310 } | 310 } |
| 311 | 311 |
| 312 } | 312 } |
| 313 | 313 |
| 314 void GrBlobRegenHelper::flush() { | 314 void GrBlobRegenHelper::flush() { |
| 315 fBatch->flush(fTarget, fFlushInfo); | 315 fBatch->flush(fTarget, fFlushInfo); |
| 316 fTarget->initDraw(fGP, fBatch->pipeline()); | 316 fTarget->initDraw(fGP, fBatch->pipeline()); |
| 317 } | 317 } |
| OLD | NEW |