(String arg)
| 56 | private GenericDialog gd; |
| 57 | |
| 58 | public void run(String arg) { |
| 59 | imp = IJ.getImage(); |
| 60 | Roi roiA = imp.getRoi(); |
| 61 | ImagePlus impA = imp; |
| 62 | boolean isRotatedRect = (roiA!=null && roiA instanceof RotatedRectRoi); |
| 63 | boolean roiOutside = false; |
| 64 | if (roiA!=null) { |
| 65 | Rectangle r = roiA.getBounds(); |
| 66 | if (r.x>=imp.getWidth() || r.y>=imp.getHeight() || r.x+r.width<=0 || r.y+r.height<=0) { |
| 67 | ignoreSelection = true; |
| 68 | roiOutside = true; |
| 69 | } |
| 70 | } |
| 71 | int stackSize = imp.getStackSize(); |
| 72 | String title = imp.getTitle(); |
| 73 | String newTitle = WindowManager.getUniqueName(imp, title); |
| 74 | defaultTitle = newTitle; |
| 75 | duplicateStack = staticDuplicateStack && !IJ.isMacro(); |
| 76 | ignoreSelection = (staticIgnoreSelection||ignoreNextSelection) && Macro.getOptions()==null; |
| 77 | if (!IJ.altKeyDown()||stackSize>1) { |
| 78 | if (imp.isHyperStack() || imp.isComposite()) { |
| 79 | if (roiOutside) |
| 80 | imp.deleteRoi(); |
| 81 | boolean ok = duplicateHyperstack(imp, newTitle); |
| 82 | if (ok && isRotatedRect) |
| 83 | straightenRotatedRect(impA, roiA, IJ.getImage()); |
| 84 | return; |
| 85 | } else |
| 86 | newTitle = showDialog(imp, "Duplicate...", "Title: "); |
| 87 | } |
| 88 | if (isRotatedRect) { |
| 89 | Rectangle bounds = imp.getRoi().getBounds(); |
| 90 | imp.setRoi(bounds); |
| 91 | } |
| 92 | if (newTitle==null) { |
| 93 | if (isRotatedRect) |
| 94 | imp.setRoi(roiA); |
| 95 | return; |
| 96 | } |
| 97 | ImagePlus imp2; |
| 98 | Roi roi = imp.getRoi(); |
| 99 | if (ignoreSelection && roi!=null) |
| 100 | imp.deleteRoi(); |
| 101 | if (duplicateStack && (first>1||last<stackSize)) |
| 102 | imp2 = run(imp, first, last); |
| 103 | else if (duplicateStack || imp.getStackSize()==1) { |
| 104 | imp2 = run(imp); |
| 105 | if (imp.getStackSize()==1) recordCrop(imp); |
| 106 | } else { |
| 107 | imp2 = crop(imp); |
| 108 | recordCrop(imp); |
| 109 | } |
| 110 | if (ignoreSelection && roi!=null) { |
| 111 | imp.setRoi(roi); |
| 112 | if (!roiOutside) |
| 113 | imp2.setRoi((Roi)roi.clone()); |
| 114 | } |
| 115 | Calibration cal = imp2.getCalibration(); |
no test coverage detected