diff options
Diffstat (limited to 'src/gpu/batches')
-rw-r--r-- | src/gpu/batches/GrAtlasTextBatch.cpp | 1 | ||||
-rw-r--r-- | src/gpu/batches/GrAtlasTextBatch.h | 36 |
2 files changed, 3 insertions, 34 deletions
diff --git a/src/gpu/batches/GrAtlasTextBatch.cpp b/src/gpu/batches/GrAtlasTextBatch.cpp index b2251a42a8..6a172df5a6 100644 --- a/src/gpu/batches/GrAtlasTextBatch.cpp +++ b/src/gpu/batches/GrAtlasTextBatch.cpp @@ -147,7 +147,6 @@ inline void GrAtlasTextBatch::regenBlob(Target* target, FlushInfo* flushInfo, Bl *desc = newDesc; *cache = SkGlyphCache::DetachCache(run->fTypeface, *desc); *scaler = GrTextContext::GetGrFontScaler(*cache); - strike = info->strike(); *typeface = run->fTypeface; } diff --git a/src/gpu/batches/GrAtlasTextBatch.h b/src/gpu/batches/GrAtlasTextBatch.h index f4008c9471..05d6afdb51 100644 --- a/src/gpu/batches/GrAtlasTextBatch.h +++ b/src/gpu/batches/GrAtlasTextBatch.h @@ -81,39 +81,9 @@ public: void init() { const Geometry& geo = fGeoData[0]; fBatch.fColor = geo.fColor; - fBatch.fViewMatrix = geo.fBlob->fViewMatrix; - - // We don't yet position distance field text on the cpu, so we have to map the vertex bounds - // into device space. - // We handle vertex bounds differently for distance field text and bitmap text because - // the vertex bounds of bitmap text are in device space. If we are flushing multiple runs - // from one blob then we are going to pay the price here of mapping the rect for each run. - const Run& run = geo.fBlob->fRuns[geo.fRun]; - SkRect bounds = run.fSubRunInfo[geo.fSubRun].vertexBounds(); - if (run.fSubRunInfo[geo.fSubRun].drawAsDistanceFields()) { - // Distance field text is positioned with the (X,Y) as part of the glyph position, - // and currently the view matrix is applied on the GPU - bounds.offset(geo.fBlob->fX - geo.fBlob->fInitialX, - geo.fBlob->fY - geo.fBlob->fInitialY); - fBatch.fViewMatrix.mapRect(&bounds); - this->setBounds(bounds); - } else { - // Bitmap text is fully positioned on the CPU, and offset by an (X,Y) translate in - // device space. - SkMatrix boundsMatrix = geo.fBlob->fInitialViewMatrixInverse; - - boundsMatrix.postTranslate(-geo.fBlob->fInitialX, -geo.fBlob->fInitialY); - - boundsMatrix.postTranslate(geo.fBlob->fX, geo.fBlob->fY); - - boundsMatrix.postConcat(geo.fBlob->fViewMatrix); - boundsMatrix.mapRect(&bounds); - - // Due to floating point numerical inaccuracies, we have to round out here - SkRect roundedOutBounds; - bounds.roundOut(&roundedOutBounds); - this->setBounds(roundedOutBounds); - } + fBatch.fViewMatrix = geo.fBlob->viewMatrix(); + + geo.fBlob->computeSubRunBounds(&fBounds, geo.fRun, geo.fSubRun); } const char* name() const override { return "TextBatch"; } |