Search in sources :

Example 51 with PaletteData

use of org.eclipse.swt.graphics.PaletteData in project eclipse.platform.swt by eclipse.

the class Test_org_eclipse_swt_graphics_PaletteData method test_getPixelLorg_eclipse_swt_graphics_RGB.

@Test
public void test_getPixelLorg_eclipse_swt_graphics_RGB() {
    // indexed palette tests
    RGB[] rgbs = { new RGB(0, 0, 0), new RGB(255, 255, 255), new RGB(50, 100, 150) };
    PaletteData data = new PaletteData(rgbs);
    try {
        data.getPixel(null);
        fail("No exception thrown for indexed palette with rgb == null");
    } catch (IllegalArgumentException e) {
    }
    try {
        data.getPixel(new RGB(0, 0, 1));
        fail("No exception thrown for rgb not found");
    } catch (IllegalArgumentException e) {
    }
    assertEquals(":a:", rgbs.length - 1, data.getPixel(rgbs[rgbs.length - 1]));
    // direct palette tests
    RGB rgb = new RGB(0x32, 0x64, 0x96);
    data = new PaletteData(0xff0000, 0x00ff00, 0x0000ff);
    try {
        data.getPixel(null);
        fail("No exception thrown for direct palette with rgb == null");
    } catch (IllegalArgumentException e) {
    }
    assertEquals(":b:", 0x326496, data.getPixel(rgb));
}
Also used : PaletteData(org.eclipse.swt.graphics.PaletteData) RGB(org.eclipse.swt.graphics.RGB) Test(org.junit.Test)

Example 52 with PaletteData

use of org.eclipse.swt.graphics.PaletteData in project eclipse.platform.swt by eclipse.

the class Test_org_eclipse_swt_graphics_PaletteData method test_Constructor$Lorg_eclipse_swt_graphics_RGB.

@Test
public void test_Constructor$Lorg_eclipse_swt_graphics_RGB() {
    try {
        new PaletteData((RGB[]) null);
        fail("No exception thrown for rgb == null");
    } catch (IllegalArgumentException e) {
    }
    PaletteData data = new PaletteData(new RGB[] {});
    assertFalse(":a:", data.isDirect);
    new PaletteData(new RGB[] { null, null });
    assertFalse(":b:", data.isDirect);
    new PaletteData(new RGB(0, 0, 0), new RGB(255, 255, 255));
    assertFalse(":c:", data.isDirect);
}
Also used : PaletteData(org.eclipse.swt.graphics.PaletteData) RGB(org.eclipse.swt.graphics.RGB) Test(org.junit.Test)

Example 53 with PaletteData

use of org.eclipse.swt.graphics.PaletteData in project org.csstudio.display.builder by kasemir.

the class ImageConverter method convertToSWT.

/**
 * @param bufferedImage AWT image
 *  @return SWT image
 */
