1
2 package org.freehep.graphicsio.test;
3
4 import java.awt.BasicStroke;
5 import java.awt.Color;
6 import java.awt.Graphics;
7 import java.awt.Image;
8 import java.awt.MediaTracker;
9 import java.awt.Stroke;
10 import java.awt.image.BufferedImage;
11
12 import org.freehep.graphics2d.VectorGraphics;
13 import org.freehep.util.images.ImageHandler;
14
15
16
17
18
19 public class TestTransparency extends TestingPanel {
20
21 static Stroke stroke = new BasicStroke(5.f, BasicStroke.CAP_ROUND,
22 BasicStroke.JOIN_ROUND);
23
24 private Image image;
25
26 private Color bkg = Color.ORANGE;
27
28 public TestTransparency(String[] args) throws Exception {
29 super(args);
30 setName("Transparency");
31
32 MediaTracker t = new MediaTracker(this);
33 image = ImageHandler.getImage("images/transparent-image.gif",
34 TestTransparency.class);
35 t.addImage(image, 0);
36 try {
37 t.waitForAll();
38 } catch (InterruptedException e) {
39 e.printStackTrace();
40 }
41 }
42
43 public void paintComponent(Graphics g) {
44
45 VectorGraphics vg = VectorGraphics.create(g);
46
47 int numberOfImages = 16;
48 int dalpha = 255 / (numberOfImages - 1);
49 int imagesPerSide = (int) Math.sqrt(numberOfImages);
50 int x0 = 10;
51 int y0 = 10;
52 int width = getWidth();
53 int height = getHeight();
54 int dw = (width - 2 * x0) / imagesPerSide;
55 int dh = (height - 2 * y0) / imagesPerSide;
56 int x = x0;
57 int y = y0;
58
59 vg.setBackground(bkg);
60 vg.clearRect(0, 0, width, height);
61
62 BufferedImage[] bi = new BufferedImage[numberOfImages];
63 for (int n = 0; n < numberOfImages; n++) {
64 bi[n] = new BufferedImage(image.getWidth(this), image
65 .getHeight(this), BufferedImage.TYPE_INT_ARGB);
66 bi[n].createGraphics().drawImage(image, 0, 0, this);
67 for (int j = 0; j < bi[n].getHeight(); j++) {
68 for (int i = 0; i < bi[n].getWidth(); i++) {
69 int data = bi[n].getRGB(i, j);
70 if (((data >> 24) & 0xFF) == 0) {
71
72 data |= ((dalpha * n) << 24);
73 data |= 0x00008080;
74 bi[n].setRGB(i, j, data);
75 }
76 }
77 }
78 }
79
80 int n = 0;
81 for (int i = 0; i < imagesPerSide; i++) {
82 for (int j = 0; j < imagesPerSide; j++) {
83 vg.drawImage(bi[n], x, y, dw, dh, this);
84 n++;
85 x += dw;
86 }
87 x = x0;
88 y += dh;
89 }
90 }
91
92 public static void main(String[] args) throws Exception {
93 new TestTransparency(args).runTest();
94 }
95 }