diff options
author | Mikhail Khodjaiants | 2003-05-05 19:53:03 +0000 |
---|---|---|
committer | Mikhail Khodjaiants | 2003-05-05 19:53:03 +0000 |
commit | 4a88230536b781dbefc10d54b49be6f68966fa27 (patch) | |
tree | d4a02920b88a49f2bdb65d71601b2a5d83178a55 /debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/OverlayImageDescriptor.java | |
parent | 8db10675f9164b33c32123d22fb8741f46197ea0 (diff) | |
download | org.eclipse.cdt-4a88230536b781dbefc10d54b49be6f68966fa27.tar.gz org.eclipse.cdt-4a88230536b781dbefc10d54b49be6f68966fa27.tar.xz org.eclipse.cdt-4a88230536b781dbefc10d54b49be6f68966fa27.zip |
New implementation of overlayed images.
Diffstat (limited to 'debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/OverlayImageDescriptor.java')
-rw-r--r-- | debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/OverlayImageDescriptor.java | 120 |
1 files changed, 120 insertions, 0 deletions
diff --git a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/OverlayImageDescriptor.java b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/OverlayImageDescriptor.java new file mode 100644 index 00000000000..f7d25428682 --- /dev/null +++ b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/OverlayImageDescriptor.java @@ -0,0 +1,120 @@ +/* + *(c) Copyright QNX Software Systems Ltd. 2002. + * All Rights Reserved. + * + */ + +package org.eclipse.cdt.debug.internal.ui; + +import java.util.Arrays; + +import org.eclipse.jface.resource.CompositeImageDescriptor; +import org.eclipse.jface.resource.ImageDescriptor; +import org.eclipse.swt.graphics.Image; +import org.eclipse.swt.graphics.ImageData; +import org.eclipse.swt.graphics.Point; + +public class OverlayImageDescriptor extends CompositeImageDescriptor +{ + static final int DEFAULT_WIDTH = 16; + static final int DEFAULT_HEIGHT = 16; + + public static final int TOP_LEFT = 0; + public static final int TOP_RIGHT = 1; + public static final int BOTTOM_LEFT = 2; + public static final int BOTTOM_RIGHT = 3; + + // the base image + private Image fBase; + + // the overlay images + private ImageDescriptor[] fOverlays; + + // the size + private Point fSize; + + public OverlayImageDescriptor( Image base, ImageDescriptor[] overlays ) + { + fBase = base; + fOverlays = overlays; + fSize = new Point( DEFAULT_WIDTH, DEFAULT_HEIGHT ); + } + + public OverlayImageDescriptor( Image base, ImageDescriptor[] overlays, Point size ) + { + fBase = base; + fOverlays = overlays; + fSize = size; + } + + /** + * Draw the fOverlays for the reciever. + */ + protected void drawOverlays( ImageDescriptor[] overlays ) + { + Point size = getSize(); + + for ( int i = 0; i < overlays.length; i++ ) + { + ImageDescriptor overlay = overlays[i]; + if ( overlay == null ) + continue; + ImageData overlayData = overlay.getImageData(); + //Use the missing descriptor if it is not there. + if ( overlayData == null ) + overlayData = ImageDescriptor.getMissingImageDescriptor().getImageData(); + switch( i ) + { + case TOP_LEFT: + drawImage( overlayData, 0, 0 ); + break; + case TOP_RIGHT: + drawImage( overlayData, size.x - overlayData.width, 0 ); + break; + case BOTTOM_LEFT: + drawImage( overlayData, 0, size.y - overlayData.height ); + break; + case BOTTOM_RIGHT: + drawImage( overlayData, size.x - overlayData.width, size.y - overlayData.height ); + break; + } + } + } + + public boolean equals( Object o ) + { + if ( !( o instanceof OverlayImageDescriptor ) ) + return false; + OverlayImageDescriptor other = (OverlayImageDescriptor)o; + return fBase.equals( other.fBase ) && Arrays.equals( fOverlays, other.fOverlays ); + } + + public int hashCode() + { + int code = fBase.hashCode(); + for ( int i = 0; i < fOverlays.length; i++ ) + { + if ( fOverlays[i] != null ) + code ^= fOverlays[i].hashCode(); + } + return code; + } + + /* (non-Javadoc) + * @see org.eclipse.jface.resource.CompositeImageDescriptor#drawCompositeImage(int, int) + */ + protected void drawCompositeImage( int width, int height ) + { + drawImage( fBase.getImageData(), 0, 0 ); + drawOverlays( fOverlays ); + } + + /* (non-Javadoc) + * @see org.eclipse.jface.resource.CompositeImageDescriptor#getSize() + */ + protected Point getSize() + { + return fSize; + } + +} |