public static ImageData convertToSWT(final BufferedImage bufferedImage) {
    // From http://git.eclipse.org/c/platform/eclipse.platform.swt.git/tree/examples/org.eclipse.swt.snippets/src/org/eclipse/swt/snippets/Snippet156.java
    if (bufferedImage.getColorModel() instanceof DirectColorModel) {
        DirectColorModel colorModel = (DirectColorModel) bufferedImage.getColorModel();
        PaletteData palette = new PaletteData(colorModel.getRedMask(), colorModel.getGreenMask(), colorModel.getBlueMask());
        ImageData data = new ImageData(bufferedImage.getWidth(), bufferedImage.getHeight(), colorModel.getPixelSize(), palette);
        for (int y = 0; y < data.height; y++) for (int x = 0; x < data.width; x++) {
            int rgb = bufferedImage.getRGB(x, y);
            int pixel = palette.getPixel(new RGB((rgb >> 16) & 0xFF, (rgb >> 8) & 0xFF, rgb & 0xFF));
            data.setPixel(x, y, pixel);
            if (colorModel.hasAlpha())
                data.setAlpha(x, y, (rgb >> 24) & 0xFF);
        }
        return data;
    } else if (bufferedImage.getColorModel() instanceof IndexColorModel) {
        IndexColorModel colorModel = (IndexColorModel) bufferedImage.getColorModel();
        int size = colorModel.getMapSize();
        byte[] reds = new byte[size];
        byte[] greens = new byte[size];
        byte[] blues = new byte[size];
        colorModel.getReds(reds);
        colorModel.getGreens(greens);
        colorModel.getBlues(blues);
        RGB[] rgbs = new RGB[size];
        for (int i = 0; i < rgbs.length; i++) rgbs[i] = new RGB(reds[i] & 0xFF, greens[i] & 0xFF, blues[i] & 0xFF);
        PaletteData palette = new PaletteData(rgbs);
        ImageData data = new ImageData(bufferedImage.getWidth(), bufferedImage.getHeight(), colorModel.getPixelSize(), palette);
        data.transparentPixel = colorModel.getTransparentPixel();
        WritableRaster raster = bufferedImage.getRaster();
        int[] pixelArray = new int[1];
        for (int y = 0; y < data.height; y++) for (int x = 0; x < data.width; x++) {
            raster.getPixel(x, y, pixelArray);
            data.setPixel(x, y, pixelArray[0]);
        }
        return data;
    }
    return null;
}
Also used : PaletteData(org.eclipse.swt.graphics.PaletteData) ImageData(org.eclipse.swt.graphics.ImageData) WritableRaster(java.awt.image.WritableRaster) DirectColorModel(java.awt.image.DirectColorModel) RGB(org.eclipse.swt.graphics.RGB) IndexColorModel(java.awt.image.IndexColorModel)

Example 54 with PaletteData

use of org.eclipse.swt.graphics.PaletteData in project nebula.widgets.nattable by eclipse.

the class FillHandleCursorAction method run.

