< prev index next >

src/java.desktop/share/classes/sun/awt/SunToolkit.java

Print this page

        

*** 35,45 **** import java.awt.image.ImageObserver; import java.awt.image.ImageProducer; import java.awt.image.Raster; import java.awt.peer.FramePeer; import java.awt.peer.KeyboardFocusManagerPeer; - import java.awt.peer.MouseInfoPeer; import java.awt.peer.SystemTrayPeer; import java.awt.peer.TrayIconPeer; import java.io.File; import java.io.IOException; import java.io.InputStream; --- 35,44 ----
*** 70,79 **** --- 69,81 ---- import sun.security.action.GetBooleanAction; import sun.security.action.GetPropertyAction; import sun.util.logging.PlatformLogger; import static java.awt.RenderingHints.*; + import java.awt.image.ResolutionVariantItem; + import java.util.Arrays; + import java.util.List; public abstract class SunToolkit extends Toolkit implements ComponentFactory, InputMethodSupport, KeyboardFocusManagerPeerProvider { // 8014718: logging has been removed from SunToolkit
*** 745,760 **** return createImage(new ByteArrayImageSource(data, offset, length)); } @Override public Image createImage(ImageProducer producer) { ! return new ToolkitImage(producer); } public static Image createImageWithResolutionVariant(Image image, ! Image resolutionVariant) { ! return new MultiResolutionToolkitImage(image, resolutionVariant); } @Override public int checkImage(Image img, int w, int h, ImageObserver o) { if (!(img instanceof ToolkitImage)) { --- 747,768 ---- return createImage(new ByteArrayImageSource(data, offset, length)); } @Override public Image createImage(ImageProducer producer) { ! return (producer.isMultiResolutionImageProducer()) ! ? new MultiResolutionToolkitImage(producer) ! : new ToolkitImage(producer); } public static Image createImageWithResolutionVariant(Image image, ! Image resolutionVariant) ! { ! return new MultiResolutionToolkitImage(Arrays.asList( ! new ResolutionVariantItem<>((ToolkitImage) image, 1, 1), ! new ResolutionVariantItem<>((ToolkitImage) resolutionVariant, 2, 2) ! )); } @Override public int checkImage(Image img, int w, int h, ImageObserver o) { if (!(img instanceof ToolkitImage)) {
*** 766,776 **** if (w == 0 || h == 0) { repbits = ImageObserver.ALLBITS; } else { repbits = tkimg.getImageRep().check(o); } ! return (tkimg.check(o) | repbits) & checkResolutionVariant(img, w, h, o); } @Override public boolean prepareImage(Image img, int w, int h, ImageObserver o) { if (w == 0 || h == 0) { --- 774,784 ---- if (w == 0 || h == 0) { repbits = ImageObserver.ALLBITS; } else { repbits = tkimg.getImageRep().check(o); } ! return (tkimg.check(o) | repbits) & checkResolutionVariants(img, w, h, o); } @Override public boolean prepareImage(Image img, int w, int h, ImageObserver o) { if (w == 0 || h == 0) {
*** 789,838 **** -1, -1, -1, -1); } return false; } ImageRepresentation ir = tkimg.getImageRep(); ! return ir.prepare(o) & prepareResolutionVariant(img, w, h, o); } ! private int checkResolutionVariant(Image img, int w, int h, ImageObserver o) { ! ToolkitImage rvImage = getResolutionVariant(img); ! int rvw = getRVSize(w); ! int rvh = getRVSize(h); ! // Ignore the resolution variant in case of error ! return (rvImage == null || rvImage.hasError()) ? 0xFFFF : ! checkImage(rvImage, rvw, rvh, MultiResolutionToolkitImage. ! getResolutionVariantObserver( ! img, o, w, h, rvw, rvh, true)); } ! private boolean prepareResolutionVariant(Image img, int w, int h, ! ImageObserver o) { ! ToolkitImage rvImage = getResolutionVariant(img); ! int rvw = getRVSize(w); ! int rvh = getRVSize(h); ! // Ignore the resolution variant in case of error ! return rvImage == null || rvImage.hasError() || prepareImage( ! rvImage, rvw, rvh, MultiResolutionToolkitImage.getResolutionVariantObserver( ! img, o, w, h, rvw, rvh, true)); ! } - private static int getRVSize(int size){ - return size == -1 ? -1 : 2 * size; } ! private static ToolkitImage getResolutionVariant(Image image) { ! if (image instanceof MultiResolutionToolkitImage) { ! Image resolutionVariant = ((MultiResolutionToolkitImage) image). ! getResolutionVariant(); ! if (resolutionVariant instanceof ToolkitImage) { ! return (ToolkitImage) resolutionVariant; } } ! return null; } protected static boolean imageCached(String fileName) { return fileImgCache.containsKey(fileName); } --- 797,857 ---- -1, -1, -1, -1); } return false; } ImageRepresentation ir = tkimg.getImageRep(); ! return ir.prepare(o) & prepareResolutionVariants(img, w, h, o); } ! private int checkResolutionVariants(Image img, int w, int h, ImageObserver o) { ! if (!(img instanceof MultiResolutionToolkitImage)) { ! return 0xFFFF; } ! List<ResolutionVariantItem<Image>> rvItems ! = ((MultiResolutionToolkitImage) img).getResolutionVariantItems(); ! return rvItems.stream().map(rvItem -> { ! double sx = rvItem.getScaleX(); ! double sy = rvItem.getScaleY(); ! return checkImage( ! rvItem.getValue(), ! getRVSize(w, sx), ! getRVSize(h, sy), MultiResolutionToolkitImage.getResolutionVariantObserver( ! img, o, sx, sy, true)); ! }).reduce(0xFFFF , (a, b) -> a & b); ! } ! private boolean prepareResolutionVariants(Image img, int w, int h, ! ImageObserver o) { ! ! if (!(img instanceof MultiResolutionToolkitImage)) { ! return true; } + + List<ResolutionVariantItem<Image>> rvItems + = ((MultiResolutionToolkitImage) img).getResolutionVariantItems(); + + return rvItems.stream().map(rvItem -> { + double sx = rvItem.getScaleX(); + double sy = rvItem.getScaleY(); + return prepareImage( + rvItem.getValue(), + getRVSize(w, sx), + getRVSize(h, sy), + MultiResolutionToolkitImage.getResolutionVariantObserver( + img, o, sx, sy, true)); + }).reduce(true, (a, b) -> a && b); } ! ! private static int getRVSize(int size, double scale) { ! return (size == -1) ! ? -1 ! : (scale == 1 ? size : (int) Math.round(scale * size)); } protected static boolean imageCached(String fileName) { return fileImgCache.containsKey(fileName); }
< prev index next >