Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 449bb119 authored by Chet Haase's avatar Chet Haase Committed by Android (Google) Code Review
Browse files

Merge "Add invalidation to Drawable when its properties change"

parents 088f50cc 9891e1fc
Loading
Loading
Loading
Loading
+0 −1
Original line number Diff line number Diff line
@@ -8637,7 +8637,6 @@ public class View implements Drawable.Callback, KeyEvent.Callback, Accessibility
    public void setBackgroundColor(int color) {
        if (mBGDrawable instanceof ColorDrawable) {
            ((ColorDrawable) mBGDrawable).setColor(color);
            invalidate();
        } else {
            setBackgroundDrawable(new ColorDrawable(color));
        }
+26 −14
Original line number Diff line number Diff line
@@ -174,12 +174,15 @@ public class BitmapDrawable extends Drawable {
    }
    
    private void setBitmap(Bitmap bitmap) {
        if (bitmap != mBitmap) {
            mBitmap = bitmap;
            if (bitmap != null) {
                computeBitmapSize();
            } else {
                mBitmapWidth = mBitmapHeight = -1;
            }
            invalidateSelf();
        }
    }

    /**
@@ -205,10 +208,7 @@ public class BitmapDrawable extends Drawable {
     * @see android.graphics.Bitmap#getDensity()
     */
    public void setTargetDensity(DisplayMetrics metrics) {
        mTargetDensity = metrics.densityDpi;
        if (mBitmap != null) {
            computeBitmapSize();
        }
        setTargetDensity(metrics.densityDpi);
    }

    /**
@@ -220,10 +220,13 @@ public class BitmapDrawable extends Drawable {
     * @see android.graphics.Bitmap#getDensity()
     */
    public void setTargetDensity(int density) {
        if (mTargetDensity != density) {
            mTargetDensity = density == 0 ? DisplayMetrics.DENSITY_DEFAULT : density;
            if (mBitmap != null) {
                computeBitmapSize();
            }
            invalidateSelf();
        }
    }

    /** Get the gravity used to position/stretch the bitmap within its bounds.
@@ -239,22 +242,28 @@ public class BitmapDrawable extends Drawable {
     * @param gravity the gravity
     */
    public void setGravity(int gravity) {
        if (mBitmapState.mGravity != gravity) {
            mBitmapState.mGravity = gravity;
            mApplyGravity = true;
            invalidateSelf();
        }
    }

    public void setAntiAlias(boolean aa) {
        mBitmapState.mPaint.setAntiAlias(aa);
        invalidateSelf();
    }
    
    @Override
    public void setFilterBitmap(boolean filter) {
        mBitmapState.mPaint.setFilterBitmap(filter);
        invalidateSelf();
    }

    @Override
    public void setDither(boolean dither) {
        mBitmapState.mPaint.setDither(dither);
        invalidateSelf();
    }

    public Shader.TileMode getTileModeX() {
@@ -280,6 +289,7 @@ public class BitmapDrawable extends Drawable {
            state.mTileModeX = xmode;
            state.mTileModeY = ymode;
            mRebuildShader = true;
            invalidateSelf();
        }
    }

@@ -336,11 +346,13 @@ public class BitmapDrawable extends Drawable {
    @Override
    public void setAlpha(int alpha) {
        mBitmapState.mPaint.setAlpha(alpha);
        invalidateSelf();
    }

    @Override
    public void setColorFilter(ColorFilter cf) {
        mBitmapState.mPaint.setColorFilter(cf);
        invalidateSelf();
    }

    /**
+5 −1
Original line number Diff line number Diff line
@@ -87,8 +87,11 @@ public class ColorDrawable extends Drawable {
     * @param color The color to draw.
     */
    public void setColor(int color) {
        if (mState.mBaseColor != color || mState.mUseColor != color) {
            invalidateSelf();
            mState.mBaseColor = mState.mUseColor = color;
        }
    }

    /**
     * Returns the alpha value of this drawable's color.
@@ -109,6 +112,7 @@ public class ColorDrawable extends Drawable {
        int baseAlpha = mState.mBaseColor >>> 24;
        int useAlpha = baseAlpha * alpha >> 8;
        mState.mUseColor = (mState.mBaseColor << 8 >>> 8) | (useAlpha << 24);
        invalidateSelf();
    }

    /**
+4 −1
Original line number Diff line number Diff line
@@ -488,7 +488,10 @@ public abstract class Drawable {
     */
    public boolean setVisible(boolean visible, boolean restart) {
        boolean changed = mVisible != visible;
        if (changed) {
            mVisible = visible;
            invalidateSelf();
        }
        return changed;
    }

+22 −3
Original line number Diff line number Diff line
@@ -180,6 +180,7 @@ public class GradientDrawable extends Drawable {
    public void setCornerRadii(float[] radii) {
        mGradientState.setCornerRadii(radii);
        mPathIsDirty = true;
        invalidateSelf();
    }
    
    /**
@@ -189,6 +190,7 @@ public class GradientDrawable extends Drawable {
    public void setCornerRadius(float radius) {
        mGradientState.setCornerRadius(radius);
        mPathIsDirty = true;
        invalidateSelf();
    }
    
    /**
@@ -214,34 +216,41 @@ public class GradientDrawable extends Drawable {
            e = new DashPathEffect(new float[] { dashWidth, dashGap }, 0);
        }
        mStrokePaint.setPathEffect(e);
        invalidateSelf();
    }
    
    public void setSize(int width, int height) {
        mGradientState.setSize(width, height);
        mPathIsDirty = true;
        invalidateSelf();
    }
    
    public void setShape(int shape) {
        mRingPath = null;
        mPathIsDirty = true;
        mGradientState.setShape(shape);
        invalidateSelf();
    }

    public void setGradientType(int gradient) {
        mGradientState.setGradientType(gradient);
        mRectIsDirty = true;
        invalidateSelf();
    }

    public void setGradientCenter(float x, float y) {
        mGradientState.setGradientCenter(x, y);
        invalidateSelf();
    }

    public void setGradientRadius(float gradientRadius) {
        mGradientState.setGradientRadius(gradientRadius);
        invalidateSelf();
    }

    public void setUseLevel(boolean useLevel) {
        mGradientState.mUseLevel = useLevel;
        invalidateSelf();
    }
    
    private int modulateAlpha(int alpha) {
@@ -433,6 +442,7 @@ public class GradientDrawable extends Drawable {
    public void setColor(int argb) {
        mGradientState.setSolidColor(argb);
        mFillPaint.setColor(argb);
        invalidateSelf();
    }

    @Override
@@ -443,17 +453,26 @@ public class GradientDrawable extends Drawable {
    
    @Override
    public void setAlpha(int alpha) {
        if (alpha != mAlpha) {
            mAlpha = alpha;
            invalidateSelf();
        }
    }

    @Override
    public void setDither(boolean dither) {
        if (dither != mDither) {
            mDither = dither;
            invalidateSelf();
        }
    }

    @Override
    public void setColorFilter(ColorFilter cf) {
        if (cf != mColorFilter) {
            mColorFilter = cf;
            invalidateSelf();
        }
    }

    @Override
Loading