src/demo/share/java2d/J2DBench/src/j2dbench/tests/ImageTests.java
Print this page
*** 1,7 ****
/*
! * Copyright (c) 2002, 2011, 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:
*
--- 1,7 ----
/*
! * Copyright (c) 2002, 2014, 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:
*
*** 51,60 ****
--- 51,61 ----
import java.awt.Image;
import java.awt.Canvas;
import java.awt.AlphaComposite;
import java.awt.Dimension;
import java.awt.GraphicsConfiguration;
+ import java.awt.RenderingHints;
import java.awt.image.BufferedImage;
import java.awt.image.BufferedImageOp;
import java.awt.image.ByteLookupTable;
import java.awt.image.ConvolveOp;
import java.awt.image.DataBuffer;
*** 75,84 ****
--- 76,86 ----
import java.util.ArrayList;
import javax.swing.JComponent;
public abstract class ImageTests extends GraphicsTests {
public static boolean hasVolatileImage;
+ public static boolean hasTransparentVolatileImage;
public static boolean hasCompatImage;
static {
try {
hasVolatileImage = (VolatileImage.class != null);
*** 87,113 ****
try {
new Canvas().getGraphicsConfiguration();
hasCompatImage = true;
} catch (NoSuchMethodError e) {
}
}
static Group imageroot;
static Group.EnableSet imgsrcroot;
static Group.EnableSet bufimgsrcroot;
static Group imgtestroot;
! static Group imgoptionsroot;
static Group imageOpRoot;
static Group imageOpOptRoot;
static Group imageOpTestRoot;
static Group graphicsTestRoot;
static Group bufImgOpTestRoot;
static Group rasterOpTestRoot;
static Option opList;
static Option doTouchSrc;
static String transNodeNames[] = {
null, "opaque", "bitmask", "translucent",
};
--- 89,122 ----
try {
new Canvas().getGraphicsConfiguration();
hasCompatImage = true;
} catch (NoSuchMethodError e) {
}
+ try {
+ new Canvas().getMousePosition();
+ hasTransparentVolatileImage = true;
+ } catch (NoSuchMethodError e) {
+ }
}
static Group imageroot;
static Group.EnableSet imgsrcroot;
static Group.EnableSet bufimgsrcroot;
+ static Group imgbenchroot;
static Group imgtestroot;
! static Group imgtestOptRoot;
static Group imageOpRoot;
static Group imageOpOptRoot;
static Group imageOpTestRoot;
static Group graphicsTestRoot;
static Group bufImgOpTestRoot;
static Group rasterOpTestRoot;
static Option opList;
static Option doTouchSrc;
+ static Option interpolation;
static String transNodeNames[] = {
null, "opaque", "bitmask", "translucent",
};
*** 120,166 ****
"Imaging Benchmarks");
imageroot.setTabbed();
imgsrcroot = new Group.EnableSet(imageroot, "src",
"Image Rendering Sources");
! imgsrcroot.setBordered(true);
!
! imgoptionsroot = new Group(imgsrcroot, "options",
! "Image Source Options");
! imgoptionsroot.setBordered(true);
! doTouchSrc =
! new Option.Toggle(imgoptionsroot, "touchsrc",
! "Touch src image before every operation",
! Option.Toggle.Off);
!
! imgtestroot = new Group(imageroot, "tests",
! "Image Rendering Tests");
! imgtestroot.setBordered(true);
new OffScreen();
if (hasGraphics2D) {
if (hasCompatImage) {
new CompatImg(Transparency.OPAQUE);
new CompatImg(Transparency.BITMASK);
new CompatImg(Transparency.TRANSLUCENT);
}
-
if (hasVolatileImage) {
new VolatileImg();
}
bufimgsrcroot =
new Group.EnableSet(imgsrcroot, "bufimg",
"BufferedImage Rendering Sources");
new BufImg(BufferedImage.TYPE_INT_RGB);
new BufImg(BufferedImage.TYPE_INT_ARGB);
new BufImg(BufferedImage.TYPE_BYTE_GRAY);
new BufImg(BufferedImage.TYPE_3BYTE_BGR);
new BmByteIndexBufImg();
new BufImg(BufferedImage.TYPE_INT_RGB, true);
new BufImg(BufferedImage.TYPE_INT_ARGB, true);
new BufImg(BufferedImage.TYPE_3BYTE_BGR, true);
imageOpRoot = new Group(imageroot, "imageops",
"Image Op Benchmarks");
imageOpOptRoot = new Group(imageOpRoot, "opts", "Options");
--- 129,174 ----
"Imaging Benchmarks");
imageroot.setTabbed();
imgsrcroot = new Group.EnableSet(imageroot, "src",
"Image Rendering Sources");
! imgbenchroot = new Group(imageroot, "benchmarks",
! "Image Rendering Benchmarks");
! imgtestOptRoot = new Group(imgbenchroot, "opts", "Options");
new OffScreen();
if (hasGraphics2D) {
if (hasCompatImage) {
new CompatImg(Transparency.OPAQUE);
new CompatImg(Transparency.BITMASK);
new CompatImg(Transparency.TRANSLUCENT);
}
if (hasVolatileImage) {
+ if (hasTransparentVolatileImage) {
+ new VolatileImg(Transparency.OPAQUE);
+ new VolatileImg(Transparency.BITMASK);
+ new VolatileImg(Transparency.TRANSLUCENT);
+ } else {
new VolatileImg();
}
+ }
bufimgsrcroot =
new Group.EnableSet(imgsrcroot, "bufimg",
"BufferedImage Rendering Sources");
new BufImg(BufferedImage.TYPE_INT_RGB);
new BufImg(BufferedImage.TYPE_INT_ARGB);
+ new BufImg(BufferedImage.TYPE_INT_ARGB_PRE);
new BufImg(BufferedImage.TYPE_BYTE_GRAY);
new BufImg(BufferedImage.TYPE_3BYTE_BGR);
+ new BufImg(BufferedImage.TYPE_4BYTE_ABGR);
+ new BufImg(BufferedImage.TYPE_4BYTE_ABGR_PRE);
new BmByteIndexBufImg();
new BufImg(BufferedImage.TYPE_INT_RGB, true);
new BufImg(BufferedImage.TYPE_INT_ARGB, true);
+ new BufImg(BufferedImage.TYPE_INT_ARGB_PRE, true);
new BufImg(BufferedImage.TYPE_3BYTE_BGR, true);
imageOpRoot = new Group(imageroot, "imageops",
"Image Op Benchmarks");
imageOpOptRoot = new Group(imageOpRoot, "opts", "Options");
*** 209,224 ****
--- 217,251 ----
new DrawImageOp();
new BufImgOpFilter(false);
new BufImgOpFilter(true);
new RasterOpFilter(false);
new RasterOpFilter(true);
+
+ String interpolationnames[] = {"Nearest neighbor", "Bilinear",
+ "Bicubic",};
+ interpolation =
+ new ObjectList(imgtestOptRoot, "interpolation",
+ "Interpolation",
+ interpolationnames, new Object[] {
+ RenderingHints.VALUE_INTERPOLATION_NEAREST_NEIGHBOR,
+ RenderingHints.VALUE_INTERPOLATION_BILINEAR,
+ RenderingHints.VALUE_INTERPOLATION_BICUBIC,
+ }, interpolationnames, interpolationnames, 1);
}
+ doTouchSrc =
+ new Option.Toggle(imgtestOptRoot, "touchsrc",
+ "Touch source image before every operation",
+ Option.Toggle.Off);
+
+ imgtestroot = new Group(imgbenchroot, "tests", "Image Rendering Tests");
+
new DrawImage();
new DrawImageBg();
new DrawImageScale("up", 1.5f);
new DrawImageScale("down", .75f);
+ new DrawImageScale("split", .5f);
new DrawImageTransform();
}
public static class Context extends GraphicsTests.Context {
boolean touchSrc;
*** 234,243 ****
--- 261,271 ----
Modifier.Filter srcFilter)
{
super(parent, nodeName, description);
addDependency(imgsrcroot, srcFilter);
addDependency(doTouchSrc);
+ addDependency(interpolation);
}
public GraphicsTests.Context createContext() {
return new ImageTests.Context();
}
*** 246,255 ****
--- 274,288 ----
super.initContext(env, ctx);
ImageTests.Context ictx = (ImageTests.Context) ctx;
ictx.src = env.getSrcImage();
ictx.touchSrc = env.isEnabled(doTouchSrc);
+ if (hasGraphics2D) {
+ Graphics2D g2d = (Graphics2D) ctx.graphics;
+ final Object modifier = env.getModifier(interpolation);
+ g2d.setRenderingHint(RenderingHints.KEY_INTERPOLATION, modifier);
+ }
}
public abstract static class TriStateImageType extends Group {
Image theImage;
*** 288,304 ****
return c.createImage(w, h);
}
}
public static class VolatileImg extends TriStateImageType {
public VolatileImg() {
! super(imgsrcroot, "volimg", "Volatile Image", Transparency.OPAQUE);
}
public Image makeImage(TestEnvironment env, int w, int h) {
Canvas c = env.getCanvas();
! return c.createVolatileImage(w, h);
}
}
public static class CompatImg extends TriStateImageType {
int transparency;
--- 321,351 ----
return c.createImage(w, h);
}
}
public static class VolatileImg extends TriStateImageType {
+ private final int transparency;
+
public VolatileImg() {
! this(0);
! }
!
! public VolatileImg(int transparency) {
! super(imgsrcroot, Destinations.VolatileImg.ShortNames[transparency],
! Destinations.VolatileImg.LongDescriptions[transparency],
! transparency);
! this.transparency = transparency;
}
public Image makeImage(TestEnvironment env, int w, int h) {
Canvas c = env.getCanvas();
! GraphicsConfiguration gc = c.getGraphicsConfiguration();
! if (transparency == 0) {
! return gc.createCompatibleVolatileImage(w, h);
! } else {
! return gc.createCompatibleVolatileImage(w, h, transparency);
! }
}
}
public static class CompatImg extends TriStateImageType {
int transparency;