summaryrefslogtreecommitdiff
path: root/graphics/java/android
diff options
context:
space:
mode:
author Leon Scroggins III <scroggo@google.com> 2019-03-12 11:13:27 -0400
committer Leon Scroggins III <scroggo@google.com> 2019-03-14 10:59:37 -0400
commit10965f3922380581b7bf11dbc7b1bf4ef4ffdd2e (patch)
tree772cf4be8c9fad9c2d274cd38a40b1d8601d7d6a /graphics/java/android
parent03b3e236a058b878ec467918610df8f94e83301c (diff)
Convert ColorLong in native code in Paint
Bug: 127580253 Test: CtsGraphicsTestCases Perf: systrace Follow on to I0b42c17159b290868a6bed7b90da096995504c4d, which did this for other classes. I expect this to be more efficient due to passing fewer JNI parameters, which appears to be the case based on the systrace data for setColor(@ColorLong): Duration: (w/o this change) (w/ this change) avg: 0.010 ms 0.005 ms max: 9.130 ms 0.239 ms min: 0.002 ms 0.002 ms std: 0.052 ms 0.004 ms The average is twice as fast, the max is significantly shorter, and the standard deviation is much smaller as well. Change-Id: I241824bf2a934746df93da1063b14f3080486cb5
Diffstat (limited to 'graphics/java/android')
-rw-r--r--graphics/java/android/graphics/Paint.java19
1 files changed, 7 insertions, 12 deletions
diff --git a/graphics/java/android/graphics/Paint.java b/graphics/java/android/graphics/Paint.java
index 966e171a9c04..04385c628c35 100644
--- a/graphics/java/android/graphics/Paint.java
+++ b/graphics/java/android/graphics/Paint.java
@@ -1066,12 +1066,8 @@ public class Paint {
*/
public void setColor(@ColorLong long color) {
ColorSpace cs = Color.colorSpace(color);
- float r = Color.red(color);
- float g = Color.green(color);
- float b = Color.blue(color);
- float a = Color.alpha(color);
- nSetColor(mNativePaint, cs.getNativeInstance(), r, g, b, a);
+ nSetColor(mNativePaint, cs.getNativeInstance(), color);
mColor = color;
}
@@ -1501,11 +1497,7 @@ public class Paint {
*/
public void setShadowLayer(float radius, float dx, float dy, @ColorLong long shadowColor) {
ColorSpace cs = Color.colorSpace(shadowColor);
- float r = Color.red(shadowColor);
- float g = Color.green(shadowColor);
- float b = Color.blue(shadowColor);
- float a = Color.alpha(shadowColor);
- nSetShadowLayer(mNativePaint, radius, dx, dy, cs.getNativeInstance(), r, g, b, a);
+ nSetShadowLayer(mNativePaint, radius, dx, dy, cs.getNativeInstance(), shadowColor);
mShadowLayerRadius = radius;
mShadowLayerDx = dx;
@@ -1533,6 +1525,7 @@ public class Paint {
/**
* Returns the blur radius of the shadow layer.
* @see #setShadowLayer(float,float,float,int)
+ * @see #setShadowLayer(float,float,float,long)
*/
public float getShadowLayerRadius() {
return mShadowLayerRadius;
@@ -1541,6 +1534,7 @@ public class Paint {
/**
* Returns the x offset of the shadow layer.
* @see #setShadowLayer(float,float,float,int)
+ * @see #setShadowLayer(float,float,float,long)
*/
public float getShadowLayerDx() {
return mShadowLayerDx;
@@ -1549,6 +1543,7 @@ public class Paint {
/**
* Returns the y offset of the shadow layer.
* @see #setShadowLayer(float,float,float,int)
+ * @see #setShadowLayer(float,float,float,long)
*/
public float getShadowLayerDy() {
return mShadowLayerDy;
@@ -3138,7 +3133,7 @@ public class Paint {
@CriticalNative
private static native void nSetShadowLayer(long paintPtr,
float radius, float dx, float dy, long colorSpaceHandle,
- float r, float g, float b, float a);
+ @ColorLong long shadowColor);
@CriticalNative
private static native boolean nHasShadowLayer(long paintPtr);
@CriticalNative
@@ -3191,7 +3186,7 @@ public class Paint {
private static native void nSetFilterBitmap(long paintPtr, boolean filter);
@CriticalNative
private static native void nSetColor(long paintPtr, long colorSpaceHandle,
- float r, float g, float b, float a);
+ @ColorLong long color);
@CriticalNative
private static native void nSetColor(long paintPtr, @ColorInt int color);
@CriticalNative