package com.arm.cmsis.pack.ui.tree; import org.eclipse.jface.resource.CompositeImageDescriptor; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.graphics.Point; /** * This class is responsible for delivering an overlay image used e.g. for decorators. * */ public class OverlayImage extends CompositeImageDescriptor { public enum OverlayPos { TOP_LEFT, TOP_RIGHT, BOTTOM_LEFT, BOTTOM_RIGHT, CENTER } private OverlayPos overlayPos; private Image baseImage; private Image overlayImage; private Point baseImageSize; public OverlayImage(Image baseImage, Image overlayImage, OverlayPos overlayPos) { this.baseImage = baseImage; this.overlayImage = overlayImage; this.overlayPos = overlayPos; baseImageSize = new Point(baseImage.getBounds().width, baseImage.getBounds().height); } @Override protected void drawCompositeImage(int arg0, int arg1) { // Draw the base image drawImage(baseImage.getImageData(), 0, 0); // draw overlay image Point pos = new Point(0,0); Point overlayImageSize = new Point(overlayImage.getBounds().width, overlayImage.getBounds().height); switch(overlayPos) { case TOP_LEFT: break; case TOP_RIGHT: pos.x = baseImageSize.x - overlayImageSize.x; break; case BOTTOM_LEFT: pos.y = baseImageSize.y - overlayImageSize.y; break; case BOTTOM_RIGHT: pos.x = baseImageSize.x - overlayImageSize.x; pos.y = baseImageSize.y - overlayImageSize.y; break; case CENTER: pos.x = baseImageSize.x/2; pos.y = baseImageSize.y/2; break; } drawImage(this.overlayImage.getImageData(), pos.x, pos.y); // draw overlay image at position } @Override protected Point getSize() { return baseImageSize; } public Image getImage() { return createImage(); } }