package ij.plugin.filter; import ij.*; import ij.process.*; import ij.gui.*; import ij.measure.Calibration; import java.awt.*; import java.awt.image.*; /** Implements the Flip and Rotate commands in the Image/Transform submenu. */ public class Transformer implements PlugInFilter { ImagePlus imp; String arg; public int setup(String arg, ImagePlus imp) { this.arg = arg; this.imp = imp; if (arg.equals("fliph") || arg.equals("flipv")) return IJ.setupDialog(imp, DOES_ALL+NO_UNDO); else return DOES_ALL+NO_UNDO+NO_CHANGES; } public void run(ImageProcessor ip) { if (arg.equals("fliph")) { ip.flipHorizontal(); return; } if (arg.equals("flipv")) { ip.flipVertical(); return; } if (arg.equals("right") || arg.equals("left")) { StackProcessor sp = new StackProcessor(imp.getStack(), ip); ImageStack s2 = null; if (arg.equals("right")) s2 = sp.rotateRight(); else s2 = sp.rotateLeft(); Calibration cal = imp.getCalibration(); imp.setStack(null, s2); double pixelWidth = cal.pixelWidth; cal.pixelWidth = cal.pixelHeight; cal.pixelHeight = pixelWidth; return; } } }