blob: 9cd94a5ca012a21a24ef3d56cdf67aab6cd46fb4 [file] [log] [blame]
/*
* Copyright (c) 2002, 2007, Oracle and/or its affiliates. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* - Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* - Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* - Neither the name of Oracle nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
* IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package j2dbench;
import java.awt.Image;
import java.awt.Component;
import java.awt.GraphicsConfiguration;
import java.awt.Transparency;
import java.awt.color.ColorSpace;
import java.awt.image.BufferedImage;
import java.awt.image.ComponentColorModel;
import java.awt.image.DataBuffer;
import java.awt.image.WritableRaster;
import j2dbench.tests.GraphicsTests;
import j2dbench.tests.ImageTests;
public abstract class Destinations extends Option.Enable {
public static Group.EnableSet destroot;
public static Group bufimgdestroot;
public static Group compatimgdestroot;
public static void init() {
destroot = new Group.EnableSet(TestEnvironment.globaloptroot,
"dest", "Output Destination Options");
new Screen();
new OffScreen();
if (GraphicsTests.hasGraphics2D) {
if (ImageTests.hasCompatImage) {
compatimgdestroot =
new Group.EnableSet(destroot, "compatimg",
"Compatible Image Destinations");
compatimgdestroot.setHorizontal();
new CompatImg();
new CompatImg(Transparency.OPAQUE);
new CompatImg(Transparency.BITMASK);
new CompatImg(Transparency.TRANSLUCENT);
}
if (ImageTests.hasVolatileImage) {
new VolatileImg();
}
bufimgdestroot = new Group.EnableSet(destroot, "bufimg",
"BufferedImage Destinations");
new BufImg(BufferedImage.TYPE_INT_RGB);
new BufImg(BufferedImage.TYPE_INT_ARGB);
new BufImg(BufferedImage.TYPE_INT_ARGB_PRE);
new BufImg(BufferedImage.TYPE_3BYTE_BGR);
new BufImg(BufferedImage.TYPE_BYTE_INDEXED);
new BufImg(BufferedImage.TYPE_BYTE_GRAY);
new CustomImg();
}
}
public Destinations(Group parent,
String nodename, String description,
boolean defenabled)
{
super(parent, nodename, description, defenabled);
}
public void modifyTest(TestEnvironment env) {
setDestination(env);
}
public void restoreTest(TestEnvironment env) {
env.setTestImage(null);
}
public String getAbbreviatedModifierDescription(Object val) {
return "to "+getModifierValueName(val);
}
public abstract void setDestination(TestEnvironment env);
public static class Screen extends Destinations {
public Screen() {
super(destroot, "screen", "Output to Screen", false);
}
public String getModifierValueName(Object val) {
return "Screen";
}
public void setDestination(TestEnvironment env) {
env.setTestImage(null);
}
}
public static class OffScreen extends Destinations {
public OffScreen() {
super(destroot, "offscreen", "Output to OffScreen Image", false);
}
public String getModifierValueName(Object val) {
return "OffScreen";
}
public void setDestination(TestEnvironment env) {
Component c = env.getCanvas();
env.setTestImage(c.createImage(env.getWidth(), env.getHeight()));
}
}
public static class CompatImg extends Destinations {
int transparency;
public static String ShortNames[] = {
"compatimg",
"opqcompatimg",
"bmcompatimg",
"transcompatimg",
};
public static String ShortDescriptions[] = {
"Default",
"Opaque",
"Bitmask",
"Translucent",
};
public static String LongDescriptions[] = {
"Default Compatible Image",
"Opaque Compatible Image",
"Bitmask Compatible Image",
"Translucent Compatible Image",
};
public static String ModifierNames[] = {
"CompatImage()",
"CompatImage(Opaque)",
"CompatImage(Bitmask)",
"CompatImage(Translucent)",
};
public CompatImg() {
this(0);
}
public CompatImg(int transparency) {
super(compatimgdestroot,
ShortNames[transparency],
ShortDescriptions[transparency],
false);
this.transparency = transparency;
}
public String getModifierValueName(Object val) {
return ModifierNames[transparency];
}
public void setDestination(TestEnvironment env) {
Component c = env.getCanvas();
GraphicsConfiguration gc = c.getGraphicsConfiguration();
int w = env.getWidth();
int h = env.getHeight();
if (transparency == 0) {
env.setTestImage(gc.createCompatibleImage(w, h));
} else {
env.setTestImage(gc.createCompatibleImage(w, h, transparency));
}
}
}
public static class VolatileImg extends Destinations {
public VolatileImg() {
super(destroot, "volimg", "Output to Volatile Image", false);
}
public String getModifierValueName(Object val) {
return "VolatileImg";
}
public void setDestination(TestEnvironment env) {
Component c = env.getCanvas();
env.setTestImage(c.createVolatileImage(env.getWidth(),
env.getHeight()));
}
}
public static class BufImg extends Destinations {
int type;
Image img;
public static String ShortNames[] = {
"custom",
"IntXrgb",
"IntArgb",
"IntArgbPre",
"IntXbgr",
"3ByteBgr",
"4ByteAbgr",
"4ByteAbgrPre",
"Short565",
"Short555",
"ByteGray",
"ShortGray",
"ByteBinary",
"ByteIndexed",
};
public static String Descriptions[] = {
"Custom Image",
"32-bit XRGB Packed Image",
"32-bit ARGB Packed Image",
"32-bit ARGB Alpha Premultiplied Packed Image",
"32-bit XBGR Packed Image",
"3-byte BGR Component Image",
"4-byte ABGR Component Image",
"4-byte ABGR Alpha Premultiplied Component Image",
"16-bit 565 RGB Packed Image",
"15-bit 555 RGB Packed Image",
"8-bit Grayscale Image",
"16-bit Grayscale Image",
"1-bit Binary Image",
"8-bit Indexed Image",
};
public BufImg(int type) {
super(bufimgdestroot, ShortNames[type], Descriptions[type], false);
this.type = type;
}
public String getModifierValueName(Object val) {
return "BufImg("+getNodeName()+")";
}
public void setDestination(TestEnvironment env) {
if (img == null) {
img = new BufferedImage(env.getWidth(), env.getHeight(), type);
}
env.setTestImage(img);
}
}
public static class CustomImg extends Destinations {
private Image img;
public CustomImg() {
super(bufimgdestroot,
"custom",
"Custom (3-float RGB) Image",
false);
}
public String getModifierValueName(Object val) {
return "CustomImg";
}
public void setDestination(TestEnvironment env) {
if (img == null) {
ColorSpace cs = ColorSpace.getInstance(ColorSpace.CS_sRGB);
ComponentColorModel cm =
new ComponentColorModel(cs, false, false,
Transparency.OPAQUE,
DataBuffer.TYPE_FLOAT);
WritableRaster raster =
cm.createCompatibleWritableRaster(env.getWidth(),
env.getHeight());
img = new BufferedImage(cm, raster, false, null);
}
env.setTestImage(img);
}
}
}