--- /dev/null 2012-12-21 21:02:31.000000000 +0400 +++ new/src/share/demo/java2d/J2DBench/src/j2dbench/tests/cmm/CMMTests.java 2012-12-21 21:02:30.716301700 +0400 @@ -0,0 +1,154 @@ +/* + * 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.Option; +import j2dbench.Result; +import j2dbench.Test; +import j2dbench.TestEnvironment; +import java.awt.color.ColorSpace; +import java.awt.color.ICC_ColorSpace; +import java.awt.color.ICC_Profile; +import java.io.IOException; +import java.io.InputStream; + +public class CMMTests extends Test { + + protected static Group cmmRoot; + protected static Group cmmOptRoot; + protected static Option csList; + protected static Option usePlatfromProfiles; + + public static void init() { + cmmRoot = new Group("cmm", "Color Management Benchmarks"); + cmmRoot.setTabbed(); + + cmmOptRoot = new Group(cmmRoot, "opts", "General Options"); + + /* + + usePlatfromProfiles = + new Option.Enable(cmmOptRoot, "csPlatfrom", + "Use Platfrom Profiles", false); + */ + int[] colorspaces = new int[] { + ColorSpace.CS_sRGB, + ColorSpace.CS_GRAY, + ColorSpace.CS_LINEAR_RGB, + ColorSpace.CS_CIEXYZ + }; + + String[] csNames = new String[]{ + "CS_sRGB", + "CS_GRAY", + "CS_LINEAR_RGB", + "CS_CIEXYZ" + }; + + csList = new Option.IntList(cmmOptRoot, + "profiles", "Color Profiles", + colorspaces, csNames, csNames, 0x8); + + ColorConversionTests.init(); + ProfileTests.init(); + } + + protected static ColorSpace getColorSpace(TestEnvironment env) { + ColorSpace cs; + Boolean usePlatfrom = true; //(Boolean)env.getModifier(usePlatfromProfiles); + + int cs_code = env.getIntValue(csList); + if (usePlatfrom) { + cs = ColorSpace.getInstance(cs_code); + } else { + String resource = "profiles/"; + switch (cs_code) { + case ColorSpace.CS_CIEXYZ: + resource += "CIEXYZ.pf"; + break; + case ColorSpace.CS_GRAY: + resource += "GRAY.pf"; + break; + case ColorSpace.CS_LINEAR_RGB: + resource += "LINEAR_RGB.pf"; + break; + case ColorSpace.CS_PYCC: + resource += "PYCC.pf"; + break; + case ColorSpace.CS_sRGB: + resource += "sRGB.pf"; + break; + default: + throw new RuntimeException("Unknown color space: " + cs_code); + } + + try { + InputStream is = CMMTests.class.getResourceAsStream(resource); + ICC_Profile p = ICC_Profile.getInstance(is); + + cs = new ICC_ColorSpace(p); + } catch (IOException e) { + throw new RuntimeException("Unable load profile from resource " + resource, e); + } + } + return cs; + } + + protected CMMTests(Group parent, String nodeName, String description) { + super(parent, nodeName, description); + addDependencies(cmmOptRoot, true); + } + + @Override + public Object initTest(TestEnvironment te, Result result) { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public void runTest(Object o, int i) { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public void cleanupTest(TestEnvironment te, Object o) { + throw new UnsupportedOperationException("Not supported yet."); + } +}