Lines 39-45
Link Here
|
39 |
|
39 |
|
40 |
package org.netbeans.modules.ide.ergonomics.ant; |
40 |
package org.netbeans.modules.ide.ergonomics.ant; |
41 |
|
41 |
|
42 |
import java.awt.Image; |
|
|
43 |
import java.awt.image.BufferedImage; |
42 |
import java.awt.image.BufferedImage; |
44 |
import java.io.ByteArrayInputStream; |
43 |
import java.io.ByteArrayInputStream; |
45 |
import java.io.ByteArrayOutputStream; |
44 |
import java.io.ByteArrayOutputStream; |
Lines 47-53
Link Here
|
47 |
import java.io.InputStream; |
46 |
import java.io.InputStream; |
48 |
import javax.imageio.ImageIO; |
47 |
import javax.imageio.ImageIO; |
49 |
import org.apache.tools.ant.types.Resource; |
48 |
import org.apache.tools.ant.types.Resource; |
50 |
import org.openide.util.ImageUtilities; |
|
|
51 |
|
49 |
|
52 |
/** |
50 |
/** |
53 |
* |
51 |
* |
Lines 74-85
Link Here
|
74 |
if (img == null) { |
72 |
if (img == null) { |
75 |
return r.getInputStream(); |
73 |
return r.getInputStream(); |
76 |
} |
74 |
} |
77 |
Image merge = ImageUtilities.mergeImages(img, badgeIcon, 0, 0); |
75 |
BufferedImage merge = merge(img, badgeIcon); |
78 |
ByteArrayOutputStream os = new ByteArrayOutputStream(); |
76 |
ByteArrayOutputStream os = new ByteArrayOutputStream(); |
79 |
ImageIO.write((BufferedImage)merge, "png", os); |
77 |
ImageIO.write(merge, "png", os); |
80 |
return new ByteArrayInputStream(os.toByteArray()); |
78 |
return new ByteArrayInputStream(os.toByteArray()); |
81 |
} catch (IOException ex) { |
79 |
} catch (IOException ex) { |
82 |
return r.getInputStream(); |
80 |
return r.getInputStream(); |
83 |
} |
81 |
} |
84 |
} |
82 |
} |
|
|
83 |
|
84 |
static BufferedImage merge(BufferedImage img1, BufferedImage img2) { |
85 |
int w = Math.max(img1.getWidth(), img2.getWidth()); |
86 |
int h = Math.max(img1.getHeight(), img2.getHeight()); |
87 |
|
88 |
BufferedImage result = new BufferedImage(w, h, BufferedImage.TYPE_INT_ARGB); |
89 |
|
90 |
for (int i = 0; i < w; i++) { |
91 |
for (int j = 0; j < h; j++) { |
92 |
int color = i < img2.getWidth() && j < img2.getHeight() ? img2.getRGB(i, j) : 0; |
93 |
if (color == 0 || color == 0xffffff) { // how find out that an image pixel is "empty"? |
94 |
color = i < img1.getWidth() && j < img1.getHeight() ? img1.getRGB(i, j) : 0; |
95 |
} |
96 |
result.setRGB(i, j, color); |
97 |
} |
98 |
} |
99 |
return result; |
100 |
} |
85 |
} |
101 |
} |