diff options
Diffstat (limited to 'libs/hwui/DisplayListOp.h')
-rw-r--r-- | libs/hwui/DisplayListOp.h | 51 |
1 files changed, 28 insertions, 23 deletions
diff --git a/libs/hwui/DisplayListOp.h b/libs/hwui/DisplayListOp.h index 4f2db69..a5dee9f 100644 --- a/libs/hwui/DisplayListOp.h +++ b/libs/hwui/DisplayListOp.h @@ -117,7 +117,7 @@ public: applyState(replayStruct.mRenderer, saveCount); } - virtual void applyState(OpenGLRenderer& renderer, int saveCount) = 0; + virtual void applyState(OpenGLRenderer& renderer, int saveCount) const = 0; }; class DrawOp : public DisplayListOp { @@ -165,7 +165,11 @@ public: return DeferredDisplayList::kOpBatch_None; } - float strokeWidthOutset() { return mPaint->getStrokeWidth() * 0.5f; } + float strokeWidthOutset() { + float width = mPaint->getStrokeWidth(); + if (width == 0) return 0.5f; // account for hairline + return width * 0.5f; + } protected: SkPaint* getPaint(OpenGLRenderer& renderer) { @@ -223,7 +227,7 @@ public: deferStruct.mDeferredList.addSave(deferStruct.mRenderer, this, newSaveCount); } - virtual void applyState(OpenGLRenderer& renderer, int saveCount) { + virtual void applyState(OpenGLRenderer& renderer, int saveCount) const { renderer.save(mFlags); } @@ -251,11 +255,12 @@ public: : mCount(count) {} virtual void defer(DeferStateStruct& deferStruct, int saveCount, int level) { - deferStruct.mDeferredList.addRestoreToCount(deferStruct.mRenderer, saveCount + mCount); + deferStruct.mDeferredList.addRestoreToCount(deferStruct.mRenderer, + this, saveCount + mCount); deferStruct.mRenderer.restoreToCount(saveCount + mCount); } - virtual void applyState(OpenGLRenderer& renderer, int saveCount) { + virtual void applyState(OpenGLRenderer& renderer, int saveCount) const { renderer.restoreToCount(saveCount + mCount); } @@ -293,7 +298,7 @@ public: mAlpha, mMode, mFlags); } - virtual void applyState(OpenGLRenderer& renderer, int saveCount) { + virtual void applyState(OpenGLRenderer& renderer, int saveCount) const { renderer.saveLayer(mArea.left, mArea.top, mArea.right, mArea.bottom, mAlpha, mMode, mFlags); } @@ -330,7 +335,7 @@ public: TranslateOp(float dx, float dy) : mDx(dx), mDy(dy) {} - virtual void applyState(OpenGLRenderer& renderer, int saveCount) { + virtual void applyState(OpenGLRenderer& renderer, int saveCount) const { renderer.translate(mDx, mDy); } @@ -350,7 +355,7 @@ public: RotateOp(float degrees) : mDegrees(degrees) {} - virtual void applyState(OpenGLRenderer& renderer, int saveCount) { + virtual void applyState(OpenGLRenderer& renderer, int saveCount) const { renderer.rotate(mDegrees); } @@ -369,7 +374,7 @@ public: ScaleOp(float sx, float sy) : mSx(sx), mSy(sy) {} - virtual void applyState(OpenGLRenderer& renderer, int saveCount) { + virtual void applyState(OpenGLRenderer& renderer, int saveCount) const { renderer.scale(mSx, mSy); } @@ -389,7 +394,7 @@ public: SkewOp(float sx, float sy) : mSx(sx), mSy(sy) {} - virtual void applyState(OpenGLRenderer& renderer, int saveCount) { + virtual void applyState(OpenGLRenderer& renderer, int saveCount) const { renderer.skew(mSx, mSy); } @@ -409,7 +414,7 @@ public: SetMatrixOp(SkMatrix* matrix) : mMatrix(matrix) {} - virtual void applyState(OpenGLRenderer& renderer, int saveCount) { + virtual void applyState(OpenGLRenderer& renderer, int saveCount) const { renderer.setMatrix(mMatrix); } @@ -428,7 +433,7 @@ public: ConcatMatrixOp(SkMatrix* matrix) : mMatrix(matrix) {} - virtual void applyState(OpenGLRenderer& renderer, int saveCount) { + virtual void applyState(OpenGLRenderer& renderer, int saveCount) const { renderer.concatMatrix(mMatrix); } @@ -471,7 +476,7 @@ public: ClipRectOp(float left, float top, float right, float bottom, SkRegion::Op op) : ClipOp(op), mArea(left, top, right, bottom) {} - virtual void applyState(OpenGLRenderer& renderer, int saveCount) { + virtual void applyState(OpenGLRenderer& renderer, int saveCount) const { renderer.clipRect(mArea.left, mArea.top, mArea.right, mArea.bottom, mOp); } @@ -500,7 +505,7 @@ public: ClipPathOp(SkPath* path, SkRegion::Op op) : ClipOp(op), mPath(path) {} - virtual void applyState(OpenGLRenderer& renderer, int saveCount) { + virtual void applyState(OpenGLRenderer& renderer, int saveCount) const { renderer.clipPath(mPath, mOp); } @@ -521,7 +526,7 @@ public: ClipRegionOp(SkRegion* region, SkRegion::Op op) : ClipOp(op), mRegion(region) {} - virtual void applyState(OpenGLRenderer& renderer, int saveCount) { + virtual void applyState(OpenGLRenderer& renderer, int saveCount) const { renderer.clipRegion(mRegion, mOp); } @@ -540,7 +545,7 @@ private: class ResetShaderOp : public StateOp { public: - virtual void applyState(OpenGLRenderer& renderer, int saveCount) { + virtual void applyState(OpenGLRenderer& renderer, int saveCount) const { renderer.resetShader(); } @@ -555,7 +560,7 @@ class SetupShaderOp : public StateOp { public: SetupShaderOp(SkiaShader* shader) : mShader(shader) {} - virtual void applyState(OpenGLRenderer& renderer, int saveCount) { + virtual void applyState(OpenGLRenderer& renderer, int saveCount) const { renderer.setupShader(mShader); } @@ -571,7 +576,7 @@ private: class ResetColorFilterOp : public StateOp { public: - virtual void applyState(OpenGLRenderer& renderer, int saveCount) { + virtual void applyState(OpenGLRenderer& renderer, int saveCount) const { renderer.resetColorFilter(); } @@ -587,7 +592,7 @@ public: SetupColorFilterOp(SkiaColorFilter* colorFilter) : mColorFilter(colorFilter) {} - virtual void applyState(OpenGLRenderer& renderer, int saveCount) { + virtual void applyState(OpenGLRenderer& renderer, int saveCount) const { renderer.setupColorFilter(mColorFilter); } @@ -603,7 +608,7 @@ private: class ResetShadowOp : public StateOp { public: - virtual void applyState(OpenGLRenderer& renderer, int saveCount) { + virtual void applyState(OpenGLRenderer& renderer, int saveCount) const { renderer.resetShadow(); } @@ -619,7 +624,7 @@ public: SetupShadowOp(float radius, float dx, float dy, int color) : mRadius(radius), mDx(dx), mDy(dy), mColor(color) {} - virtual void applyState(OpenGLRenderer& renderer, int saveCount) { + virtual void applyState(OpenGLRenderer& renderer, int saveCount) const { renderer.setupShadow(mRadius, mDx, mDy, mColor); } @@ -638,7 +643,7 @@ private: class ResetPaintFilterOp : public StateOp { public: - virtual void applyState(OpenGLRenderer& renderer, int saveCount) { + virtual void applyState(OpenGLRenderer& renderer, int saveCount) const { renderer.resetPaintFilter(); } @@ -654,7 +659,7 @@ public: SetupPaintFilterOp(int clearBits, int setBits) : mClearBits(clearBits), mSetBits(setBits) {} - virtual void applyState(OpenGLRenderer& renderer, int saveCount) { + virtual void applyState(OpenGLRenderer& renderer, int saveCount) const { renderer.setupPaintFilter(mClearBits, mSetBits); } |