/******************************************************************************* * 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; } }