package ij.plugin.filter; import java.awt.*; import java.awt.image.*; import java.io.*; import ij.*; import ij.process.*; import ij.io.*; import ij.gui.*; /** Saves the current ROI outline to a file. RoiDecoder.java has a description of the file format. @see ij.io.RoiDecoder @see ij.plugin.RoiReader */ public class RoiWriter implements PlugInFilter { ImagePlus imp; public int setup(String arg, ImagePlus imp) { this.imp = imp; return DOES_ALL+ROI_REQUIRED+NO_CHANGES; } public void run(ImageProcessor ip) { try { saveRoi(imp); } catch (IOException e) { String msg = e.getMessage(); if (msg==null || msg.equals("")) msg = ""+e; IJ.error("ROI Writer", msg); } } public void saveRoi(ImagePlus imp) throws IOException{ Roi roi = imp.getRoi(); if (roi==null) throw new IllegalArgumentException("ROI required"); String name = roi.getName(); if (name==null) name = imp.getTitle(); SaveDialog sd = new SaveDialog("Save Selection...", name, ".roi"); name = sd.getFileName(); if (name == null) return; String dir = sd.getDirectory(); RoiEncoder re = new RoiEncoder(dir+name); re.write(roi); if (name.endsWith(".roi")) name = name.substring(0, name.length()-4); roi.setName(name); } }