From a5409d65da55cf528319131b9432337276224ede Mon Sep 17 00:00:00 2001 From: lingutln Date: Fri, 16 Dec 2011 21:54:59 +0000 Subject: [PATCH] Latest Commit, done by Nikhil. svn path=/; revision=224 --- Annotation/src/ie/dcu/apps/ist/AppWindow.java | 59 +++++++++++++++---- .../dcu/segment/painters/CombinedPainter.java | 5 +- .../painters/ForegroundOnlyPainter.java | 5 +- .../ie/dcu/segment/painters/LabelPainter.java | 12 ++-- .../dcu/segment/painters/MarkupPainter.java | 6 +- .../ie/dcu/segment/painters/MaskPainter.java | 5 +- .../dcu/segment/painters/OriginalPainter.java | 5 +- .../painters/OutlineOverlayPainter.java | 5 +- .../segment/painters/SegmentationPainter.java | 6 ++ 9 files changed, 87 insertions(+), 21 deletions(-) diff --git a/Annotation/src/ie/dcu/apps/ist/AppWindow.java b/Annotation/src/ie/dcu/apps/ist/AppWindow.java index 5f32b24..4a552db 100644 --- a/Annotation/src/ie/dcu/apps/ist/AppWindow.java +++ b/Annotation/src/ie/dcu/apps/ist/AppWindow.java @@ -6,6 +6,7 @@ import ie.dcu.apps.ist.exp.Experiment; import ie.dcu.apps.ist.views.*; import ie.dcu.segment.*; import ie.dcu.segment.annotate.*; +import ie.dcu.segment.painters.SegmentationPainter; import ie.dcu.swt.*; import ie.dcu.swt.event.*; import ie.dcu.swt.layout.LayoutFactory; @@ -32,7 +33,7 @@ import org.eclipse.swt.widgets.*; */ public class AppWindow extends ApplicationWindow implements FileDropListener { private static final Logger log = Logger.getLogger("AppWindow"); - + private final Properties props; private AppPrefsManager prefsManager; @@ -625,11 +626,14 @@ public class AppWindow extends ApplicationWindow implements FileDropListener { private final ImageControl ctrl; private ImageData image; + private ImageData maskedImageData; private boolean inside; + private boolean insideSegment; private boolean enabled; - - + SegmentationPainter painter; + public ImageObserver(SegmentationView view) { + painter = view.getPainter(); view.addContextChangeListener(this); view.getCanvas().addMouseMoveListener(this); ctrl = view.getImageControl(); @@ -645,6 +649,7 @@ public class AppWindow extends ApplicationWindow implements FileDropListener { Font font = JFaceResources.getDefaultFont(); getStatusLineManager().getControl().setFont(font); this.inside = false; + this.insideSegment = false; this.enabled = enabled; } } @@ -673,6 +678,8 @@ public class AppWindow extends ApplicationWindow implements FileDropListener { Font font = JFaceResources.getDefaultFont(); getStatusLineManager().getControl().setFont(font); inside = false; + insideSegment = false; + shell.setToolTipText(null); } } @@ -684,10 +691,17 @@ public class AppWindow extends ApplicationWindow implements FileDropListener { return ctrl.canvasToImage(pt); } } + + maskedImageData = painter.getMaskImage().getImageData(); + if (maskedImageData != null) { + Point pt = new Point(e.x, e.y); + if (ctrl.imageContains(pt)) { + return ctrl.canvasToImage(pt); + } + } return null; } - - + private final RGB getColor(Point pt) { int pixel = image.getPixel(pt.x, pt.y); @@ -700,12 +714,37 @@ public class AppWindow extends ApplicationWindow implements FileDropListener { Font font = JFaceResources.getFont(MONOSPACE_FONT); getStatusLineManager().getControl().setFont(font); } - - status(AppStatus.Information, - "Location [%4d,%4d] Color [%3d,%3d,%3d]", - pt.x, pt.y, c.red, c.green, c.blue); - + Listener mouseListener = new Listener() { + public void handleEvent(Event event) { + switch (event.type) { + case SWT.MouseEnter: + case SWT.MouseMove: + if (insideSegment) { + // System.out.println("Which painter ? --> "+painter.getMaskImage().getImageData().y); + view.getCanvas().setToolTipText(SegmentationView.comboLabel.getText()); + return; + } + view.getCanvas().setToolTipText(null); + break; + } + } + }; + view.getCanvas().addListener(SWT.MouseMove, mouseListener); + view.getCanvas().addListener(SWT.MouseExit, mouseListener); + if((SegmentationView.comboLabel.getText()).trim().equals("")) + { + status(AppStatus.Information, + "Location [%4d,%4d] Color [%3d,%3d,%3d]", + pt.x, pt.y, c.red, c.green, c.blue); + } + else + { + status(AppStatus.Information, + "Location [%4d,%4d] Color [%3d,%3d,%3d] Label [%s]", + pt.x, pt.y, c.red, c.green, c.blue, SegmentationView.comboLabel.getText()); + } inside = true; + insideSegment = true; } diff --git a/Annotation/src/ie/dcu/segment/painters/CombinedPainter.java b/Annotation/src/ie/dcu/segment/painters/CombinedPainter.java index 268a1dd..36bcd67 100644 --- a/Annotation/src/ie/dcu/segment/painters/CombinedPainter.java +++ b/Annotation/src/ie/dcu/segment/painters/CombinedPainter.java @@ -27,7 +27,10 @@ public class CombinedPainter implements SegmentationPainter { return "An overlaid view of the image, segmentation mask, and markup"; } - + public Image getMaskImage() { + return maskImage; + } + public void paint(SegmentationContext ctx, ObservableImage im) { GC gc = im.beginPaint(); diff --git a/Annotation/src/ie/dcu/segment/painters/ForegroundOnlyPainter.java b/Annotation/src/ie/dcu/segment/painters/ForegroundOnlyPainter.java index ed8bc4e..adc7b9b 100644 --- a/Annotation/src/ie/dcu/segment/painters/ForegroundOnlyPainter.java +++ b/Annotation/src/ie/dcu/segment/painters/ForegroundOnlyPainter.java @@ -26,7 +26,10 @@ public class ForegroundOnlyPainter implements SegmentationPainter { public String getDescription() { return "Shows the foreground region of the image."; } - + + public Image getMaskImage() { + return maskImage; + } public void paint(SegmentationContext ctx, ObservableImage im) { GC gc = im.beginPaint(); diff --git a/Annotation/src/ie/dcu/segment/painters/LabelPainter.java b/Annotation/src/ie/dcu/segment/painters/LabelPainter.java index 1362931..dc48ea0 100644 --- a/Annotation/src/ie/dcu/segment/painters/LabelPainter.java +++ b/Annotation/src/ie/dcu/segment/painters/LabelPainter.java @@ -10,7 +10,7 @@ import org.eclipse.swt.widgets.*; /** * Shows the foreground region of the image. The background is greyed out. * - * @author Kevin and Nikhil + * @author Kevin McGuinness */ public class LabelPainter implements SegmentationPainter { @@ -22,11 +22,13 @@ public class LabelPainter implements SegmentationPainter { return "Display Label"; } - public String getDescription() { - return "Shows the segmented piece with label attached."; + return "Shows the segmented piece with label attached on hovering the mouse."; + } + + public Image getMaskImage() { + return maskImage; } - public void paint(SegmentationContext ctx, ObservableImage im) { GC gc = im.beginPaint(); @@ -111,4 +113,4 @@ public class LabelPainter implements SegmentationPainter { maskImage = null; } } -} +} \ No newline at end of file diff --git a/Annotation/src/ie/dcu/segment/painters/MarkupPainter.java b/Annotation/src/ie/dcu/segment/painters/MarkupPainter.java index 24b5fbf..802000d 100644 --- a/Annotation/src/ie/dcu/segment/painters/MarkupPainter.java +++ b/Annotation/src/ie/dcu/segment/painters/MarkupPainter.java @@ -6,6 +6,7 @@ import ie.dcu.swt.*; import org.eclipse.swt.SWT; import org.eclipse.swt.graphics.GC; +import org.eclipse.swt.graphics.Image; /** * Shows the current markup (annotations) only @@ -24,7 +25,10 @@ public class MarkupPainter implements SegmentationPainter { public String getName() { return NAME; } - + + public Image getMaskImage() { + return null; + } public void paint(SegmentationContext ctx, ObservableImage im) { diff --git a/Annotation/src/ie/dcu/segment/painters/MaskPainter.java b/Annotation/src/ie/dcu/segment/painters/MaskPainter.java index 192f368..f7a1d40 100644 --- a/Annotation/src/ie/dcu/segment/painters/MaskPainter.java +++ b/Annotation/src/ie/dcu/segment/painters/MaskPainter.java @@ -25,7 +25,10 @@ public class MaskPainter implements SegmentationPainter { public String getName() { return NAME; } - + + public Image getMaskImage() { + return maskImage; + } public void paint(SegmentationContext ctx, ObservableImage im) { diff --git a/Annotation/src/ie/dcu/segment/painters/OriginalPainter.java b/Annotation/src/ie/dcu/segment/painters/OriginalPainter.java index 97bdfca..3807c7d 100644 --- a/Annotation/src/ie/dcu/segment/painters/OriginalPainter.java +++ b/Annotation/src/ie/dcu/segment/painters/OriginalPainter.java @@ -22,7 +22,10 @@ public class OriginalPainter implements SegmentationPainter { public String getName() { return NAME; } - + + public Image getMaskImage() { + return null; + } public void paint(SegmentationContext ctx, ObservableImage im) { GC gc = im.beginPaint(); diff --git a/Annotation/src/ie/dcu/segment/painters/OutlineOverlayPainter.java b/Annotation/src/ie/dcu/segment/painters/OutlineOverlayPainter.java index 41cc8d6..67b56c4 100644 --- a/Annotation/src/ie/dcu/segment/painters/OutlineOverlayPainter.java +++ b/Annotation/src/ie/dcu/segment/painters/OutlineOverlayPainter.java @@ -25,7 +25,10 @@ public class OutlineOverlayPainter implements SegmentationPainter { return "Shows an an overlay of foreground border on the image"; } - + public Image getMaskImage() { + return maskImage; + } + public void paint(SegmentationContext ctx, ObservableImage im) { GC gc = im.beginPaint(); diff --git a/Annotation/src/ie/dcu/segment/painters/SegmentationPainter.java b/Annotation/src/ie/dcu/segment/painters/SegmentationPainter.java index 4989f60..a15c392 100644 --- a/Annotation/src/ie/dcu/segment/painters/SegmentationPainter.java +++ b/Annotation/src/ie/dcu/segment/painters/SegmentationPainter.java @@ -2,6 +2,7 @@ package ie.dcu.segment.painters; import ie.dcu.segment.SegmentationContext; import ie.dcu.swt.ObservableImage; +import org.eclipse.swt.graphics.*; /** * Interface for classes that can be used to visualize an image and it's @@ -20,6 +21,11 @@ public interface SegmentationPainter { /** * Returns a description of the painter. */ + public Image getMaskImage(); + + /** + * Returns a masked image. + */ public String getDescription(); /** -- 2.34.1