Loading graphics/java/android/graphics/RecordingCanvas.java +4 −3 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ package android.graphics; import android.annotation.ColorInt; import android.annotation.NonNull; import android.os.SystemProperties; import android.util.Pools.SynchronizedPool; Loading Loading @@ -227,11 +228,11 @@ public final class RecordingCanvas extends BaseRecordingCanvas { public void drawRipple(CanvasProperty<Float> cx, CanvasProperty<Float> cy, CanvasProperty<Float> radius, CanvasProperty<Paint> paint, CanvasProperty<Float> progress, CanvasProperty<Float> turbulencePhase, RuntimeShader shader) { @ColorInt int color, RuntimeShader shader) { nDrawRipple(mNativeCanvasWrapper, cx.getNativeContainer(), cy.getNativeContainer(), radius.getNativeContainer(), paint.getNativeContainer(), progress.getNativeContainer(), turbulencePhase.getNativeContainer(), shader.getNativeShaderBuilder()); color, shader.getNativeShaderBuilder()); } /** Loading Loading @@ -292,7 +293,7 @@ public final class RecordingCanvas extends BaseRecordingCanvas { long propCy, long propRadius, long propPaint); @CriticalNative private static native void nDrawRipple(long renderer, long propCx, long propCy, long propRadius, long propPaint, long propProgress, long turbulencePhase, long runtimeEffect); long propPaint, long propProgress, long turbulencePhase, int color, long runtimeEffect); @CriticalNative private static native void nDrawRoundRect(long renderer, long propLeft, long propTop, long propRight, long propBottom, long propRx, long propRy, long propPaint); Loading graphics/java/android/graphics/drawable/RippleAnimationSession.java +9 −1 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ package android.graphics.drawable; import android.animation.Animator; import android.animation.TimeInterpolator; import android.animation.ValueAnimator; import android.annotation.ColorInt; import android.annotation.NonNull; import android.annotation.Nullable; import android.graphics.Canvas; Loading Loading @@ -211,6 +212,7 @@ public final class RippleAnimationSession { CanvasProperty.createFloat(mProperties.getNoisePhase()), CanvasProperty.createPaint(mProperties.getPaint()), CanvasProperty.createFloat(mProperties.getProgress()), mProperties.getColor(), mProperties.getShader()); } return mCanvasProperties; Loading Loading @@ -250,11 +252,12 @@ public final class RippleAnimationSession { private final FloatType mNoisePhase; private final PaintType mPaint; private final RippleShader mShader; private final @ColorInt int mColor; private FloatType mX; private FloatType mY; AnimationProperties(FloatType x, FloatType y, FloatType maxRadius, FloatType noisePhase, PaintType paint, FloatType progress, RippleShader shader) { PaintType paint, FloatType progress, @ColorInt int color, RippleShader shader) { mY = y; mX = x; mMaxRadius = maxRadius; Loading @@ -262,6 +265,7 @@ public final class RippleAnimationSession { mPaint = paint; mShader = shader; mProgress = progress; mColor = color; } FloatType getProgress() { Loading Loading @@ -296,5 +300,9 @@ public final class RippleAnimationSession { FloatType getNoisePhase() { return mNoisePhase; } @ColorInt int getColor() { return mColor; } } } graphics/java/android/graphics/drawable/RippleDrawable.java +2 −2 Original line number Diff line number Diff line Loading @@ -901,7 +901,7 @@ public class RippleDrawable extends LayerDrawable { yProp = p.getY(); } can.drawRipple(xProp, yProp, p.getMaxRadius(), p.getPaint(), p.getProgress(), p.getNoisePhase(), p.getShader()); p.getProgress(), p.getNoisePhase(), p.getColor(), p.getShader()); } else { RippleAnimationSession.AnimationProperties<Float, Paint> p = s.getProperties(); Loading Loading @@ -974,7 +974,7 @@ public class RippleDrawable extends LayerDrawable { shader.setRadius(radius); shader.setProgress(.0f); properties = new RippleAnimationSession.AnimationProperties<>( cx, cy, radius, 0f, p, 0f, shader); cx, cy, radius, 0f, p, 0f, color, shader); if (mMaskShader == null) { shader.setShader(null); } else { Loading libs/hwui/CanvasTransform.cpp +14 −3 Original line number Diff line number Diff line Loading @@ -31,7 +31,7 @@ namespace android::uirenderer { static SkColor makeLight(SkColor color) { SkColor makeLight(SkColor color) { Lab lab = sRGBToLab(color); float invertedL = std::min(110 - lab.L, 100.0f); if (invertedL > lab.L) { Loading @@ -42,7 +42,7 @@ static SkColor makeLight(SkColor color) { } } static SkColor makeDark(SkColor color) { SkColor makeDark(SkColor color) { Lab lab = sRGBToLab(color); float invertedL = std::min(110 - lab.L, 100.0f); if (invertedL < lab.L) { Loading @@ -53,7 +53,7 @@ static SkColor makeDark(SkColor color) { } } static SkColor transformColor(ColorTransform transform, SkColor color) { SkColor transformColor(ColorTransform transform, SkColor color) { switch (transform) { case ColorTransform::Light: return makeLight(color); Loading @@ -64,6 +64,17 @@ static SkColor transformColor(ColorTransform transform, SkColor color) { } } SkColor transformColorInverse(ColorTransform transform, SkColor color) { switch (transform) { case ColorTransform::Dark: return makeLight(color); case ColorTransform::Light: return makeDark(color); default: return color; } } static void applyColorTransform(ColorTransform transform, SkPaint& paint) { if (transform == ColorTransform::None) return; Loading libs/hwui/CanvasTransform.h +3 −0 Original line number Diff line number Diff line Loading @@ -42,4 +42,7 @@ bool transformPaint(ColorTransform transform, SkPaint* paint); bool transformPaint(ColorTransform transform, SkPaint* paint, BitmapPalette palette); SkColor transformColor(ColorTransform transform, SkColor color); SkColor transformColorInverse(ColorTransform transform, SkColor color); } // namespace android::uirenderer; No newline at end of file Loading
graphics/java/android/graphics/RecordingCanvas.java +4 −3 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ package android.graphics; import android.annotation.ColorInt; import android.annotation.NonNull; import android.os.SystemProperties; import android.util.Pools.SynchronizedPool; Loading Loading @@ -227,11 +228,11 @@ public final class RecordingCanvas extends BaseRecordingCanvas { public void drawRipple(CanvasProperty<Float> cx, CanvasProperty<Float> cy, CanvasProperty<Float> radius, CanvasProperty<Paint> paint, CanvasProperty<Float> progress, CanvasProperty<Float> turbulencePhase, RuntimeShader shader) { @ColorInt int color, RuntimeShader shader) { nDrawRipple(mNativeCanvasWrapper, cx.getNativeContainer(), cy.getNativeContainer(), radius.getNativeContainer(), paint.getNativeContainer(), progress.getNativeContainer(), turbulencePhase.getNativeContainer(), shader.getNativeShaderBuilder()); color, shader.getNativeShaderBuilder()); } /** Loading Loading @@ -292,7 +293,7 @@ public final class RecordingCanvas extends BaseRecordingCanvas { long propCy, long propRadius, long propPaint); @CriticalNative private static native void nDrawRipple(long renderer, long propCx, long propCy, long propRadius, long propPaint, long propProgress, long turbulencePhase, long runtimeEffect); long propPaint, long propProgress, long turbulencePhase, int color, long runtimeEffect); @CriticalNative private static native void nDrawRoundRect(long renderer, long propLeft, long propTop, long propRight, long propBottom, long propRx, long propRy, long propPaint); Loading
graphics/java/android/graphics/drawable/RippleAnimationSession.java +9 −1 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ package android.graphics.drawable; import android.animation.Animator; import android.animation.TimeInterpolator; import android.animation.ValueAnimator; import android.annotation.ColorInt; import android.annotation.NonNull; import android.annotation.Nullable; import android.graphics.Canvas; Loading Loading @@ -211,6 +212,7 @@ public final class RippleAnimationSession { CanvasProperty.createFloat(mProperties.getNoisePhase()), CanvasProperty.createPaint(mProperties.getPaint()), CanvasProperty.createFloat(mProperties.getProgress()), mProperties.getColor(), mProperties.getShader()); } return mCanvasProperties; Loading Loading @@ -250,11 +252,12 @@ public final class RippleAnimationSession { private final FloatType mNoisePhase; private final PaintType mPaint; private final RippleShader mShader; private final @ColorInt int mColor; private FloatType mX; private FloatType mY; AnimationProperties(FloatType x, FloatType y, FloatType maxRadius, FloatType noisePhase, PaintType paint, FloatType progress, RippleShader shader) { PaintType paint, FloatType progress, @ColorInt int color, RippleShader shader) { mY = y; mX = x; mMaxRadius = maxRadius; Loading @@ -262,6 +265,7 @@ public final class RippleAnimationSession { mPaint = paint; mShader = shader; mProgress = progress; mColor = color; } FloatType getProgress() { Loading Loading @@ -296,5 +300,9 @@ public final class RippleAnimationSession { FloatType getNoisePhase() { return mNoisePhase; } @ColorInt int getColor() { return mColor; } } }
graphics/java/android/graphics/drawable/RippleDrawable.java +2 −2 Original line number Diff line number Diff line Loading @@ -901,7 +901,7 @@ public class RippleDrawable extends LayerDrawable { yProp = p.getY(); } can.drawRipple(xProp, yProp, p.getMaxRadius(), p.getPaint(), p.getProgress(), p.getNoisePhase(), p.getShader()); p.getProgress(), p.getNoisePhase(), p.getColor(), p.getShader()); } else { RippleAnimationSession.AnimationProperties<Float, Paint> p = s.getProperties(); Loading Loading @@ -974,7 +974,7 @@ public class RippleDrawable extends LayerDrawable { shader.setRadius(radius); shader.setProgress(.0f); properties = new RippleAnimationSession.AnimationProperties<>( cx, cy, radius, 0f, p, 0f, shader); cx, cy, radius, 0f, p, 0f, color, shader); if (mMaskShader == null) { shader.setShader(null); } else { Loading
libs/hwui/CanvasTransform.cpp +14 −3 Original line number Diff line number Diff line Loading @@ -31,7 +31,7 @@ namespace android::uirenderer { static SkColor makeLight(SkColor color) { SkColor makeLight(SkColor color) { Lab lab = sRGBToLab(color); float invertedL = std::min(110 - lab.L, 100.0f); if (invertedL > lab.L) { Loading @@ -42,7 +42,7 @@ static SkColor makeLight(SkColor color) { } } static SkColor makeDark(SkColor color) { SkColor makeDark(SkColor color) { Lab lab = sRGBToLab(color); float invertedL = std::min(110 - lab.L, 100.0f); if (invertedL < lab.L) { Loading @@ -53,7 +53,7 @@ static SkColor makeDark(SkColor color) { } } static SkColor transformColor(ColorTransform transform, SkColor color) { SkColor transformColor(ColorTransform transform, SkColor color) { switch (transform) { case ColorTransform::Light: return makeLight(color); Loading @@ -64,6 +64,17 @@ static SkColor transformColor(ColorTransform transform, SkColor color) { } } SkColor transformColorInverse(ColorTransform transform, SkColor color) { switch (transform) { case ColorTransform::Dark: return makeLight(color); case ColorTransform::Light: return makeDark(color); default: return color; } } static void applyColorTransform(ColorTransform transform, SkPaint& paint) { if (transform == ColorTransform::None) return; Loading
libs/hwui/CanvasTransform.h +3 −0 Original line number Diff line number Diff line Loading @@ -42,4 +42,7 @@ bool transformPaint(ColorTransform transform, SkPaint* paint); bool transformPaint(ColorTransform transform, SkPaint* paint, BitmapPalette palette); SkColor transformColor(ColorTransform transform, SkColor color); SkColor transformColorInverse(ColorTransform transform, SkColor color); } // namespace android::uirenderer; No newline at end of file