src/macosx/classes/sun/lwawt/macosx/CImage.java

Print this page

        

*** 30,40 **** import java.awt.image.*; import java.util.Arrays; import java.util.List; import sun.awt.image.MultiResolutionImage; ! import sun.awt.image.MultiResolutionBufferedImage; import sun.awt.image.SunWritableRaster; public class CImage extends CFRetainedResource { private static native long nativeCreateNSImageFromArray(int[] buffer, int w, int h); --- 30,40 ---- import java.awt.image.*; import java.util.Arrays; import java.util.List; import sun.awt.image.MultiResolutionImage; ! import sun.awt.image.MultiResolutionCachedImage; import sun.awt.image.SunWritableRaster; public class CImage extends CFRetainedResource { private static native long nativeCreateNSImageFromArray(int[] buffer, int w, int h);
*** 60,99 **** Creator() { } // This is used to create a CImage with an NSImage pointer. It MUST be a CFRetained // NSImage, and the CImage takes ownership of the non-GC retain. If callers need the // NSImage themselves, they MUST call retain on the NSImage themselves. ! public BufferedImage createImageUsingNativeSize(final long image) { if (image == 0) return null; final Dimension2D size = nativeGetNSImageSize(image); return createBufferedImage(image, size.getWidth(), size.getHeight()); } // the width and height passed in as a parameter could differ than the width and the height of the NSImage (image), in that case, the image will be scaled ! BufferedImage createBufferedImage(long image, double width, double height) { if (image == 0) throw new Error("Unable to instantiate CImage with null native image reference."); return createImageWithSize(image, width, height); } ! public BufferedImage createImageWithSize(final long image, final double width, final double height) { final CImage img = new CImage(image); img.resize(width, height); return img.toImage(); } // This is used to create a CImage that represents the icon of the given file. ! public BufferedImage createImageOfFile(final String file, final int width, final int height) { return createBufferedImage(nativeCreateNSImageOfFileFromLaunchServices(file), width, height); } ! public BufferedImage createImageFromFile(final String file, final double width, final double height) { final long image = nativeCreateNSImageFromFileContents(file); nativeSetNSImageSize(image, width, height); return createBufferedImage(image, width, height); } ! public BufferedImage createSystemImageFromSelector(final String iconSelector, final int width, final int height) { return createBufferedImage(nativeCreateNSImageFromIconSelector(getSelectorAsInt(iconSelector)), width, height); } public Image createImageFromName(final String name, final int width, final int height) { return createBufferedImage(nativeCreateNSImageFromImageName(name), width, height); --- 60,99 ---- Creator() { } // This is used to create a CImage with an NSImage pointer. It MUST be a CFRetained // NSImage, and the CImage takes ownership of the non-GC retain. If callers need the // NSImage themselves, they MUST call retain on the NSImage themselves. ! public Image createImageUsingNativeSize(final long image) { if (image == 0) return null; final Dimension2D size = nativeGetNSImageSize(image); return createBufferedImage(image, size.getWidth(), size.getHeight()); } // the width and height passed in as a parameter could differ than the width and the height of the NSImage (image), in that case, the image will be scaled ! Image createBufferedImage(long image, double width, double height) { if (image == 0) throw new Error("Unable to instantiate CImage with null native image reference."); return createImageWithSize(image, width, height); } ! public Image createImageWithSize(final long image, final double width, final double height) { final CImage img = new CImage(image); img.resize(width, height); return img.toImage(); } // This is used to create a CImage that represents the icon of the given file. ! public Image createImageOfFile(final String file, final int width, final int height) { return createBufferedImage(nativeCreateNSImageOfFileFromLaunchServices(file), width, height); } ! public Image createImageFromFile(final String file, final double width, final double height) { final long image = nativeCreateNSImageFromFileContents(file); nativeSetNSImageSize(image, width, height); return createBufferedImage(image, width, height); } ! public Image createSystemImageFromSelector(final String iconSelector, final int width, final int height) { return createBufferedImage(nativeCreateNSImageFromIconSelector(getSelectorAsInt(iconSelector)), width, height); } public Image createImageFromName(final String name, final int width, final int height) { return createBufferedImage(nativeCreateNSImageFromImageName(name), width, height);
*** 230,255 **** CImage(long nsImagePtr) { super(nsImagePtr, true); } /** @return A MultiResolution image created from nsImagePtr, or null. */ ! private BufferedImage toImage() { if (ptr == 0) return null; final Dimension2D size = nativeGetNSImageSize(ptr); final int w = (int)size.getWidth(); final int h = (int)size.getHeight(); Dimension2D[] sizes = nativeGetNSImageRepresentationSizes(ptr, size.getWidth(), size.getHeight()); ! BufferedImage baseImage = toImage(w, h, w, h); ! ! return sizes == null || sizes.length < 2 ? baseImage ! : new MultiResolutionBufferedImage(baseImage, sizes, ! (width, height) -> toImage(w, h, width, height)); } private BufferedImage toImage(int srcWidth, int srcHeight, int dstWidth, int dstHeight) { final BufferedImage bimg = new BufferedImage(dstWidth, dstHeight, BufferedImage.TYPE_INT_ARGB_PRE); final DataBufferInt dbi = (DataBufferInt)bimg.getRaster().getDataBuffer(); --- 230,255 ---- CImage(long nsImagePtr) { super(nsImagePtr, true); } /** @return A MultiResolution image created from nsImagePtr, or null. */ ! private Image toImage() { if (ptr == 0) return null; final Dimension2D size = nativeGetNSImageSize(ptr); final int w = (int)size.getWidth(); final int h = (int)size.getHeight(); Dimension2D[] sizes = nativeGetNSImageRepresentationSizes(ptr, size.getWidth(), size.getHeight()); ! return sizes == null || sizes.length < 2 ? ! new MultiResolutionCachedImage(w, h, (width, height) ! -> toImage(w, h, width, height)) ! : new MultiResolutionCachedImage(w, h, sizes, (width, height) ! -> toImage(w, h, width, height)); } private BufferedImage toImage(int srcWidth, int srcHeight, int dstWidth, int dstHeight) { final BufferedImage bimg = new BufferedImage(dstWidth, dstHeight, BufferedImage.TYPE_INT_ARGB_PRE); final DataBufferInt dbi = (DataBufferInt)bimg.getRaster().getDataBuffer();