/******************************************************************************* * Copyright (c) 2000, 2006 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.ui.internal; import org.eclipse.jface.resource.CompositeImageDescriptor; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.swt.graphics.ImageData; import org.eclipse.swt.graphics.Point; import org.eclipse.ui.internal.util.Util; /** * An OverlayIcon consists of a main icon and an overlay icon */ public class OverlayIcon extends CompositeImageDescriptor { // the size of the OverlayIcon private Point fSize = null; // the main image private ImageDescriptor fBase = null; // the additional image (a pin for example) private ImageDescriptor fOverlay = null; /** * @param base the main image * @param overlay the additional image (a pin for example) * @param size the size of the OverlayIcon */ public OverlayIcon(ImageDescriptor base, ImageDescriptor overlay, Point size) { fBase = base; fOverlay = overlay; fSize = size; } /* (non-Javadoc) * @see org.eclipse.jface.resource.CompositeImageDescriptor#drawCompositeImage(int, int) */ protected void drawCompositeImage(int width, int height) { ImageData bg; if (fBase == null || (bg = fBase.getImageData()) == null) { bg = DEFAULT_IMAGE_DATA; } drawImage(bg, 0, 0); if (fOverlay != null) { drawTopRight(fOverlay); } } /** * @param overlay the additional image (a pin for example) * to be drawn on top of the main image */ protected void drawTopRight(ImageDescriptor overlay) { if (overlay == null) { return; } int x = getSize().x; ImageData id = overlay.getImageData(); x -= id.width; drawImage(id, x, 0); } /* (non-Javadoc) * @see org.eclipse.jface.resource.CompositeImageDescriptor#getSize() */ protected Point getSize() { return fSize; } /* * (non-Javadoc) * @see java.lang.Object#hashCode() */ public int hashCode() { return Util.hashCode(fBase) * 17 + Util.hashCode(fOverlay); } /* (non-Javadoc) * @see java.lang.Object#equals(java.lang.Object) */ public boolean equals(Object obj) { if (!(obj instanceof OverlayIcon)) { return false; } OverlayIcon overlayIcon = (OverlayIcon) obj; return Util.equals(this.fBase, overlayIcon.fBase) && Util.equals(this.fOverlay, overlayIcon.fOverlay) && Util.equals(this.fSize, overlayIcon.fSize); } }