1 /* 2 * Copyright (c) 2012, 2014, Oracle and/or its affiliates. All rights reserved. 3 * 4 * Redistribution and use in source and binary forms, with or without 5 * modification, are permitted provided that the following conditions 6 * are met: 7 * 8 * - Redistributions of source code must retain the above copyright 9 * notice, this list of conditions and the following disclaimer. 10 * 11 * - Redistributions in binary form must reproduce the above copyright 12 * notice, this list of conditions and the following disclaimer in the 13 * documentation and/or other materials provided with the distribution. 14 * 15 * - Neither the name of Oracle nor the names of its 16 * contributors may be used to endorse or promote products derived 17 * from this software without specific prior written permission. 18 * 19 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS 20 * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, 21 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 22 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR 23 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 24 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 25 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 26 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 27 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 28 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 29 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 30 */ 31 32 /* 33 * This source code is provided to illustrate the usage of a given feature 34 * or technique and has been deliberately simplified. Additional steps 35 * required for a production-quality application, such as security checks, 36 * input validation and proper error handling, might not be present in 37 * this sample code. 38 */ 39 40 package j2dbench.tests.cmm; 41 42 import java.awt.color.ColorSpace; 43 import java.awt.color.ICC_ColorSpace; 44 import java.awt.color.ICC_Profile; 45 import java.io.IOException; 46 import java.io.InputStream; 47 48 import j2dbench.Group; 49 import j2dbench.Option; 50 import j2dbench.Result; 51 import j2dbench.Test; 52 import j2dbench.TestEnvironment; 53 54 public class CMMTests extends Test { 55 56 protected static Group cmmRoot; 57 protected static Group cmmOptRoot; 58 protected static Option csList; 59 protected static Option usePlatformProfiles; 60 init()61 public static void init() { 62 cmmRoot = new Group("cmm", "Color Management Benchmarks"); 63 cmmRoot.setTabbed(); 64 65 cmmOptRoot = new Group(cmmRoot, "opts", "General Options"); 66 67 /* 68 usePlatformProfiles = 69 new Option.Enable(cmmOptRoot, "csPlatform", 70 "Use Platform Profiles", false); 71 */ 72 int[] colorspaces = new int[] { 73 ColorSpace.CS_sRGB, 74 ColorSpace.CS_GRAY, 75 ColorSpace.CS_LINEAR_RGB, 76 ColorSpace.CS_CIEXYZ 77 }; 78 79 String[] csNames = new String[]{ 80 "CS_sRGB", 81 "CS_GRAY", 82 "CS_LINEAR_RGB", 83 "CS_CIEXYZ" 84 }; 85 86 csList = new Option.IntList(cmmOptRoot, 87 "profiles", "Color Profiles", 88 colorspaces, csNames, csNames, 0x8); 89 90 ColorConversionTests.init(); 91 ProfileTests.init(); 92 } 93 getColorSpace(TestEnvironment env)94 protected static ColorSpace getColorSpace(TestEnvironment env) { 95 ColorSpace cs; 96 boolean usePlatform = true; //(Boolean)env.getModifier(usePlatformProfiles); 97 98 int cs_code = env.getIntValue(csList); 99 if (usePlatform) { 100 cs = ColorSpace.getInstance(cs_code); 101 } else { 102 String resource = "profiles/"; 103 switch (cs_code) { 104 case ColorSpace.CS_CIEXYZ: 105 resource += "CIEXYZ.pf"; 106 break; 107 case ColorSpace.CS_GRAY: 108 resource += "GRAY.pf"; 109 break; 110 case ColorSpace.CS_LINEAR_RGB: 111 resource += "LINEAR_RGB.pf"; 112 break; 113 case ColorSpace.CS_PYCC: 114 resource += "PYCC.pf"; 115 break; 116 case ColorSpace.CS_sRGB: 117 resource += "sRGB.pf"; 118 break; 119 default: 120 throw new RuntimeException("Unknown color space: " + cs_code); 121 } 122 123 try { 124 InputStream is = CMMTests.class.getResourceAsStream(resource); 125 ICC_Profile p = ICC_Profile.getInstance(is); 126 127 cs = new ICC_ColorSpace(p); 128 } catch (IOException e) { 129 throw new RuntimeException("Unable load profile from resource " + resource, e); 130 } 131 } 132 return cs; 133 } 134 CMMTests(Group parent, String nodeName, String description)135 protected CMMTests(Group parent, String nodeName, String description) { 136 super(parent, nodeName, description); 137 addDependencies(cmmOptRoot, true); 138 } 139 initTest(TestEnvironment te, Result result)140 public Object initTest(TestEnvironment te, Result result) { 141 throw new UnsupportedOperationException("Not supported yet."); 142 } 143 runTest(Object o, int i)144 public void runTest(Object o, int i) { 145 throw new UnsupportedOperationException("Not supported yet."); 146 } 147 cleanupTest(TestEnvironment te, Object o)148 public void cleanupTest(TestEnvironment te, Object o) { 149 throw new UnsupportedOperationException("Not supported yet."); 150 } 151 } 152