From c1a8e3311fe63d3b1edad542aea9c7e4f118808a Mon Sep 17 00:00:00 2001 From: Diego Perez Date: Mon, 8 Feb 2016 14:20:11 +0000 Subject: [PATCH] Remove BufferedImage allocation from PorterDuff filter Change-Id: Iedc280081e1889d316df17863f6ddf377592bc4c --- .../PorterDuffColorFilter_Delegate.java | 20 ++++--------------- 1 file changed, 4 insertions(+), 16 deletions(-) diff --git a/tools/layoutlib/bridge/src/android/graphics/PorterDuffColorFilter_Delegate.java b/tools/layoutlib/bridge/src/android/graphics/PorterDuffColorFilter_Delegate.java index 1ca94dc7fa844..ff3f19f3f7429 100644 --- a/tools/layoutlib/bridge/src/android/graphics/PorterDuffColorFilter_Delegate.java +++ b/tools/layoutlib/bridge/src/android/graphics/PorterDuffColorFilter_Delegate.java @@ -48,7 +48,7 @@ public class PorterDuffColorFilter_Delegate extends ColorFilter_Delegate { // ---- delegate data ---- - private final int mSrcColor; + private final java.awt.Color mSrcColor; private final Mode mMode; @@ -66,9 +66,9 @@ public class PorterDuffColorFilter_Delegate extends ColorFilter_Delegate { @Override public void applyFilter(Graphics2D g, int width, int height) { - BufferedImage image = createFilterImage(width, height); g.setComposite(getComposite(mMode, 0xFF)); - g.drawImage(image, 0, 0, null); + g.setColor(mSrcColor); + g.fillRect(0, 0, width, height); } // ---- native methods ---- @@ -84,22 +84,10 @@ public class PorterDuffColorFilter_Delegate extends ColorFilter_Delegate { // ---- Private delegate/helper methods ---- private PorterDuffColorFilter_Delegate(int srcColor, int mode) { - mSrcColor = srcColor; + mSrcColor = new java.awt.Color(srcColor, true /* hasAlpha */); mMode = getCompatibleMode(getPorterDuffMode(mode)); } - private BufferedImage createFilterImage(int width, int height) { - BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB); - Graphics2D graphics = image.createGraphics(); - try { - graphics.setColor(new java.awt.Color(mSrcColor, true /* hasAlpha */)); - graphics.fillRect(0, 0, width, height); - } finally { - graphics.dispose(); - } - return image; - } - // For filtering the colors, the src image should contain the "color" only for pixel values // which are not transparent in the target image. But, we are using a simple rectangular image // completely filled with color. Hence some Composite rules do not apply as intended. However,