diff options
| author | 2012-02-27 13:35:37 -0800 | |
|---|---|---|
| committer | 2012-02-27 13:35:37 -0800 | |
| commit | 3cd9c12db3c83ef08ff57c410e67a2ea296d3c0c (patch) | |
| tree | 37ee24b079c38ec2f416304050b9bc07d8d3a726 | |
| parent | f6b53db704ed449d9376b31ee5a5c97b2796f559 (diff) | |
| parent | 765dcf32307dbd93ce43f064c426ce157be2d2ae (diff) | |
Merge "Small optimization for the battery status screen"
| -rw-r--r-- | core/java/android/view/GLES20Canvas.java | 41 |
1 files changed, 33 insertions, 8 deletions
diff --git a/core/java/android/view/GLES20Canvas.java b/core/java/android/view/GLES20Canvas.java index 36582af67181..ee0fa86642e5 100644 --- a/core/java/android/view/GLES20Canvas.java +++ b/core/java/android/view/GLES20Canvas.java @@ -718,7 +718,7 @@ class GLES20Canvas extends HardwareCanvas { @Override public void drawArc(RectF oval, float startAngle, float sweepAngle, boolean useCenter, Paint paint) { - int modifiers = setupModifiers(paint); + int modifiers = setupModifiers(paint, MODIFIER_COLOR_FILTER | MODIFIER_SHADER); try { nDrawArc(mRenderer, oval.left, oval.top, oval.right, oval.bottom, startAngle, sweepAngle, useCenter, paint.mNativePaint); @@ -902,7 +902,7 @@ class GLES20Canvas extends HardwareCanvas { @Override public void drawCircle(float cx, float cy, float radius, Paint paint) { - int modifiers = setupModifiers(paint); + int modifiers = setupModifiers(paint, MODIFIER_COLOR_FILTER | MODIFIER_SHADER); try { nDrawCircle(mRenderer, cx, cy, radius, paint.mNativePaint); } finally { @@ -939,7 +939,7 @@ class GLES20Canvas extends HardwareCanvas { if ((offset | count) < 0 || offset + count > pts.length) { throw new IllegalArgumentException("The lines array must contain 4 elements per line."); } - int modifiers = setupModifiers(paint); + int modifiers = setupModifiers(paint, MODIFIER_COLOR_FILTER | MODIFIER_SHADER); try { nDrawLines(mRenderer, pts, offset, count, paint.mNativePaint); } finally { @@ -957,7 +957,7 @@ class GLES20Canvas extends HardwareCanvas { @Override public void drawOval(RectF oval, Paint paint) { - int modifiers = setupModifiers(paint); + int modifiers = setupModifiers(paint, MODIFIER_COLOR_FILTER | MODIFIER_SHADER); try { nDrawOval(mRenderer, oval.left, oval.top, oval.right, oval.bottom, paint.mNativePaint); } finally { @@ -977,7 +977,7 @@ class GLES20Canvas extends HardwareCanvas { @Override public void drawPath(Path path, Paint paint) { - int modifiers = setupModifiers(paint); + int modifiers = setupModifiers(paint, MODIFIER_COLOR_FILTER | MODIFIER_SHADER); try { if (path.isSimplePath) { if (path.rects != null) { @@ -1048,7 +1048,7 @@ class GLES20Canvas extends HardwareCanvas { @Override public void drawPoints(float[] pts, int offset, int count, Paint paint) { - int modifiers = setupModifiers(paint); + int modifiers = setupModifiers(paint, MODIFIER_COLOR_FILTER | MODIFIER_SHADER); try { nDrawPoints(mRenderer, pts, offset, count, paint.mNativePaint); } finally { @@ -1097,7 +1097,8 @@ class GLES20Canvas extends HardwareCanvas { @Override public void drawRect(float left, float top, float right, float bottom, Paint paint) { - int modifiers = setupModifiers(paint); + if (left == right || top == bottom) return; + int modifiers = setupModifiers(paint, MODIFIER_COLOR_FILTER | MODIFIER_SHADER); try { nDrawRect(mRenderer, left, top, right, bottom, paint.mNativePaint); } finally { @@ -1125,7 +1126,7 @@ class GLES20Canvas extends HardwareCanvas { @Override public void drawRoundRect(RectF rect, float rx, float ry, Paint paint) { - int modifiers = setupModifiers(paint); + int modifiers = setupModifiers(paint, MODIFIER_COLOR_FILTER | MODIFIER_SHADER); try { nDrawRoundRect(mRenderer, rect.left, rect.top, rect.right, rect.bottom, rx, ry, paint.mNativePaint); @@ -1341,6 +1342,30 @@ class GLES20Canvas extends HardwareCanvas { return modifiers; } + private int setupModifiers(Paint paint, int flags) { + int modifiers = MODIFIER_NONE; + + if (paint.hasShadow && (flags & MODIFIER_SHADOW) != 0) { + nSetupShadow(mRenderer, paint.shadowRadius, paint.shadowDx, paint.shadowDy, + paint.shadowColor); + modifiers |= MODIFIER_SHADOW; + } + + final Shader shader = paint.getShader(); + if (shader != null && (flags & MODIFIER_SHADER) != 0) { + nSetupShader(mRenderer, shader.native_shader); + modifiers |= MODIFIER_SHADER; + } + + final ColorFilter filter = paint.getColorFilter(); + if (filter != null && (flags & MODIFIER_COLOR_FILTER) != 0) { + nSetupColorFilter(mRenderer, filter.nativeColorFilter); + modifiers |= MODIFIER_COLOR_FILTER; + } + + return modifiers; + } + private int setupColorFilter(Paint paint) { final ColorFilter filter = paint.getColorFilter(); if (filter != null) { |