diff options
author | 2016-02-11 12:42:02 -0800 | |
---|---|---|
committer | 2016-02-11 12:42:02 -0800 | |
commit | bc81111f246ce2d5fbb61d7a347c9d890f6c8359 (patch) | |
tree | a33726def6e6f99833b21ce3142b3e1bcde3d58b /src/gpu/batches | |
parent | 0eed945294fa0b2dee7d971c16dc9beefab2ec1c (diff) |
start to chip away at friending of GrAtlasTextBatch/GrAtlasTextBlob
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1684253002
Review URL: https://codereview.chromium.org/1684253002
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"; } |