blob: 83b85c4b72d38430227e9f7bacbe517192074e1b [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2005 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.bpel.common.ui;
import org.eclipse.core.resources.IMarker;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.graphics.ImageData;
/**
* General image utilities.
*/
public final class ImageUtils {
/**
* Rotates the image data in 90 degrees.
*/
public static ImageData rotateLeft(ImageData source) {
ImageData result = new ImageData(source.height, source.width, source.depth, source.palette);
result.transparentPixel = source.transparentPixel;
for (int x = 0; x < source.width; x++) {
for (int y = 0; y < source.height; y++) {
int newX = y;
int newY = result.height - x - 1;
result.setPixel(newX, newY, source.getPixel(x, y));
result.setAlpha(newX, newY, source.getAlpha(x, y));
}
}
return result;
}
/**
* Inverts the image left to right.
*/
public static ImageData flip(ImageData source) {
ImageData result = (ImageData)source.clone();
result.transparentPixel = source.transparentPixel;
for (int y = 0; y < source.height; y++) {
for (int x = 0; x < source.width; x++) {
int newX = source.width - x - 1;
result.setPixel(newX, y, source.getPixel(x, y));
result.setAlpha(newX, y, source.getAlpha(x, y));
}
}
return result;
}
/**
* Creates an image with a transparent background. The given color
* is considered the transparent color.
*/
public static Image createTransparentImage(int width, int height, Color transparent) {
Image tmp = new Image(null, width, height);
ImageData data = tmp.getImageData();
tmp.dispose();
data.transparentPixel = data.palette.getPixel(transparent.getRGB());
for(int i = 0; i < data.width; i++) {
for (int j = 0; j < data.height; j++) {
data.setPixel(i, j, data.transparentPixel);
}
}
return new Image(null, data);
}
/**
* Return an image according to the given a marker severity.
*/
public static Image getImage(IMarker marker) {
switch (marker.getAttribute(IMarker.SEVERITY, -1)) {
case IMarker.SEVERITY_ERROR:
return CommonUIPlugin.getDefault().getImageRegistry().get(ICommonUIConstants.ICON_ERROR);
case IMarker.SEVERITY_WARNING:
return CommonUIPlugin.getDefault().getImageRegistry().get(ICommonUIConstants.ICON_WARNING);
case IMarker.SEVERITY_INFO:
return CommonUIPlugin.getDefault().getImageRegistry().get(ICommonUIConstants.ICON_INFO);
}
return null;
}
}