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;