--- 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);
+ }
+ }
+}