jdk/test/java/awt/image/MultiResolutionImage/NSImageToMultiResolutionImageTest.java
author alexsch
Tue, 15 Sep 2015 15:31:34 +0400
changeset 32682 6f1200d8999d
parent 31448 1066345d2a8a
permissions -rw-r--r--
8029339: Custom MultiResolution image support on HiDPI displays Reviewed-by: flar, serb
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
23615
a0825e77bfad 8033534: [macosx] Get MultiResolution image from native system
alexsch
parents:
diff changeset
     1
/*
31448
1066345d2a8a 8076468: Add @modules to tests in jdk_desktop test group
yan
parents: 23666
diff changeset
     2
 * Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved.
23615
a0825e77bfad 8033534: [macosx] Get MultiResolution image from native system
alexsch
parents:
diff changeset
     3
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
a0825e77bfad 8033534: [macosx] Get MultiResolution image from native system
alexsch
parents:
diff changeset
     4
 *
a0825e77bfad 8033534: [macosx] Get MultiResolution image from native system
alexsch
parents:
diff changeset
     5
 * This code is free software; you can redistribute it and/or modify it
a0825e77bfad 8033534: [macosx] Get MultiResolution image from native system
alexsch
parents:
diff changeset
     6
 * under the terms of the GNU General Public License version 2 only, as
a0825e77bfad 8033534: [macosx] Get MultiResolution image from native system
alexsch
parents:
diff changeset
     7
 * published by the Free Software Foundation.
a0825e77bfad 8033534: [macosx] Get MultiResolution image from native system
alexsch
parents:
diff changeset
     8
 *
a0825e77bfad 8033534: [macosx] Get MultiResolution image from native system
alexsch
parents:
diff changeset
     9
 * This code is distributed in the hope that it will be useful, but WITHOUT
a0825e77bfad 8033534: [macosx] Get MultiResolution image from native system
alexsch
parents:
diff changeset
    10
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
a0825e77bfad 8033534: [macosx] Get MultiResolution image from native system
alexsch
parents:
diff changeset
    11
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
a0825e77bfad 8033534: [macosx] Get MultiResolution image from native system
alexsch
parents:
diff changeset
    12
 * version 2 for more details (a copy is included in the LICENSE file that
a0825e77bfad 8033534: [macosx] Get MultiResolution image from native system
alexsch
parents:
diff changeset
    13
 * accompanied this code).
a0825e77bfad 8033534: [macosx] Get MultiResolution image from native system
alexsch
parents:
diff changeset
    14
 *
a0825e77bfad 8033534: [macosx] Get MultiResolution image from native system
alexsch
parents:
diff changeset
    15
 * You should have received a copy of the GNU General Public License version
a0825e77bfad 8033534: [macosx] Get MultiResolution image from native system
alexsch
parents:
diff changeset
    16
 * 2 along with this work; if not, write to the Free Software Foundation,
a0825e77bfad 8033534: [macosx] Get MultiResolution image from native system
alexsch
parents:
diff changeset
    17
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
a0825e77bfad 8033534: [macosx] Get MultiResolution image from native system
alexsch
parents:
diff changeset
    18
 *
a0825e77bfad 8033534: [macosx] Get MultiResolution image from native system
alexsch
parents:
diff changeset
    19
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
a0825e77bfad 8033534: [macosx] Get MultiResolution image from native system
alexsch
parents:
diff changeset
    20
 * or visit www.oracle.com if you need additional information or have any
a0825e77bfad 8033534: [macosx] Get MultiResolution image from native system
alexsch
parents:
diff changeset
    21
 * questions.
a0825e77bfad 8033534: [macosx] Get MultiResolution image from native system
alexsch
parents:
diff changeset
    22
 */
a0825e77bfad 8033534: [macosx] Get MultiResolution image from native system
alexsch
parents:
diff changeset
    23
a0825e77bfad 8033534: [macosx] Get MultiResolution image from native system
alexsch
parents:
diff changeset
    24
import java.awt.Image;
a0825e77bfad 8033534: [macosx] Get MultiResolution image from native system
alexsch
parents:
diff changeset
    25
import java.awt.Toolkit;
32682
6f1200d8999d 8029339: Custom MultiResolution image support on HiDPI displays
alexsch
parents: 31448
diff changeset
    26
import java.awt.image.MultiResolutionImage;
6f1200d8999d 8029339: Custom MultiResolution image support on HiDPI displays
alexsch
parents: 31448
diff changeset
    27
import jdk.testlibrary.OSInfo;
6f1200d8999d 8029339: Custom MultiResolution image support on HiDPI displays
alexsch
parents: 31448
diff changeset
    28
23615
a0825e77bfad 8033534: [macosx] Get MultiResolution image from native system
alexsch
parents:
diff changeset
    29
/*
a0825e77bfad 8033534: [macosx] Get MultiResolution image from native system
alexsch
parents:
diff changeset
    30
 * @test
23666
a54bf43b5ba9 8035069: [macosx] Loading resolution variants by demand
alexsch
parents: 23615
diff changeset
    31
 * @bug 8033534 8035069
23615
a0825e77bfad 8033534: [macosx] Get MultiResolution image from native system
alexsch
parents:
diff changeset
    32
 * @summary [macosx] Get MultiResolution image from native system
a0825e77bfad 8033534: [macosx] Get MultiResolution image from native system
alexsch
parents:
diff changeset
    33
 * @author Alexander Scherbatiy
32682
6f1200d8999d 8029339: Custom MultiResolution image support on HiDPI displays
alexsch
parents: 31448
diff changeset
    34
 * @modules java.desktop/sun.awt.image
6f1200d8999d 8029339: Custom MultiResolution image support on HiDPI displays
alexsch
parents: 31448
diff changeset
    35
 * @library /lib/testlibrary
6f1200d8999d 8029339: Custom MultiResolution image support on HiDPI displays
alexsch
parents: 31448
diff changeset
    36
 * @build jdk.testlibrary.OSInfo
23615
a0825e77bfad 8033534: [macosx] Get MultiResolution image from native system
alexsch
parents:
diff changeset
    37
 * @run main NSImageToMultiResolutionImageTest
a0825e77bfad 8033534: [macosx] Get MultiResolution image from native system
alexsch
parents:
diff changeset
    38
 */
