Loading graphics/java/android/graphics/drawable/GradientDrawable.java +31 −86 Original line number Diff line number Diff line Loading @@ -637,7 +637,7 @@ public class GradientDrawable extends Drawable { * @see #setOrientation(Orientation) */ public Orientation getOrientation() { return mGradientState.getOrientation(); return mGradientState.mOrientation; } /** Loading @@ -653,7 +653,7 @@ public class GradientDrawable extends Drawable { * @see #getOrientation() */ public void setOrientation(Orientation orientation) { mGradientState.setOrientation(orientation); mGradientState.mOrientation = orientation; mGradientIsDirty = true; invalidateSelf(); } Loading Loading @@ -1270,7 +1270,7 @@ public class GradientDrawable extends Drawable { if (st.mGradient == LINEAR_GRADIENT) { final float level = st.mUseLevel ? getLevel() / 10000.0f : 1.0f; switch (st.getOrientation()) { switch (st.mOrientation) { case TOP_BOTTOM: x0 = r.left; y0 = r.top; x1 = x0; y1 = level * r.bottom; Loading Loading @@ -1759,6 +1759,33 @@ public class GradientDrawable extends Drawable { int angle = (int) a.getFloat(R.styleable.GradientDrawableGradient_angle, st.mAngle); st.mAngle = ((angle % 360) + 360) % 360; // offset negative angle measures switch (st.mAngle) { case 0: st.mOrientation = Orientation.LEFT_RIGHT; break; case 45: st.mOrientation = Orientation.BL_TR; break; case 90: st.mOrientation = Orientation.BOTTOM_TOP; break; case 135: st.mOrientation = Orientation.BR_TL; break; case 180: st.mOrientation = Orientation.RIGHT_LEFT; break; case 225: st.mOrientation = Orientation.TR_BL; break; case 270: st.mOrientation = Orientation.TOP_BOTTOM; break; case 315: st.mOrientation = Orientation.TL_BR; break; } final TypedValue tv = a.peekValue(R.styleable.GradientDrawableGradient_gradientRadius); if (tv != null) { final float radius; Loading Loading @@ -1981,7 +2008,7 @@ public class GradientDrawable extends Drawable { int[] mAttrPadding; public GradientState(Orientation orientation, int[] gradientColors) { setOrientation(orientation); mOrientation = orientation; setGradientColors(gradientColors); } Loading Loading @@ -2184,93 +2211,11 @@ public class GradientDrawable extends Drawable { mCenterY = y; } public void setOrientation(Orientation orientation) { // Update the angle here so that subsequent attempts to obtain the orientation // from the angle overwrite previously configured values during inflation mAngle = getAngleFromOrientation(orientation); mOrientation = orientation; } @NonNull public Orientation getOrientation() { updateGradientStateOrientation(); return mOrientation; } /** * Update the orientation of the gradient based on the given angle only if the type is * {@link #LINEAR_GRADIENT} */ private void updateGradientStateOrientation() { if (mGradient == LINEAR_GRADIENT) { int angle = mAngle; if (angle % 45 != 0) { throw new IllegalArgumentException("Linear gradient requires 'angle' attribute " + "to be a multiple of 45"); } Orientation orientation; switch (angle) { case 0: orientation = Orientation.LEFT_RIGHT; break; case 45: orientation = Orientation.BL_TR; break; case 90: orientation = Orientation.BOTTOM_TOP; break; case 135: orientation = Orientation.BR_TL; break; case 180: orientation = Orientation.RIGHT_LEFT; break; case 225: orientation = Orientation.TR_BL; break; case 270: orientation = Orientation.TOP_BOTTOM; break; case 315: orientation = Orientation.TL_BR; break; default: // Should not get here as exception is thrown above if angle is not multiple // of 45 degrees orientation = Orientation.LEFT_RIGHT; break; } mOrientation = orientation; } } private int getAngleFromOrientation(@Nullable Orientation orientation) { if (orientation != null) { switch (orientation) { default: case LEFT_RIGHT: return 0; case BL_TR: return 45; case BOTTOM_TOP: return 90; case BR_TL: return 135; case RIGHT_LEFT: return 180; case TR_BL: return 225; case TOP_BOTTOM: return 270; case TL_BR: return 315; } } else { return 0; } } public void setGradientColors(@Nullable int[] colors) { mGradientColors = colors; mSolidColors = null; Loading Loading
graphics/java/android/graphics/drawable/GradientDrawable.java +31 −86 Original line number Diff line number Diff line Loading @@ -637,7 +637,7 @@ public class GradientDrawable extends Drawable { * @see #setOrientation(Orientation) */ public Orientation getOrientation() { return mGradientState.getOrientation(); return mGradientState.mOrientation; } /** Loading @@ -653,7 +653,7 @@ public class GradientDrawable extends Drawable { * @see #getOrientation() */ public void setOrientation(Orientation orientation) { mGradientState.setOrientation(orientation); mGradientState.mOrientation = orientation; mGradientIsDirty = true; invalidateSelf(); } Loading Loading @@ -1270,7 +1270,7 @@ public class GradientDrawable extends Drawable { if (st.mGradient == LINEAR_GRADIENT) { final float level = st.mUseLevel ? getLevel() / 10000.0f : 1.0f; switch (st.getOrientation()) { switch (st.mOrientation) { case TOP_BOTTOM: x0 = r.left; y0 = r.top; x1 = x0; y1 = level * r.bottom; Loading Loading @@ -1759,6 +1759,33 @@ public class GradientDrawable extends Drawable { int angle = (int) a.getFloat(R.styleable.GradientDrawableGradient_angle, st.mAngle); st.mAngle = ((angle % 360) + 360) % 360; // offset negative angle measures switch (st.mAngle) { case 0: st.mOrientation = Orientation.LEFT_RIGHT; break; case 45: st.mOrientation = Orientation.BL_TR; break; case 90: st.mOrientation = Orientation.BOTTOM_TOP; break; case 135: st.mOrientation = Orientation.BR_TL; break; case 180: st.mOrientation = Orientation.RIGHT_LEFT; break; case 225: st.mOrientation = Orientation.TR_BL; break; case 270: st.mOrientation = Orientation.TOP_BOTTOM; break; case 315: st.mOrientation = Orientation.TL_BR; break; } final TypedValue tv = a.peekValue(R.styleable.GradientDrawableGradient_gradientRadius); if (tv != null) { final float radius; Loading Loading @@ -1981,7 +2008,7 @@ public class GradientDrawable extends Drawable { int[] mAttrPadding; public GradientState(Orientation orientation, int[] gradientColors) { setOrientation(orientation); mOrientation = orientation; setGradientColors(gradientColors); } Loading Loading @@ -2184,93 +2211,11 @@ public class GradientDrawable extends Drawable { mCenterY = y; } public void setOrientation(Orientation orientation) { // Update the angle here so that subsequent attempts to obtain the orientation // from the angle overwrite previously configured values during inflation mAngle = getAngleFromOrientation(orientation); mOrientation = orientation; } @NonNull public Orientation getOrientation() { updateGradientStateOrientation(); return mOrientation; } /** * Update the orientation of the gradient based on the given angle only if the type is * {@link #LINEAR_GRADIENT} */ private void updateGradientStateOrientation() { if (mGradient == LINEAR_GRADIENT) { int angle = mAngle; if (angle % 45 != 0) { throw new IllegalArgumentException("Linear gradient requires 'angle' attribute " + "to be a multiple of 45"); } Orientation orientation; switch (angle) { case 0: orientation = Orientation.LEFT_RIGHT; break; case 45: orientation = Orientation.BL_TR; break; case 90: orientation = Orientation.BOTTOM_TOP; break; case 135: orientation = Orientation.BR_TL; break; case 180: orientation = Orientation.RIGHT_LEFT; break; case 225: orientation = Orientation.TR_BL; break; case 270: orientation = Orientation.TOP_BOTTOM; break; case 315: orientation = Orientation.TL_BR; break; default: // Should not get here as exception is thrown above if angle is not multiple // of 45 degrees orientation = Orientation.LEFT_RIGHT; break; } mOrientation = orientation; } } private int getAngleFromOrientation(@Nullable Orientation orientation) { if (orientation != null) { switch (orientation) { default: case LEFT_RIGHT: return 0; case BL_TR: return 45; case BOTTOM_TOP: return 90; case BR_TL: return 135; case RIGHT_LEFT: return 180; case TR_BL: return 225; case TOP_BOTTOM: return 270; case TL_BR: return 315; } } else { return 0; } } public void setGradientColors(@Nullable int[] colors) { mGradientColors = colors; mSolidColors = null; Loading