@@ -283,7 +283,10 @@ private class TextIgnoringDelegateCanvas : Canvas() {
283283
284284 @Deprecated(" Deprecated in Java" )
285285 override fun saveLayer (bounds : RectF ? , paint : Paint ? , saveFlags : Int ): Int {
286- return delegate.saveLayer(bounds, paint, saveFlags)
286+ val shader = removeBitmapShader(paint)
287+ val result = delegate.saveLayer(bounds, paint, saveFlags)
288+ shader.let { paint?.shader = it }
289+ return result
287290 }
288291
289292 override fun saveLayer (bounds : RectF ? , paint : Paint ? ): Int {
@@ -302,7 +305,10 @@ private class TextIgnoringDelegateCanvas : Canvas() {
302305 paint : Paint ? ,
303306 saveFlags : Int ,
304307 ): Int {
305- return delegate.saveLayer(left, top, right, bottom, paint, saveFlags)
308+ val shader = removeBitmapShader(paint)
309+ val result = delegate.saveLayer(left, top, right, bottom, paint, saveFlags)
310+ shader.let { paint?.shader = it }
311+ return result
306312 }
307313
308314 override fun saveLayer (left : Float , top : Float , right : Float , bottom : Float , paint : Paint ? ): Int {
@@ -691,7 +697,9 @@ private class TextIgnoringDelegateCanvas : Canvas() {
691697 }
692698
693699 override fun drawPaint (paint : Paint ) {
700+ val shader = removeBitmapShader(paint)
694701 delegate.drawPaint(paint)
702+ shader.let { paint.shader = it }
695703 }
696704
697705 @RequiresApi(Build .VERSION_CODES .S )
@@ -993,6 +1001,7 @@ private class TextIgnoringDelegateCanvas : Canvas() {
9931001 )
9941002 }
9951003
1004+ /* * Removes the bitmap shader from a paint, returning it so it can be restored later. */
9961005 private fun removeBitmapShader (paint : Paint ? ): BitmapShader ? {
9971006 return if (paint == null ) {
9981007 null
0 commit comments