a0825e77bfad 8033534: [macosx] Get MultiResolution image from native system
alexsch
parents:
diff changeset
    39
a0825e77bfad 8033534: [macosx] Get MultiResolution image from native system
alexsch
parents:
diff changeset
    40
public class NSImageToMultiResolutionImageTest {
a0825e77bfad 8033534: [macosx] Get MultiResolution image from native system
alexsch
parents:
diff changeset
    41
a0825e77bfad 8033534: [macosx] Get MultiResolution image from native system
alexsch
parents:
diff changeset
    42
    public static void main(String[] args) throws Exception {
a0825e77bfad 8033534: [macosx] Get MultiResolution image from native system
alexsch
parents:
diff changeset
    43
a0825e77bfad 8033534: [macosx] Get MultiResolution image from native system
alexsch
parents:
diff changeset
    44
        if (OSInfo.getOSType() != OSInfo.OSType.MACOSX) {
a0825e77bfad 8033534: [macosx] Get MultiResolution image from native system
alexsch
parents:
diff changeset
    45
            return;
a0825e77bfad 8033534: [macosx] Get MultiResolution image from native system
alexsch
parents:
diff changeset
    46
        }
a0825e77bfad 8033534: [macosx] Get MultiResolution image from native system
alexsch
parents:
diff changeset
    47
a0825e77bfad 8033534: [macosx] Get MultiResolution image from native system
alexsch
parents:
diff changeset
    48
        String icon = "NSImage://NSApplicationIcon";
a0825e77bfad 8033534: [macosx] Get MultiResolution image from native system
alexsch
parents:
diff changeset
    49
        final Image image = Toolkit.getDefaultToolkit().getImage(icon);
a0825e77bfad 8033534: [macosx] Get MultiResolution image from native system
alexsch
parents:
diff changeset
    50
a0825e77bfad 8033534: [macosx] Get MultiResolution image from native system
alexsch
parents:
diff changeset
    51
        if (!(image instanceof MultiResolutionImage)) {
a0825e77bfad 8033534: [macosx] Get MultiResolution image from native system
alexsch
parents:
diff changeset
    52
            throw new RuntimeException("Icon does not have resolution variants!");
a0825e77bfad 8033534: [macosx] Get MultiResolution image from native system
alexsch
parents:
diff changeset
    53
        }
a0825e77bfad 8033534: [macosx] Get MultiResolution image from native system
alexsch
parents:
diff changeset
    54
a0825e77bfad 8033534: [macosx] Get MultiResolution image from native system
alexsch
parents:
diff changeset
    55
        MultiResolutionImage multiResolutionImage = (MultiResolutionImage) image;
a0825e77bfad 8033534: [macosx] Get MultiResolution image from native system
alexsch
parents:
diff changeset
    56
a0825e77bfad 8033534: [macosx] Get MultiResolution image from native system
alexsch
parents:
diff changeset
    57
        int width = 0;
a0825e77bfad 8033534: [macosx] Get MultiResolution image from native system
alexsch
parents:
diff changeset
    58
        int height = 0;
a0825e77bfad 8033534: [macosx] Get MultiResolution image from native system
alexsch
parents:
diff changeset
    59
a0825e77bfad 8033534: [macosx] Get MultiResolution image from native system
alexsch
parents:
diff changeset
    60
        for (Image resolutionVariant : multiResolutionImage.getResolutionVariants()) {
a0825e77bfad 8033534: [macosx] Get MultiResolution image from native system
alexsch
parents:
diff changeset
    61
            int rvWidth = resolutionVariant.getWidth(null);
a0825e77bfad 8033534: [macosx] Get MultiResolution image from native system
alexsch
parents:
diff changeset
    62
            int rvHeight = resolutionVariant.getHeight(null);
a0825e77bfad 8033534: [macosx] Get MultiResolution image from native system
alexsch
parents:
diff changeset
    63
            if (rvWidth < width || rvHeight < height) {
a0825e77bfad 8033534: [macosx] Get MultiResolution image from native system
alexsch
parents:
diff changeset
    64
                throw new RuntimeException("Resolution variants are not sorted!");
a0825e77bfad 8033534: [macosx] Get MultiResolution image from native system
alexsch
parents:
diff changeset
    65
            }
a0825e77bfad 8033534: [macosx] Get MultiResolution image from native system
alexsch
parents:
diff changeset
    66
            width = rvWidth;
a0825e77bfad 8033534: [macosx] Get MultiResolution image from native system
alexsch
parents:
diff changeset
    67
            height = rvHeight;
a0825e77bfad 8033534: [macosx] Get MultiResolution image from native system
alexsch
parents:
diff changeset
    68
        }
a0825e77bfad 8033534: [macosx] Get MultiResolution image from native system
alexsch
parents:
diff changeset
    69
    }
a0825e77bfad 8033534: [macosx] Get MultiResolution image from native system
alexsch
parents:
diff changeset
    70
}