From: lingutln Date: Mon, 30 Jan 2012 00:03:11 +0000 (+0000) Subject: ImageMap functionality for multiple labels. Done by Nikhil. X-Git-Url: http://gitweb.planteome.org/?a=commitdiff_plain;h=d019a977672c94ff1da2693f176e01d2d6e9ef59;p=old-jaiswallab-svn%2F.git ImageMap functionality for multiple labels. Done by Nikhil. svn path=/; revision=283 --- diff --git a/Annotation/src/ie/dcu/apps/ist/actions/ExportImageMapAction.java b/Annotation/src/ie/dcu/apps/ist/actions/ExportImageMapAction.java index 8b758a3..ef8b1f6 100644 --- a/Annotation/src/ie/dcu/apps/ist/actions/ExportImageMapAction.java +++ b/Annotation/src/ie/dcu/apps/ist/actions/ExportImageMapAction.java @@ -8,6 +8,7 @@ import ie.dcu.swt.ImageConverter; import java.awt.image.BufferedImage; import java.io.*; +import java.util.List; import java.util.logging.Level; import org.eclipse.swt.program.Program; @@ -27,7 +28,7 @@ public class ExportImageMapAction extends AppAction{ public void run() { SegmentationContext ctx = window.getContext(); - + List masks = ctx.getSegmentationMasks(); if (ctx.hasSegmentationMasks()) { // Get options from user @@ -38,11 +39,9 @@ public class ExportImageMapAction extends AppAction{ // Grab image and mask - for (SegmentationMask mask : ctx.getSegmentationMasks()) - { BufferedImage image = ImageConverter.convert(ctx.getImageData()); // Setup exporter - Exporter exporter = new Exporter(image, mask); + Exporter exporter = new Exporter(image, masks); exporter.setEffect(result.effect); exporter.setHtmlFile(result.html); exporter.setImageFile(result.image); @@ -58,7 +57,7 @@ public class ExportImageMapAction extends AppAction{ // Export try { - exporter.export(result.folder, mask.layerNumber); + exporter.export(result.folder,masks); } catch (IOException e) { handleError(e); return; @@ -66,7 +65,6 @@ public class ExportImageMapAction extends AppAction{ handleError(e); return; } - } // for opening the image after saving as ImageMap if (result.open) { File file = new File(result.folder, result.html); diff --git a/Annotation/src/ie/dcu/apps/ist/export/imagemap/Exporter.java b/Annotation/src/ie/dcu/apps/ist/export/imagemap/Exporter.java index 3418b85..0e5a1db 100644 --- a/Annotation/src/ie/dcu/apps/ist/export/imagemap/Exporter.java +++ b/Annotation/src/ie/dcu/apps/ist/export/imagemap/Exporter.java @@ -17,7 +17,7 @@ import javax.imageio.ImageIO; * @author Kevin McGuinness */ public class Exporter { - private final SegmentationMask mask; +// private final List masks; private final BufferedImage image; private RolloverEffect effect; @@ -29,9 +29,9 @@ public class Exporter { private String title = ""; private AreaShape exportShape = AreaShape.Polygon; - public Exporter(BufferedImage image, SegmentationMask mask) { + public Exporter(BufferedImage image, List masks) { this.image = image; - this.mask = mask; + // this.masks = masks; } public RolloverEffect getEffect() { @@ -98,82 +98,86 @@ public class Exporter { this.exportShape = shape; } - public void export(File folder, int layerNumber) throws IOException, ExportException { - ContourTracer tracer = new ContourTracer(mask, SegmentationMask.FOREGROUND); - List trace = tracer.trace(); - - if (trace.size() == 0) { - throw new ExportException("No objects found"); - } - - List preloads = getPreloads(trace,layerNumber); - - // Write image - ImageIO.write(image, "png", new File(folder, imageFile)); - - if (effect != null) { - int i = 1; - - // Generate effect images - for (Polygon object : trace) { - RenderedImage im = effect.createEffect(image, object); - File output = new File(folder, preloads.get(i++)); - ImageIO.write(im, "png", output); - } - } + public void export(File folder, List masks) throws IOException, ExportException { // Create image map ImageMap map = new ImageMap(); map.setImageHref(imageFile); map.setImageName(imageName); - // Add javascript preloads - for (String str : preloads) { - map.addPreload(str); - } - - // Add areas - int idx = 1; - for (Polygon polygon : trace) { - MapArea area = new MapArea(); - switch (exportShape) { - case Polygon: - area.setPolygon(polygon); - break; - case Rectangle: - area.setRect(polygon.getBounds()); - break; - case Circle: - // TODO: Implement circle! + List preloads = new ArrayList(); + map.addPreload(imageFile); + for(SegmentationMask mask : masks) + { + ContourTracer tracer = new ContourTracer(mask, SegmentationMask.FOREGROUND); + List trace = tracer.trace(); + + if (trace.size() == 0) { + throw new ExportException("No objects found"); + } + preloads.clear(); + preloads.add(getPreloads(trace, mask.layerNumber).get(0)); + // Write image + ImageIO.write(image, "png", new File(folder, imageFile)); + + if (effect != null) { + int i = 0; - default: - area.setPolygon(polygon); - break; + // Generate effect images + for (Polygon object : trace) { + RenderedImage im = effect.createEffect(image, object); + // '0' for Rollover effect + File output = new File(folder, preloads.get(0)); + ImageIO.write(im, "png", output); + } } - area.setAlt(objectDescription); - area.setHref(objectLink); + // Add javascript preloads + for (String str : preloads) { + map.addPreload(str); + } - if (effect != null) { + // Add areas + for (Polygon polygon : trace) { + MapArea area = new MapArea(); + switch (exportShape) { + case Polygon: + area.setPolygon(polygon); + break; + case Rectangle: + area.setRect(polygon.getBounds()); + break; + case Circle: + // TODO: Implement circle! + + default: + area.setPolygon(polygon); + break; + } + + area.setAlt(objectDescription); + area.setHref(objectLink); + if (effect != null) { + + + area.addAttr("onmouseover", + String.format("rollover(document.%s, image%s)", + imageName, mask.layerNumber)); + area.addAttr("onmouseout", + String.format("rollover(document.%s, image0)", imageName)); + area.addAttr("title",mask.segmentName); + } - area.addAttr("onmouseover", - String.format("rollover(document.%s, image%s)", - imageName, idx++)); - area.addAttr("onmouseout", - String.format("rollover(document.%s, image0)", imageName)); - area.addAttr("title",getTitle()); + map.addArea(area); } - map.addArea(area); + map.exportToFile(new File(folder, htmlFile)); } - - map.exportToFile(new File(folder, layerNumber+htmlFile)); } private List getPreloads(List trace, int layerNumber) { List preloads = new ArrayList(); - preloads.add(imageFile); if (effect != null) { @@ -183,7 +187,6 @@ public class Exporter { preloads.add(filename); } } - return preloads; } } diff --git a/Annotation/src/ie/dcu/apps/ist/export/imagemap/ImageMap.java b/Annotation/src/ie/dcu/apps/ist/export/imagemap/ImageMap.java index 8c8ee38..a92ba04 100644 --- a/Annotation/src/ie/dcu/apps/ist/export/imagemap/ImageMap.java +++ b/Annotation/src/ie/dcu/apps/ist/export/imagemap/ImageMap.java @@ -106,6 +106,7 @@ public class ImageMap { // Create preloads buffer StringBuffer preloads = new StringBuffer(); int idx = 0; + //System.out.println("Preloads coming as before"+preloads()); for (String s : preloads()) { HtmlTag.indent(preloads, 8); preloads.append("var image").append(idx); @@ -115,7 +116,7 @@ public class ImageMap { preloads.append(".src = '").append(s).append("'\n"); idx++; } - + //System.out.println("Preloads coming as after"+preloads.toString()); StringBuffer contents = new StringBuffer(); for (MapArea area : areas) { contents.append('\n'); @@ -130,7 +131,6 @@ public class ImageMap { subs.put("map-name", mapName); subs.put("contents", contents.toString()); subs.put("preloads", preloads.toString()); - System.out.println("Contents coming as "+contents.toString()); return substitute(template, subs); }