jdk/src/java.desktop/share/classes/sun/awt/image/MultiResolutionToolkitImage.java
changeset 40707 8b0d53520355
parent 38413 d9e49b45fd7d
equal deleted inserted replaced
40706:19e735c76e8c 40707:8b0d53520355
    27 import java.awt.Image;
    27 import java.awt.Image;
    28 import java.awt.image.ImageObserver;
    28 import java.awt.image.ImageObserver;
    29 import java.awt.image.MultiResolutionImage;
    29 import java.awt.image.MultiResolutionImage;
    30 import java.util.Arrays;
    30 import java.util.Arrays;
    31 import java.util.List;
    31 import java.util.List;
       
    32 import java.util.function.Function;
    32 import sun.awt.SoftCache;
    33 import sun.awt.SoftCache;
    33 
    34 
    34 public class MultiResolutionToolkitImage extends ToolkitImage implements MultiResolutionImage {
    35 public class MultiResolutionToolkitImage extends ToolkitImage implements MultiResolutionImage {
    35 
    36 
    36     Image resolutionVariant;
    37     Image resolutionVariant;
    43     @Override
    44     @Override
    44     public Image getResolutionVariant(double destWidth, double destHeight) {
    45     public Image getResolutionVariant(double destWidth, double destHeight) {
    45         checkSize(destWidth, destHeight);
    46         checkSize(destWidth, destHeight);
    46         return ((destWidth <= getWidth() && destHeight <= getHeight()))
    47         return ((destWidth <= getWidth() && destHeight <= getHeight()))
    47                 ? this : resolutionVariant;
    48                 ? this : resolutionVariant;
       
    49     }
       
    50 
       
    51     public static Image map(MultiResolutionToolkitImage mrImage,
       
    52                             Function<Image, Image> mapper) {
       
    53         Image baseImage = mapper.apply(mrImage);
       
    54         Image rvImage = mapper.apply(mrImage.resolutionVariant);
       
    55         return new MultiResolutionToolkitImage(baseImage, rvImage);
    48     }
    56     }
    49 
    57 
    50     private static void checkSize(double width, double height) {
    58     private static void checkSize(double width, double height) {
    51         if (width <= 0 || height <= 0) {
    59         if (width <= 0 || height <= 0) {
    52             throw new IllegalArgumentException(String.format(
    60             throw new IllegalArgumentException(String.format(