Minor cleanup of GrStencilAndCoverTextContext
authorrobertphillips <robertphillips@google.com>
Tue, 19 Jul 2016 21:04:39 +0000 (14:04 -0700)
committerCommit bot <commit-bot@chromium.org>
Tue, 19 Jul 2016 21:04:39 +0000 (14:04 -0700)
Split out of https://codereview.chromium.org/2163483002/ (Use SkFont in GrStencilAndCoverTextContext)

GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2165673002

Review-Url: https://codereview.chromium.org/2165673002

src/gpu/text/GrStencilAndCoverTextContext.cpp
src/gpu/text/GrStencilAndCoverTextContext.h

index 632bdcdaf195b4affb6c7a5a0e95461386d05132..381aa302824c0897c2cd9764113ae1ab99e53044 100644 (file)
@@ -83,7 +83,7 @@ void GrStencilAndCoverTextContext::drawText(GrContext* context, GrDrawContext* d
         if (skPaint.getTextSize() > 0) {
             TextRun run(skPaint);
             run.setText(text, byteLength, x, y);
-            run.draw(context, dc, paint, clip, paint.getColor(), viewMatrix, props, 0, 0,
+            run.draw(context, dc, paint, clip, viewMatrix, props, 0, 0,
                      clipBounds, fFallbackTextContext, skPaint);
         }
         return;
@@ -117,7 +117,7 @@ void GrStencilAndCoverTextContext::drawPosText(GrContext* context, GrDrawContext
         if (skPaint.getTextSize() > 0) {
             TextRun run(skPaint);
             run.setPosText(text, byteLength, pos, scalarsPerPosition, offset);
-            run.draw(context, dc, paint, clip, paint.getColor(), viewMatrix, props, 0, 0,
+            run.draw(context, dc, paint, clip, viewMatrix, props, 0, 0,
                      clipBounds, fFallbackTextContext, skPaint);
         }
         return;
@@ -226,7 +226,9 @@ void GrStencilAndCoverTextContext::drawTextBlob(GrContext* context, GrDrawContex
 
     TextBlob::Iter iter(blob);
     for (TextRun* run = iter.get(); run; run = iter.next()) {
-        run->draw(context, dc, paint, clip, paint.getColor(), viewMatrix, props,  x, y,
+        // The run's "font" overrides the anti-aliasing of the passed in paint!
+        paint.setAntiAlias(run->isAntiAlias());
+        run->draw(context, dc, paint, clip, viewMatrix, props,  x, y,
                   clipBounds, fFallbackTextContext, skPaint);
         run->releaseGlyphCache();
     }
@@ -362,12 +364,12 @@ private:
 ////////////////////////////////////////////////////////////////////////////////////////////////////
 
 GrStencilAndCoverTextContext::TextRun::TextRun(const SkPaint& fontAndStroke)
-    : fStyle(fontAndStroke),
-      fFont(fontAndStroke),
-      fTotalGlyphCount(0),
-      fFallbackGlyphCount(0),
-      fDetachedGlyphCache(nullptr),
-      fLastDrawnGlyphsID(SK_InvalidUniqueID) {
+    : fStyle(fontAndStroke)
+    , fFont(fontAndStroke)
+    , fTotalGlyphCount(0)
+    , fFallbackGlyphCount(0)
+    , fDetachedGlyphCache(nullptr)
+    , fLastDrawnGlyphsID(SK_InvalidUniqueID) {
     SkASSERT(fFont.getTextSize() > 0);
     SkASSERT(!fStyle.hasNonDashPathEffect()); // Arbitrary path effects not supported.
     SkASSERT(!fStyle.isSimpleHairline()); // Hairlines are not supported.
@@ -599,7 +601,6 @@ void GrStencilAndCoverTextContext::TextRun::draw(GrContext* ctx,
                                                  GrDrawContext* drawContext,
                                                  const GrPaint& grPaint,
                                                  const GrClip& clip,
-                                                 GrColor color,
                                                  const SkMatrix& viewMatrix,
                                                  const SkSurfaceProps& props,
                                                  SkScalar x, SkScalar y,
@@ -607,7 +608,7 @@ void GrStencilAndCoverTextContext::TextRun::draw(GrContext* ctx,
                                                  GrAtlasTextContext* fallbackTextContext,
                                                  const SkPaint& originalSkPaint) const {
     SkASSERT(fInstanceData);
-    SkASSERT(drawContext->isStencilBufferMultisampled() || !fFont.isAntiAlias());
+    SkASSERT(drawContext->isStencilBufferMultisampled() || !grPaint.isAntiAlias());
 
     if (fInstanceData->count()) {
         static constexpr GrUserStencilSettings kCoverPass(
@@ -636,12 +637,12 @@ void GrStencilAndCoverTextContext::TextRun::draw(GrContext* ctx,
 
         SkAutoTUnref<GrDrawBatch> batch(
             GrDrawPathRangeBatch::Create(viewMatrix, fTextRatio, fTextInverseRatio * x,
-                                         fTextInverseRatio * y, color,
+                                         fTextInverseRatio * y, grPaint.getColor(),
                                          GrPathRendering::kWinding_FillType, glyphs, fInstanceData,
                                          bounds));
 
         GrPipelineBuilder pipelineBuilder(grPaint);
-        pipelineBuilder.setState(GrPipelineBuilder::kHWAntialias_Flag, fFont.isAntiAlias());
+        pipelineBuilder.setState(GrPipelineBuilder::kHWAntialias_Flag, grPaint.isAntiAlias());
         pipelineBuilder.setUserStencil(&kCoverPass);
 
         drawContext->drawBatch(pipelineBuilder, clip, batch);
index d81cb7a00e6c664ee4fb43ed866cc209b64f6587..9b29719cb7629c60e34bab8bd47601b5f0d41d8b 100644 (file)
@@ -78,7 +78,7 @@ private:
         void setPosText(const char text[], size_t byteLength, const SkScalar pos[],
                         int scalarsPerPosition, const SkPoint& offset);
 
-        void draw(GrContext*, GrDrawContext*, const GrPaint&, const GrClip&, GrColor,
+        void draw(GrContext*, GrDrawContext*, const GrPaint&, const GrClip&,
                   const SkMatrix&, const SkSurfaceProps&,
                   SkScalar x, SkScalar y, const SkIRect& clipBounds,
                   GrAtlasTextContext* fallbackTextContext, const SkPaint& originalSkPaint) const;
@@ -87,6 +87,8 @@ private:
 
         size_t computeSizeInCache() const;
 
+        bool isAntiAlias() const { return fFont.isAntiAlias(); }
+
     private:
         typedef GrDrawPathRangeBatch::InstanceData InstanceData;