--- old/src/share/demo/java2d/J2DBench/build.xml 2012-12-21 21:02:25.708692900 +0400 +++ new/src/share/demo/java2d/J2DBench/build.xml 2012-12-21 21:02:25.271892100 +0400 @@ -49,7 +49,7 @@ - + = 0); + } + } + + private static class ConvertRasterTest extends ColorConvertOpTests { + public ConvertRasterTest() { + super(opConvRoot, "op_rst", "op.filetr(Raster)"); + } + + public void runTest(Object octx, int numReps) { + final Context ctx = (Context)octx; + final ColorConvertOp op = ctx.op_rst; + + final Raster src = ctx.rsrc; + WritableRaster dst = ctx.rdst; + do { + try { + dst = op.filter(src, dst); + } catch (Exception e) { + e.printStackTrace(); + } + } while (--numReps >= 0); + } + } + + private static class DrawImageTest extends ColorConvertOpTests { + public DrawImageTest() { + super(opConvRoot, "op_draw", "drawImage(ColorConvertOp)"); + } + + public void runTest(Object octx, int numReps) { + final Context ctx = (Context)octx; + final ColorConvertOp op = ctx.op_img; + + final Graphics2D g = ctx.graphics; + + final BufferedImage src = ctx.src; + + do { + g.drawImage(src, op, 0, 0); + } while (--numReps >= 0); + + } + } + + + /************************************************************************** + ****** Helper routines + *************************************************************************/ + protected static BufferedImage createBufferedImage(int width, + int height, + ImageContent contentType, + int type) + { + BufferedImage image; + image = new BufferedImage(width, height, type); + boolean hasAlpha = image.getColorModel().hasAlpha(); + switch (contentType) { + case RANDOM: + for (int y = 0; y < height; y++) { + for (int x = 0; x < width; x++) { + int rgb = (int)(Math.random() * 0xffffff); + if (hasAlpha) { + rgb |= 0x7f000000; + } + image.setRGB(x, y, rgb); + } + } + break; + case VECTOR: + { + Graphics2D g = image.createGraphics(); + if (hasAlpha) { + // fill background with a translucent color + g.setComposite(AlphaComposite.getInstance( + AlphaComposite.SRC, 0.5f)); + } + g.setColor(Color.blue); + g.fillRect(0, 0, width, height); + g.setComposite(AlphaComposite.Src); + g.setColor(Color.yellow); + g.fillOval(2, 2, width-4, height-4); + g.setColor(Color.red); + g.fillOval(4, 4, width-8, height-8); + g.setColor(Color.green); + g.fillRect(8, 8, width-16, height-16); + g.setColor(Color.white); + g.drawLine(0, 0, width, height); + g.drawLine(0, height, width, 0); + g.dispose(); + break; + } + case PHOTO: + { + Image photo = null; + try { + photo = ImageIO.read( + IIOTests.class.getResourceAsStream("images/photo.jpg")); + } catch (Exception e) { + System.err.println("error loading photo"); + e.printStackTrace(); + } + Graphics2D g = image.createGraphics(); + if (hasAlpha) { + g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC, + 0.5f)); + } + g.drawImage(photo, 0, 0, width, height, null); + g.dispose(); + break; + } + default: + break; + } + + return image; + } +} --- /dev/null 2012-12-21 21:02:36.000000000 +0400 +++ new/src/share/demo/java2d/J2DBench/src/j2dbench/tests/cmm/DataConversionTests.java 2012-12-21 21:02:36.113911200 +0400 @@ -0,0 +1,198 @@ +/* + * Copyright (c) 2012, 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. + */ + +/* + * This source code is provided to illustrate the usage of a given feature + * or technique and has been deliberately simplified. Additional steps + * required for a production-quality application, such as security checks, + * input validation and proper error handling, might not be present in + * this sample code. + */ + +package j2dbench.tests.cmm; + +import j2dbench.Group; +import j2dbench.Result; +import j2dbench.TestEnvironment; +import java.awt.color.ColorSpace; + +public class DataConversionTests extends ColorConversionTests { + + protected static Group dataConvRoot; + + public static void init() { + dataConvRoot = new Group(colorConvRoot, "data", "Data Conversoion Tests"); + + new FromRGBTest(); + new ToRGBTest(); + new FromCIEXYZTest(); + new ToCIEXYZTest(); + } + + public DataConversionTests(Group parent, String nodeName, String description) { + super(parent, nodeName, description); + } + + protected static class Context { + + ColorSpace cs; + int numComponents; + float[] val; + float[] rgb; + float[] cie; + TestEnvironment env; + Result res; + + public Context(TestEnvironment env, Result result, ColorSpace cs) { + this.cs = cs; + this.env = env; + this.res = result; + + numComponents = cs.getNumComponents(); + + val = new float[numComponents]; + + for (int i = 0; i < numComponents; i++) { + float min = cs.getMinValue(i); + float max = cs.getMaxValue(i); + + val[i] = 0.5f * (max - min); + } + + rgb = new float[]{0.5f, 0.5f, 0.5f}; + cie = new float[]{0.5f, 0.5f, 0.5f}; + } + } + + @Override + public Object initTest(TestEnvironment env, Result result) { + ColorSpace cs = getColorSpace(env); + return new Context(env, result, cs); + } + + @Override + public void cleanupTest(TestEnvironment te, Object o) { + } + + private static class FromRGBTest extends DataConversionTests { + + public FromRGBTest() { + super(dataConvRoot, + "fromRGB", + "ColorSpace.fromRGB()"); + } + + public void runTest(Object ctx, int numReps) { + final Context ictx = (Context) ctx; + final ColorSpace cs = ictx.cs; + + final float[] rgb = ictx.rgb; + do { + try { + cs.fromRGB(rgb); + } catch (Exception e) { + e.printStackTrace(); + } + } while (--numReps >= 0); + } + } + + private static class FromCIEXYZTest extends DataConversionTests { + + public FromCIEXYZTest() { + super(dataConvRoot, + "fromCIEXYZ", + "ColorSpace.fromCIEXYZ()"); + } + + public void runTest(Object ctx, int numReps) { + final Context ictx = (Context) ctx; + final ColorSpace cs = ictx.cs; + + final float[] val = ictx.cie; + do { + try { + cs.fromCIEXYZ(val); + } catch (Exception e) { + e.printStackTrace(); + } + } while (--numReps >= 0); + } + } + + private static class ToCIEXYZTest extends DataConversionTests { + + public ToCIEXYZTest() { + super(dataConvRoot, + "toCIEXYZ", + "ColorSpace.toCIEXYZ()"); + } + + public void runTest(Object ctx, int numReps) { + final Context ictx = (Context) ctx; + final ColorSpace cs = ictx.cs; + + final float[] val = ictx.val; + + do { + try { + cs.toCIEXYZ(val); + } catch (Exception e) { + e.printStackTrace(); + } + } while (--numReps >= 0); + } + } + + private static class ToRGBTest extends DataConversionTests { + + public ToRGBTest() { + super(dataConvRoot, + "toRGB", + "ColorSpace.toRGB()"); + } + + public void runTest(Object ctx, int numReps) { + final Context ictx = (Context) ctx; + final ColorSpace cs = ictx.cs; + + final float[] val = ictx.val; + + do { + try { + cs.toRGB(val); + } catch (Exception e) { + e.printStackTrace(); + } + } while (--numReps >= 0); + } + } +} --- /dev/null 2012-12-21 21:02:38.000000000 +0400 +++ new/src/share/demo/java2d/J2DBench/src/j2dbench/tests/cmm/ProfileTests.java 2012-12-21 21:02:38.017114500 +0400 @@ -0,0 +1,132 @@ +/* + * Copyright (c) 2012, 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. + */ + +/* + * This source code is provided to illustrate the usage of a given feature + * or technique and has been deliberately simplified. Additional steps + * required for a production-quality application, such as security checks, + * input validation and proper error handling, might not be present in + * this sample code. + */ +package j2dbench.tests.cmm; + +import j2dbench.Group; +import j2dbench.Result; +import j2dbench.TestEnvironment; +import java.awt.color.ColorSpace; +import java.awt.color.ICC_ColorSpace; +import java.awt.color.ICC_Profile; + +public class ProfileTests extends CMMTests { + + protected static Group profileRoot; + + public static void init() { + profileRoot = new Group(cmmRoot, "profiles", "Profile Handling Benchmarks"); + + new ReadHeaderTest(); + new GetNumComponentsTest(); + } + + protected ProfileTests(Group parent, String nodeName, String description) { + super(parent, nodeName, description); + } + + protected static class Context { + + ICC_Profile profile; + TestEnvironment env; + Result res; + + public Context(ICC_Profile profile, TestEnvironment env, Result res) { + this.profile = profile; + this.env = env; + this.res = res; + } + } + + @Override + public Object initTest(TestEnvironment env, Result res) { + ICC_ColorSpace cs = (ICC_ColorSpace) getColorSpace(env); + return new Context(cs.getProfile(), env, res); + } + + @Override + public void cleanupTest(TestEnvironment env, Object o) { + } + + private static class ReadHeaderTest extends ProfileTests { + + public ReadHeaderTest() { + super(profileRoot, + "getHeader", + "getData(icSigHead)"); + } + + @Override + public void runTest(Object ctx, int numReps) { + final Context ictx = (Context) ctx; + final ICC_Profile profile = ictx.profile; + + byte[] data = null; + do { + try { + data = profile.getData(ICC_Profile.icSigHead); + } catch (Exception e) { + e.printStackTrace(); + } + } while (--numReps >= 0); + } + } + + private static class GetNumComponentsTest extends ProfileTests { + + public GetNumComponentsTest() { + super(profileRoot, + "getNumComponents", + "getNumComponents"); + } + + @Override + public void runTest(Object ctx, int numReps) { + final Context ictx = (Context) ctx; + final ICC_Profile profile = ictx.profile; + + do { + try { + int num = profile.getNumComponents(); + } catch (Exception e) { + e.printStackTrace(); + } + } while (--numReps >= 0); + } + } +}