1 /* 2 * @test 3 * @bug 4614845 4 * @summary Test drawImage(bgcolor) gets correct RGB from SystemColor objects. 5 * @run main SystemBgColorTest 6 */ 7 8 import java.awt.*; 9 import java.awt.image.*; 10 11 public class SystemBgColorTest { 12 public static final int TESTW = 10; 13 public static final int TESTH = 10; 14 15 static SystemColor systemColorObjects [] = { 16 SystemColor.desktop, 17 SystemColor.activeCaption, 18 SystemColor.activeCaptionText, 19 SystemColor.activeCaptionBorder, 20 SystemColor.inactiveCaption, 21 SystemColor.inactiveCaptionText, 22 SystemColor.inactiveCaptionBorder, 23 SystemColor.window, 24 SystemColor.windowBorder, 25 SystemColor.windowText, 26 SystemColor.menu, 27 SystemColor.menuText, 28 SystemColor.text, 29 SystemColor.textText, 30 SystemColor.textHighlight, 31 SystemColor.textHighlightText, 32 SystemColor.textInactiveText, 33 SystemColor.control, 34 SystemColor.controlText, 35 SystemColor.controlHighlight, 36 SystemColor.controlLtHighlight, 37 SystemColor.controlShadow, 38 SystemColor.controlDkShadow, 39 SystemColor.scrollbar, 40 SystemColor.info, 41 SystemColor.infoText 42 }; 43 44 static boolean counterrors; 45 static int errcount; 46 47 public static void error(String problem) { 48 if (counterrors) { 49 errcount++; 50 } else { 51 throw new RuntimeException(problem); 52 } 53 } 54 55 public static void main(String argv[]) { 56 counterrors = (argv.length > 0); 57 test(BufferedImage.TYPE_INT_ARGB); 58 test(BufferedImage.TYPE_INT_RGB); 59 if (errcount > 0) { 60 throw new RuntimeException(errcount+" errors"); 61 } 62 System.exit(0); // For 1.3 and earlier VMs... 63 } 64 65 static int cmap[] = { 66 0x00000000, 67 0xffffffff, 68 }; 69 70 public static void test(int dsttype) { 71 BufferedImage src = 72 new BufferedImage(TESTW, TESTH, BufferedImage.TYPE_INT_ARGB); 73 test(src, dsttype); 74 IndexColorModel icm = new IndexColorModel(8, 2, cmap, 0, true, 0, 75 DataBuffer.TYPE_BYTE); 76 src = new BufferedImage(TESTW, TESTH, 77 BufferedImage.TYPE_BYTE_INDEXED, icm); 78 test(src, dsttype); 79 } 80 81 public static void test(Image src, int dsttype) { 82 BufferedImage dst = 83 new BufferedImage(TESTW, TESTH, dsttype); 84 for (int i = 0; i < systemColorObjects.length; i++) { 85 test(src, dst, systemColorObjects[i]); 86 } 87 } 88 89 public static void test(Image src, BufferedImage dst, Color bg) { 90 Graphics g = dst.getGraphics(); 91 g.setColor(Color.white); 92 g.fillRect(0, 0, TESTW, TESTH); 93 g.drawImage(src, 0, 0, bg, null); 94 if (dst.getRGB(0, 0) != bg.getRGB()) { 95 error("bad bg pixel for: "+bg); 96 } 97 } 98 }