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

Print this page

        

*** 27,40 **** --- 27,44 ---- import java.awt.*; import java.awt.geom.Dimension2D; import java.awt.image.*; + import java.util.Arrays; + import java.util.List; + import sun.awt.image.SunWritableRaster; public class CImage extends CFRetainedResource { private static native long nativeCreateNSImageFromArray(int[] buffer, int w, int h); + private static native long nativeCreateNSImageFromArrays(int[][] buffers, int w[], int h[]); private static native long nativeCreateNSImageFromFileContents(String file); private static native long nativeCreateNSImageOfFileFromLaunchServices(String file); private static native long nativeCreateNSImageFromImageName(String name); private static native long nativeCreateNSImageFromIconSelector(int selector); private static native void nativeCopyNSImageIntoArray(long image, int[] buffer, int w, int h);
*** 91,102 **** public Image createImageFromName(final String name) { return createImageUsingNativeSize(nativeCreateNSImageFromImageName(name)); } ! // This is used to create a CImage from a Image ! public CImage createFromImage(final Image image) { if (image == null) return null; MediaTracker mt = new MediaTracker(new Label()); final int id = 0; mt.addImage(image, id); --- 95,105 ---- public Image createImageFromName(final String name) { return createImageUsingNativeSize(nativeCreateNSImageFromImageName(name)); } ! private static int[] imageToArray(Image image) { if (image == null) return null; MediaTracker mt = new MediaTracker(new Label()); final int id = 0; mt.addImage(image, id);
*** 115,126 **** BufferedImage bimg = new BufferedImage(w, h, BufferedImage.TYPE_INT_ARGB_PRE); Graphics2D g2 = bimg.createGraphics(); g2.setComposite(AlphaComposite.Src); g2.drawImage(image, 0, 0, null); g2.dispose(); ! int[] buffer = ((DataBufferInt)bimg.getRaster().getDataBuffer()).getData(); ! return new CImage(nativeCreateNSImageFromArray(buffer, w, h)); } static int getSelectorAsInt(final String fromString) { final byte[] b = fromString.getBytes(); final int len = Math.min(b.length, 4); --- 118,171 ---- BufferedImage bimg = new BufferedImage(w, h, BufferedImage.TYPE_INT_ARGB_PRE); Graphics2D g2 = bimg.createGraphics(); g2.setComposite(AlphaComposite.Src); g2.drawImage(image, 0, 0, null); g2.dispose(); ! return ((DataBufferInt)bimg.getRaster().getDataBuffer()).getData(); ! } ! ! // This is used to create a CImage from a Image ! public CImage createFromImage(final Image image) { ! int[] buffer = imageToArray(image); ! if (buffer == null) { ! return null; ! } ! return new CImage(nativeCreateNSImageFromArray(buffer, image.getWidth(null), image.getHeight(null))); ! } ! ! public CImage createFromImages(List<Image> images) { ! if (images == null || images.isEmpty()) { ! return null; ! } ! ! int num = images.size(); ! ! int[][] buffers = new int[num][]; ! int[] w = new int[num]; ! int[] h = new int[num]; ! ! num = 0; ! ! for (Image img : images) { ! buffers[num] = imageToArray(img); ! if (buffers[num] == null) { ! // Unable to process the image ! continue; ! } ! w[num] = img.getWidth(null); ! h[num] = img.getHeight(null); ! num++; ! } ! ! if (num == 0) { ! return null; ! } ! ! return new CImage(nativeCreateNSImageFromArrays( ! Arrays.copyOf(buffers, num), ! Arrays.copyOf(w, num), ! Arrays.copyOf(h, num))); } static int getSelectorAsInt(final String fromString) { final byte[] b = fromString.getBytes(); final int len = Math.min(b.length, 4);