@Override
public void run(NatTable natTable, MouseEvent event) {
    if (this.fillHandleCursor == null) {
        PaletteData paletteData = new PaletteData(new RGB[] { new RGB(0, 0, 0), new RGB(255, 255, 255) });
        ImageData sourceData = new ImageData(16, 16, 1, paletteData);
        ImageData maskData = new ImageData(16, 16, 1, paletteData);
        byte[] cursorSource = new byte[] { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 };
        byte[] cursorMask = new byte[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
        sourceData.setPixels(0, 0, 256, cursorSource, 0);
        maskData.setPixels(0, 0, 256, cursorMask, 0);
        this.fillHandleCursor = new Cursor(Display.getDefault(), sourceData, maskData, 7, 7);
        natTable.addDisposeListener(new DisposeListener() {

            @Override
            public void widgetDisposed(DisposeEvent e) {
                FillHandleCursorAction.this.fillHandleCursor.dispose();
            }
        });
    }
    natTable.setCursor(this.fillHandleCursor);
}
Also used : PaletteData(org.eclipse.swt.graphics.PaletteData) DisposeListener(org.eclipse.swt.events.DisposeListener) ImageData(org.eclipse.swt.graphics.ImageData) RGB(org.eclipse.swt.graphics.RGB) Cursor(org.eclipse.swt.graphics.Cursor) DisposeEvent(org.eclipse.swt.events.DisposeEvent)

Example 55 with PaletteData

use of org.eclipse.swt.graphics.PaletteData in project hale by halestudio.

the class SwingRCPUtilities method convertToAWT.

/**
 * Convert a SWT Image to a {@link BufferedImage}
 *
 * {@link "http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.swt.snippets/src/org/eclipse/swt/snippets/Snippet156.java?view=co"}
 *
 * @param data the SWT {@link ImageData}
 * @param applyAlphaMask true if the image data's alpha mask should be
 *            applied to the result image (if there is any). This method
 *            calls {@link #applyTransparencyMask(BufferedImage, ImageData)}
 *            for that purpose.
 * @return the AWT {@link BufferedImage}
 */
public static BufferedImage convertToAWT(ImageData data, boolean applyAlphaMask) {
    ColorModel colorModel = null;
    PaletteData palette = data.palette;
    BufferedImage result;
    if (palette.isDirect) {
        colorModel = new DirectColorModel(data.depth, palette.redMask, palette.greenMask, palette.blueMask);
        BufferedImage bufferedImage = new BufferedImage(colorModel, colorModel.createCompatibleWritableRaster(data.width, data.height), false, null);
        for (int y = 0; y < data.height; y++) {
            for (int x = 0; x < data.width; x++) {
                int pixel = data.getPixel(x, y);
                RGB rgb = palette.getRGB(pixel);
                bufferedImage.setRGB(x, y, rgb.red << 16 | rgb.green << 8 | rgb.blue);
            }
        }
        result = bufferedImage;
    } else {
        RGB[] rgbs = palette.getRGBs();
        byte[] red = new byte[rgbs.length];
        byte[] green = new byte[rgbs.length];
        byte[] blue = new byte[rgbs.length];
        for (int i = 0; i < rgbs.length; i++) {
            RGB rgb = rgbs[i];
            red[i] = (byte) rgb.red;
            green[i] = (byte) rgb.green;
            blue[i] = (byte) rgb.blue;
        }
        if (data.transparentPixel != -1) {
            colorModel = new IndexColorModel(data.depth, rgbs.length, red, green, blue, data.transparentPixel);
        } else {
            colorModel = new IndexColorModel(data.depth, rgbs.length, red, green, blue);
        }
        BufferedImage bufferedImage = new BufferedImage(colorModel, colorModel.createCompatibleWritableRaster(data.width, data.height), false, null);
        WritableRaster raster = bufferedImage.getRaster();
        int[] pixelArray = new int[1];
        for (int y = 0; y < data.height; y++) {
            for (int x = 0; x < data.width; x++) {
                int pixel = data.getPixel(x, y);
                pixelArray[0] = pixel;
                raster.setPixel(x, y, pixelArray);
            }
        }
        result = bufferedImage;
    }
    if (data.getTransparencyType() == SWT.TRANSPARENCY_MASK && applyAlphaMask) {
        result = applyTransparencyMask(result, data.getTransparencyMask());
    }
    return result;
}
Also used : PaletteData(org.eclipse.swt.graphics.PaletteData) DirectColorModel(java.awt.image.DirectColorModel) ColorModel(java.awt.image.ColorModel) IndexColorModel(java.awt.image.IndexColorModel) WritableRaster(java.awt.image.WritableRaster) DirectColorModel(java.awt.image.DirectColorModel) RGB(org.eclipse.swt.graphics.RGB) BufferedImage(java.awt.image.BufferedImage) IndexColorModel(java.awt.image.IndexColorModel)

Aggregations

PaletteData (org.eclipse.swt.graphics.PaletteData)59 ImageData (org.eclipse.swt.graphics.ImageData)49 RGB (org.eclipse.swt.graphics.RGB)48 Test (org.junit.Test)27 Image (org.eclipse.swt.graphics.Image)22 Point (org.eclipse.swt.graphics.Point)12 GC (org.eclipse.swt.graphics.GC)10 Color (org.eclipse.swt.graphics.Color)9 DirectColorModel (java.awt.image.DirectColorModel)8 IndexColorModel (java.awt.image.IndexColorModel)8 WritableRaster (java.awt.image.WritableRaster)8 Rectangle (org.eclipse.swt.graphics.Rectangle)8 SWTException (org.eclipse.swt.SWTException)7 BufferedImage (java.awt.image.BufferedImage)4 Cursor (org.eclipse.swt.graphics.Cursor)3 ColorModel (java.awt.image.ColorModel)2 PaintEvent (org.eclipse.swt.events.PaintEvent)2 PaintListener (org.eclipse.swt.events.PaintListener)2 Composite (org.eclipse.swt.widgets.Composite)2 Event (org.eclipse.swt.widgets.Event)2