993N/A/*
2362N/A * Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved.
993N/A * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
993N/A *
993N/A * This code is free software; you can redistribute it and/or modify it
993N/A * under the terms of the GNU General Public License version 2 only, as
993N/A * published by the Free Software Foundation.
993N/A *
993N/A * This code is distributed in the hope that it will be useful, but WITHOUT
993N/A * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
993N/A * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
993N/A * version 2 for more details (a copy is included in the LICENSE file that
993N/A * accompanied this code).
993N/A *
993N/A * You should have received a copy of the GNU General Public License version
993N/A * 2 along with this work; if not, write to the Free Software Foundation,
993N/A * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
993N/A *
2362N/A * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
2362N/A * or visit www.oracle.com if you need additional information or have any
2362N/A * questions.
993N/A */
993N/A
993N/A/**
993N/A * @test
993N/A * @bug 6800846
993N/A *
993N/A * @summary Test verifes that images with short palette are rendered
993N/A * withourt artifacts.
993N/A *
993N/A * @run main DrawByteBinary
993N/A */
993N/A
993N/A
993N/Aimport java.awt.*;
993N/Aimport java.awt.color.*;
993N/Aimport java.awt.image.*;
993N/Aimport static java.awt.image.BufferedImage.*;
993N/A
993N/A
993N/Apublic class DrawByteBinary {
993N/A
993N/A public static void main(String args[]) {
993N/A int w = 100, h = 30;
993N/A int x = 10;
993N/A byte[] arr = {(byte)0xff, (byte)0x0, (byte)0x00};
993N/A
993N/A IndexColorModel newCM = new IndexColorModel(1, 2, arr, arr, arr);
993N/A BufferedImage orig = new BufferedImage(w, h, TYPE_BYTE_BINARY, newCM);
993N/A Graphics2D g2d = orig.createGraphics();
993N/A g2d.setColor(Color.white);
993N/A g2d.fillRect(0, 0, w, h);
993N/A g2d.setColor(Color.black);
993N/A g2d.drawLine(x, 0, x, h);
993N/A g2d.dispose();
993N/A
993N/A IndexColorModel origCM = (IndexColorModel)orig.getColorModel();
993N/A BufferedImage test = new BufferedImage(w, h, TYPE_BYTE_BINARY,origCM);
993N/A g2d = test.createGraphics();
993N/A g2d.drawImage(orig, 0, 0, null);
993N/A g2d.dispose();
993N/A
993N/A int y = h / 2;
993N/A
993N/A // we expect white color outside the line
993N/A if (test.getRGB(x - 1, y) != 0xffffffff) {
993N/A throw new RuntimeException("Invalid color outside the line.");
993N/A }
993N/A
993N/A // we expect black color on the line
993N/A if (test.getRGB(x, y) != 0xff000000) {
993N/A throw new RuntimeException("Invalid color on the line.");
993N/A }
993N/A }
993N/A}