Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/mobile
Path: blob/master/test/jdk/javax/imageio/plugins/gif/IndexingTest.java
41154 views
1
/*
2
* Copyright (c) 2005, 2017, Oracle and/or its affiliates. All rights reserved.
3
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4
*
5
* This code is free software; you can redistribute it and/or modify it
6
* under the terms of the GNU General Public License version 2 only, as
7
* published by the Free Software Foundation.
8
*
9
* This code is distributed in the hope that it will be useful, but WITHOUT
10
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
12
* version 2 for more details (a copy is included in the LICENSE file that
13
* accompanied this code).
14
*
15
* You should have received a copy of the GNU General Public License version
16
* 2 along with this work; if not, write to the Free Software Foundation,
17
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18
*
19
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20
* or visit www.oracle.com if you need additional information or have any
21
* questions.
22
*/
23
24
/*
25
* @test
26
* @bug 4339415
27
* @summary Tests that GIF writer plugin is able to write non-index images
28
*/
29
30
import java.awt.Color;
31
import java.awt.Graphics2D;
32
import java.awt.Transparency;
33
import java.awt.color.ColorSpace;
34
import java.awt.image.BufferedImage;
35
import java.awt.image.ComponentColorModel;
36
import java.awt.image.DataBuffer;
37
import java.awt.image.WritableRaster;
38
import java.io.File;
39
import java.util.Random;
40
41
import javax.imageio.ImageIO;
42
import javax.imageio.ImageWriter;
43
44
public class IndexingTest {
45
46
protected static final String fname = "itest.gif";
47
48
int w;
49
int h;
50
51
Random rnd;
52
53
public IndexingTest() {
54
w = h = 200;
55
rnd = new Random();
56
}
57
58
public void doTest() {
59
ComponentColorModel ccm = createBitmaskColorModel();
60
BufferedImage img = createComponentImage(w, h, ccm);
61
62
try {
63
ImageWriter w = ImageIO.getImageWritersByFormatName("GIF").next();
64
w.setOutput(ImageIO.createImageOutputStream(new File(fname)));
65
w.write(img);
66
} catch (Exception e) {
67
throw new RuntimeException("Test failed.", e);
68
}
69
70
BufferedImage dst = null;
71
try {
72
dst = ImageIO.read(new File(fname));
73
} catch (Exception e) {
74
throw new RuntimeException("Test failed.", e);
75
}
76
77
compareImages(img, dst);
78
79
System.out.println("Test passed.");
80
}
81
82
protected static ComponentColorModel createBitmaskColorModel() {
83
ComponentColorModel cm =
84
new ComponentColorModel(ColorSpace.getInstance(ColorSpace.CS_sRGB),
85
true, false, Transparency.BITMASK,
86
DataBuffer.TYPE_BYTE);
87
return cm;
88
}
89
90
protected static BufferedImage createComponentImage(int w, int h,
91
ComponentColorModel cm)
92
{
93
WritableRaster wr = cm.createCompatibleWritableRaster(w, h);
94
95
BufferedImage img = new BufferedImage(cm, wr, false, null);
96
Graphics2D g = img.createGraphics();
97
int width = w / 8;
98
Color[] colors = new Color[8];
99
colors[0] = Color.red;
100
colors[1] = Color.green;
101
colors[2] = Color.blue;
102
colors[3] = Color.white;
103
colors[4] = Color.black;
104
colors[5] = new Color(0x80, 0x80, 0x80, 0x00);
105
colors[6] = Color.yellow;
106
colors[7] = Color.cyan;
107
108
for (int i = 0; i < 8; i++) {
109
g.setColor(colors[i]);
110
g.fillRect(i * width, 0, width, h);
111
}
112
return img;
113
}
114
115
protected void compareImages(BufferedImage src, BufferedImage dst) {
116
int n = 10;
117
while (n-- > 0) {
118
int x = rnd.nextInt(w);
119
int y = rnd.nextInt(h);
120
121
int pSrc = src.getRGB(x, y);
122
int pDst = src.getRGB(x, y);
123
124
if (pSrc != pDst) {
125
throw new RuntimeException("Images are different");
126
}
127
}
128
}
129
130
public static void main(String[] args) {
131
IndexingTest t = new IndexingTest();
132
t.doTest();
133
}
134
}
135
136