diff options
author | Diego Perez <diegoperez@google.com> | 2015-05-07 00:21:24 +0000 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2015-05-07 00:21:24 +0000 |
commit | 52ef7fce1626868d6be34f4038cd852259ad6a26 (patch) | |
tree | 4015207ece8c13d1461cb48d0e8431b02481b8e3 /tools/layoutlib/bridge/src/android/graphics | |
parent | a131bfe094c007721d006fc9ca21cfa74f41dfef (diff) | |
parent | ffeb8117b139f61dd7c92bda6a7d47b83871cb66 (diff) | |
download | frameworks_base-52ef7fce1626868d6be34f4038cd852259ad6a26.zip frameworks_base-52ef7fce1626868d6be34f4038cd852259ad6a26.tar.gz frameworks_base-52ef7fce1626868d6be34f4038cd852259ad6a26.tar.bz2 |
am ffeb8117: am 9c13c8de: am bc47abe4: Merge "Make sure shaders use a color model compatible with the destination." into lmp-mr1-dev
* commit 'ffeb8117b139f61dd7c92bda6a7d47b83871cb66':
Make sure shaders use a color model compatible with the destination.
Diffstat (limited to 'tools/layoutlib/bridge/src/android/graphics')
4 files changed, 19 insertions, 8 deletions
diff --git a/tools/layoutlib/bridge/src/android/graphics/BitmapShader_Delegate.java b/tools/layoutlib/bridge/src/android/graphics/BitmapShader_Delegate.java index 610c867..e9b5d6e 100644 --- a/tools/layoutlib/bridge/src/android/graphics/BitmapShader_Delegate.java +++ b/tools/layoutlib/bridge/src/android/graphics/BitmapShader_Delegate.java @@ -23,6 +23,8 @@ import com.android.tools.layoutlib.annotations.LayoutlibDelegate; import android.graphics.Shader.TileMode; +import java.awt.image.ColorModel; + /** * Delegate implementing the native methods of android.graphics.BitmapShader * @@ -124,6 +126,11 @@ public class BitmapShader_Delegate extends Shader_Delegate { localMatrix = new java.awt.geom.AffineTransform(); } + if (!colorModel.isCompatibleRaster(mImage.getRaster())) { + // Fallback to the default ARGB color model + colorModel = ColorModel.getRGBdefault(); + } + return new BitmapShaderContext(canvasMatrix, localMatrix, colorModel); } @@ -153,8 +160,9 @@ public class BitmapShader_Delegate extends Shader_Delegate { @Override public java.awt.image.Raster getRaster(int x, int y, int w, int h) { - java.awt.image.BufferedImage image = new java.awt.image.BufferedImage(w, h, - java.awt.image.BufferedImage.TYPE_INT_ARGB); + java.awt.image.BufferedImage image = new java.awt.image.BufferedImage( + mColorModel, mColorModel.createCompatibleWritableRaster(w, h), + mColorModel.isAlphaPremultiplied(), null); int[] data = new int[w*h]; diff --git a/tools/layoutlib/bridge/src/android/graphics/LinearGradient_Delegate.java b/tools/layoutlib/bridge/src/android/graphics/LinearGradient_Delegate.java index 55c4b98..703719c 100644 --- a/tools/layoutlib/bridge/src/android/graphics/LinearGradient_Delegate.java +++ b/tools/layoutlib/bridge/src/android/graphics/LinearGradient_Delegate.java @@ -172,8 +172,9 @@ public final class LinearGradient_Delegate extends Gradient_Delegate { @Override public java.awt.image.Raster getRaster(int x, int y, int w, int h) { - java.awt.image.BufferedImage image = new java.awt.image.BufferedImage(w, h, - java.awt.image.BufferedImage.TYPE_INT_ARGB); + java.awt.image.BufferedImage image = new java.awt.image.BufferedImage( + mColorModel, mColorModel.createCompatibleWritableRaster(w, h), + mColorModel.isAlphaPremultiplied(), null); int[] data = new int[w*h]; diff --git a/tools/layoutlib/bridge/src/android/graphics/RadialGradient_Delegate.java b/tools/layoutlib/bridge/src/android/graphics/RadialGradient_Delegate.java index eb29835..04e423b 100644 --- a/tools/layoutlib/bridge/src/android/graphics/RadialGradient_Delegate.java +++ b/tools/layoutlib/bridge/src/android/graphics/RadialGradient_Delegate.java @@ -160,8 +160,9 @@ public class RadialGradient_Delegate extends Gradient_Delegate { @Override public java.awt.image.Raster getRaster(int x, int y, int w, int h) { - java.awt.image.BufferedImage image = new java.awt.image.BufferedImage(w, h, - java.awt.image.BufferedImage.TYPE_INT_ARGB); + java.awt.image.BufferedImage image = new java.awt.image.BufferedImage( + mColorModel, mColorModel.createCompatibleWritableRaster(w, h), + mColorModel.isAlphaPremultiplied(), null); int[] data = new int[w*h]; diff --git a/tools/layoutlib/bridge/src/android/graphics/SweepGradient_Delegate.java b/tools/layoutlib/bridge/src/android/graphics/SweepGradient_Delegate.java index 95a57a9..544ba98 100644 --- a/tools/layoutlib/bridge/src/android/graphics/SweepGradient_Delegate.java +++ b/tools/layoutlib/bridge/src/android/graphics/SweepGradient_Delegate.java @@ -152,8 +152,9 @@ public class SweepGradient_Delegate extends Gradient_Delegate { @Override public java.awt.image.Raster getRaster(int x, int y, int w, int h) { - java.awt.image.BufferedImage image = new java.awt.image.BufferedImage(w, h, - java.awt.image.BufferedImage.TYPE_INT_ARGB); + java.awt.image.BufferedImage image = new java.awt.image.BufferedImage( + mColorModel, mColorModel.createCompatibleWritableRaster(w, h), + mColorModel.isAlphaPremultiplied(), null); int[] data = new int[w*h]; |