use of org.eclipse.swt.graphics.ImageData in project knime-core by knime.
the class KNIMECTabFolderRenderer method blur.
public ImageData blur(final Image src, final int radius, final int sigma) {
float[] kernel = create1DKernel(radius, sigma);
ImageData imgPixels = src.getImageData();
int width = imgPixels.width;
int height = imgPixels.height;
int[] inPixels = new int[width * height];
int[] outPixels = new int[width * height];
int offset = 0;
for (int y = 0; y < height; y++) {
for (int x = 0; x < width; x++) {
RGB rgb = imgPixels.palette.getRGB(imgPixels.getPixel(x, y));
if (rgb.red == 255 && rgb.green == 255 && rgb.blue == 255) {
inPixels[offset] = (rgb.red << 16) | (rgb.green << 8) | rgb.blue;
} else {
inPixels[offset] = (imgPixels.getAlpha(x, y) << 24) | (rgb.red << 16) | (rgb.green << 8) | rgb.blue;
}
offset++;
}
}
convolve(kernel, inPixels, outPixels, width, height, true);
convolve(kernel, outPixels, inPixels, height, width, true);
ImageData dst = new ImageData(imgPixels.width, imgPixels.height, 24, new PaletteData(0xff0000, 0xff00, 0xff));
dst.setPixels(0, 0, inPixels.length, inPixels, 0);
offset = 0;
for (int y = 0; y < height; y++) {
for (int x = 0; x < width; x++) {
if (inPixels[offset] == -1) {
dst.setAlpha(x, y, 0);
} else {
int a = (inPixels[offset] >> 24) & 0xff;
// if (a < 150) a = 0;
dst.setAlpha(x, y, a);
}
offset++;
}
}
return dst;
}
use of org.eclipse.swt.graphics.ImageData in project eclipse-pmd by acanda.
the class SWTResourceManager method getImage.
/**
* Returns an {@link Image} encoded by the specified {@link InputStream}.
*
* @param stream
* the {@link InputStream} encoding the image data
* @return the {@link Image} encoded by the specified input stream
*/
protected static Image getImage(final InputStream stream) throws IOException {
try {
final Display display = Display.getCurrent();
final ImageData data = new ImageData(stream);
if (data.transparentPixel > 0) {
return new Image(display, data, data.getTransparencyMask());
}
return new Image(display, data);
} finally {
stream.close();
}
}
use of org.eclipse.swt.graphics.ImageData in project eclipse.platform.swt by eclipse.
the class HoverHelp method open.
/**
* Opens the main program.
*/
public Shell open(Display display) {
// Load the images
Class<HoverHelp> clazz = HoverHelp.class;
try {
if (images == null) {
images = new Image[imageLocations.length];
for (int i = 0; i < imageLocations.length; ++i) {
try (InputStream stream = clazz.getResourceAsStream(imageLocations[i])) {
ImageData source = new ImageData(stream);
ImageData mask = source.getTransparencyMask();
images[i] = new Image(display, source, mask);
} catch (IOException e) {
e.printStackTrace();
}
}
}
} catch (Exception ex) {
System.err.println(getResourceString("error.CouldNotLoadResources", ex.getMessage()));
return null;
}
// Create the window
Shell shell = new Shell();
createPartControl(shell);
shell.addDisposeListener(e -> {
/* Free resources */
if (images != null) {
for (final Image image : images) {
if (image != null)
image.dispose();
}
images = null;
}
});
shell.pack();
shell.open();
return shell;
}
use of org.eclipse.swt.graphics.ImageData in project eclipse.platform.swt by eclipse.
the class ImageAnalyzer method menuSaveMaskAs.
void menuSaveMaskAs() {
if (image == null || !showMask)
return;
if (imageData.getTransparencyType() == SWT.TRANSPARENCY_NONE)
return;
// stop any animation in progress
animate = false;
// Get the user to choose a file name and type to save.
FileDialog fileChooser = new FileDialog(shell, SWT.SAVE);
fileChooser.setFilterPath(lastPath);
if (fileName != null)
fileChooser.setFileName(fileName);
fileChooser.setFilterExtensions(SAVE_FILTER_EXTENSIONS);
fileChooser.setFilterNames(SAVE_FILTER_NAMES);
String filename = fileChooser.open();
lastPath = fileChooser.getFilterPath();
if (filename == null)
return;
// Figure out what file type the user wants saved.
int filetype = fileChooser.getFilterIndex();
if (filetype == -1) {
/* The platform file dialog does not support user-selectable file filters.
* Determine the desired type by looking at the file extension.
*/
filetype = determineFileType(filename);
if (filetype == SWT.IMAGE_UNDEFINED) {
MessageBox box = new MessageBox(shell, SWT.ICON_ERROR);
box.setMessage(createMsg(bundle.getString("Unknown_extension"), filename.substring(filename.lastIndexOf('.') + 1)));
box.open();
return;
}
}
if (new java.io.File(filename).exists()) {
MessageBox box = new MessageBox(shell, SWT.ICON_QUESTION | SWT.OK | SWT.CANCEL);
box.setMessage(createMsg(bundle.getString("Overwrite"), filename));
if (box.open() == SWT.CANCEL)
return;
}
Cursor waitCursor = display.getSystemCursor(SWT.CURSOR_WAIT);
shell.setCursor(waitCursor);
imageCanvas.setCursor(waitCursor);
try {
// Save the mask of the current image to the specified file.
ImageData maskImageData = imageData.getTransparencyMask();
loader.data = new ImageData[] { maskImageData };
loader.save(filename, filetype);
} catch (SWTException e) {
showErrorDialog(bundle.getString("Saving_lc"), filename, e);
} catch (SWTError e) {
showErrorDialog(bundle.getString("Saving_lc"), filename, e);
} finally {
shell.setCursor(null);
imageCanvas.setCursor(crossCursor);
}
}
use of org.eclipse.swt.graphics.ImageData in project eclipse.platform.swt by eclipse.
the class ImageAnalyzer method paintImage.
void paintImage(PaintEvent event) {
GC gc = event.gc;
Image paintImage = image;
/* If the user wants to see the transparent pixel in its actual color,
* then temporarily turn off transparency.
*/
int transparentPixel = imageData.transparentPixel;
if (transparentPixel != -1 && !transparent) {
imageData.transparentPixel = -1;
paintImage = new Image(display, imageData);
}
/* Scale the image when drawing, using the user's selected scaling factor. */
int w = Math.round(imageData.width * xscale);
int h = Math.round(imageData.height * yscale);
/* If any of the background is visible, fill it with the background color. */
Rectangle bounds = imageCanvas.getBounds();
if (imageData.getTransparencyType() != SWT.TRANSPARENCY_NONE) {
/* If there is any transparency at all, fill the whole background. */
gc.fillRectangle(0, 0, bounds.width, bounds.height);
} else {
/* Otherwise, just fill in the backwards L. */
if (ix + w < bounds.width)
gc.fillRectangle(ix + w, 0, bounds.width - (ix + w), bounds.height);
if (iy + h < bounds.height)
gc.fillRectangle(0, iy + h, ix + w, bounds.height - (iy + h));
}
/* Draw the image */
gc.drawImage(paintImage, 0, 0, imageData.width, imageData.height, ix + imageData.x, iy + imageData.y, w, h);
/* If there is a mask and the user wants to see it, draw it. */
if (showMask && (imageData.getTransparencyType() != SWT.TRANSPARENCY_NONE)) {
ImageData maskImageData = imageData.getTransparencyMask();
Image maskImage = new Image(display, maskImageData);
gc.drawImage(maskImage, 0, 0, imageData.width, imageData.height, w + 10 + ix + imageData.x, iy + imageData.y, w, h);
maskImage.dispose();
}
/* If transparency was temporarily disabled, restore it. */
if (transparentPixel != -1 && !transparent) {
imageData.transparentPixel = transparentPixel;
paintImage.dispose();
}
}
Aggregations