Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/mobile
Path: blob/master/src/demo/share/jfc/J2Ddemo/java2d/DemoImages.java
41154 views
1
/*
2
*
3
* Copyright (c) 2007, 2011, 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;
33
34
35
import java.awt.Component;
36
import java.awt.Image;
37
import java.awt.MediaTracker;
38
import java.net.URL;
39
import java.util.Map;
40
import java.util.concurrent.ConcurrentHashMap;
41
import java.util.logging.Level;
42
import java.util.logging.Logger;
43
44
45
/**
46
* A collection of all the demo images found in the images directory.
47
* Certain classes are preloaded; the rest are loaded lazily.
48
*/
49
@SuppressWarnings("serial")
50
public class DemoImages extends Component {
51
52
private static final String[] names = {
53
"bld.jpg", "boat.png", "box.png",
54
"boxwave.png", "clouds.jpg", "duke.gif", "duke.running.gif",
55
"dukeplug.png", "fight.png", "globe.png",
56
"jumptojavastrip.png", "magnify.png", "painting.png",
57
"remove.gif", "snooze.png", "star7.gif", "surfing.png",
58
"thumbsup.png", "tip.png", "duke.png", "print.gif",
59
"loop.gif", "looping.gif", "start.gif", "start2.gif",
60
"stop.gif", "stop2.gif", "clone.gif"
61
};
62
private static final Map<String, Image> cache =
63
new ConcurrentHashMap<String, Image>(names.length);
64
65
private DemoImages() {
66
}
67
68
public static void newDemoImages() {
69
DemoImages demoImages = new DemoImages();
70
for (String name : names) {
71
cache.put(name, getImage(name, demoImages));
72
}
73
}
74
75
76
/*
77
* Gets the named image using the toolkit of the specified component.
78
* Note that this has to work even before we have had a chance to
79
* instantiate DemoImages and preload the cache.
80
*/
81
public static Image getImage(String name, Component cmp) {
82
Image img = null;
83
if (cache != null) {
84
if ((img = cache.get(name)) != null) {
85
return img;
86
}
87
}
88
89
ClassLoader cl = cmp.getClass().getClassLoader();
90
URL fileLoc = cl.getResource("images/" + name);
91
img = cmp.getToolkit().getImage(fileLoc);
92
93
MediaTracker tracker = new MediaTracker(cmp);
94
tracker.addImage(img, 0);
95
try {
96
tracker.waitForID(0);
97
if (tracker.isErrorAny()) {
98
System.out.println("Error loading image " + name);
99
}
100
} catch (Exception ex) {
101
Logger.getLogger(DemoImages.class.getName()).log(Level.SEVERE, null, ex);
102
}
103
return img;
104
}
105
}
106
107