Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/mobile
Path: blob/master/src/demo/share/jfc/J2Ddemo/java2d/demos/Composite/ACimages.java
41175 views
1
/*
2
*
3
* Copyright (c) 2007, 2018, Oracle and/or its affiliates. All rights reserved.
4
*
5
* Redistribution and use in source and binary forms, with or without
6
* modification, are permitted provided that the following conditions
7
* are met:
8
*
9
* - Redistributions of source code must retain the above copyright
10
* notice, this list of conditions and the following disclaimer.
11
*
12
* - Redistributions in binary form must reproduce the above copyright
13
* notice, this list of conditions and the following disclaimer in the
14
* documentation and/or other materials provided with the distribution.
15
*
16
* - Neither the name of Oracle nor the names of its
17
* contributors may be used to endorse or promote products derived
18
* from this software without specific prior written permission.
19
*
20
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
21
* IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
22
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
23
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
24
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
25
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
26
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
27
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
28
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
29
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
30
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31
*/
32
package java2d.demos.Composite;
33
34
35
import static java.awt.Color.BLACK;
36
import static java.awt.Color.BLUE;
37
import static java.awt.Color.CYAN;
38
import static java.awt.Color.GREEN;
39
import static java.awt.Color.LIGHT_GRAY;
40
import static java.awt.Color.MAGENTA;
41
import static java.awt.Color.ORANGE;
42
import static java.awt.Color.PINK;
43
import static java.awt.Color.RED;
44
import static java.awt.Color.WHITE;
45
import static java.awt.Color.YELLOW;
46
import java.awt.AlphaComposite;
47
import java.awt.Color;
48
import java.awt.Graphics2D;
49
import java.awt.Image;
50
import java.awt.Shape;
51
import java.awt.font.TextLayout;
52
import java.awt.geom.Ellipse2D;
53
import java.awt.geom.Rectangle2D;
54
import java.awt.geom.RoundRectangle2D;
55
import java2d.Surface;
56
57
58
/**
59
* Compositing shapes on images.
60
*/
61
@SuppressWarnings("serial")
62
public class ACimages extends Surface {
63
64
private static final String[] s = { "box", "fight", "magnify",
65
"boxwave", "globe", "snooze",
66
"tip", "thumbsup", "dukeplug" };
67
private static Image[] imgs = new Image[s.length];
68
private static Color[] colors = { BLUE, CYAN, GREEN,
69
MAGENTA, ORANGE, PINK, RED, YELLOW, LIGHT_GRAY };
70
71
public ACimages() {
72
setBackground(WHITE);
73
for (int i = 0; i < imgs.length; i++) {
74
imgs[i] = getImage(s[i] + ".png");
75
}
76
}
77
78
@Override
79
public void render(int w, int h, Graphics2D g2) {
80
81
float alpha = 0.0f;
82
int iw = w / 3;
83
int ih = (h - 45) / 3;
84
float xx = 0, yy = 15;
85
86
for (int i = 0; i < imgs.length; i++) {
87
88
xx = (i % 3 == 0) ? 0 : xx + w / 3;
89
switch (i) {
90
case 3:
91
yy = h / 3 + 15;
92
break;
93
case 6:
94
yy = h / 3 * 2 + 15;
95
}
96
97
g2.setComposite(AlphaComposite.SrcOver);
98
g2.setColor(BLACK);
99
AlphaComposite ac = AlphaComposite.SrcOver.derive(alpha += .1f);
100
String str = "a=" + Float.toString(alpha).substring(0, 3);
101
new TextLayout(str, g2.getFont(), g2.getFontRenderContext()).draw(g2, xx
102
+ 3, yy - 2);
103
104
Shape shape = null;
105
106
switch (i % 3) {
107
case 0:
108
shape = new Ellipse2D.Float(xx, yy, iw, ih);
109
break;
110
case 1:
111
shape = new RoundRectangle2D.Float(xx, yy, iw, ih, 25, 25);
112
break;
113
case 2:
114
shape = new Rectangle2D.Float(xx, yy, iw, ih);
115
break;
116
}
117
g2.setColor(colors[i]);
118
g2.setComposite(ac);
119
g2.fill(shape);
120
g2.drawImage(imgs[i], (int) xx, (int) yy, iw, ih, null);
121
}
122
}
123
124
public static void main(String[] s) {
125
createDemoFrame(new ACimages());
126
}
127
}
128
129