RescaleAlphaTest.java revision 12628:8b318cc1e0ba
1/*
2 * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation.
8 *
9 * This code is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
12 * version 2 for more details (a copy is included in the LICENSE file that
13 * accompanied this code).
14 *
15 * You should have received a copy of the GNU General Public License version
16 * 2 along with this work; if not, write to the Free Software Foundation,
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18 *
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 */
23/**
24 * @test
25 * @bug 8080287
26 * @run RescaleAlphaTest
27 * @summary RescaleOp with scaleFactor/alpha should copy alpha to destination
28 * channel
29 */
30import java.awt.Graphics2D;
31import java.awt.image.BufferedImage;
32import java.awt.image.RescaleOp;
33import java.awt.Color;
34import java.awt.Frame;
35import java.io.IOException;
36
37public class RescaleAlphaTest {
38
39    BufferedImage bimg = null, bimg1;
40    int w = 10, h = 10;
41    float scaleFactor = 0.5f;
42    float offset = 0.0f;
43
44    public static void main(String[] args) throws Exception {
45        RescaleAlphaTest test = new RescaleAlphaTest();
46        test.startTest();
47    }
48
49    private void startTest() throws Exception {
50
51        // Test with source image with alpha channel
52
53        bimg = new BufferedImage(w, h, BufferedImage.TYPE_INT_ARGB);
54        Graphics2D g2d = bimg.createGraphics();
55        g2d.setColor(Color.GREEN);
56        g2d.fillRect(0, 0, w, h);
57
58        RescaleOp res = new RescaleOp(scaleFactor, offset, null);
59        bimg1 = res.filter(bimg, null);
60
61        // check if destination image has alpha channel copied from src
62        checkForAlpha(bimg1);
63
64        // Test with source image without alpha channel
65        bimg = new BufferedImage(w, h, BufferedImage.TYPE_INT_RGB);
66        g2d = bimg.createGraphics();
67        g2d.setColor(Color.GREEN);
68        g2d.fillRect(0, 0, w, h);
69
70
71        res = new RescaleOp(scaleFactor, offset, null);
72
73        // Create destination image with alpha channel
74        bimg1 = new BufferedImage(w, h, BufferedImage.TYPE_INT_ARGB);
75        bimg1 = res.filter(bimg, bimg1);
76
77        // check if filtered destination image has alpha channel
78        checkForAlpha(bimg1);
79
80    }
81
82    private void checkForAlpha(BufferedImage bi) throws IOException {
83        int argb = bi.getRGB(w/2, h/2);
84        if ((argb >>> 24) != 255) {
85            throw new
86            RuntimeException("Wrong alpha in destination image.RescaleOp with alpha failed.");
87        }
88    }
89}
90