public static void addOrthoslice(final String image, final String c, final String name, final String r, final String g, final String b, final String resamplingF) { final Image3DUniverse univ = getUniv(); final ImagePlus grey = WindowManager.getImage(image); final Color3f color = ColorTable.getColor(c); final int factor = getInt(resamplingF); final boolean[] channels = new boolean[] { getBoolean(r), getBoolean(g), getBoolean(b) }; univ.addOrthoslice(grey, color, name, 0, channels, factor); }
static public void showOrthoslices(final ImagePlus imp, final String title, final int wx, final int wy, final float scale2D, final Layer first) { final Display3D d3d = get(first.getParent()); d3d.universe.removeContent(title); final Content ct = d3d.universe.addOrthoslice(imp, null, title, 0, new boolean[]{true, true, true}, 1); final Calibration cal = imp.getCalibration(); final Transform3D t = new Transform3D(new double[]{1, 0, 0, wx * cal.pixelWidth * scale2D, 0, 1, 0, wy * cal.pixelHeight * scale2D, 0, 0, scale2D, first.getZ() * cal.pixelWidth * scale2D, // not pixelDepth! 0, 0, 0, 1}); // why scale2D has to be there at all reflects a horrible underlying setting of the calibration, plus of the scaling in the Display3D. Utils.log(t); ct.applyTransform(t); ct.setLocked(true); }
static public void showOrthoslices(final Patch p) { final Display3D d3d = get(p.getLayerSet()); d3d.adjustResampling(); //d3d.universe.resetView(); final String title = makeTitle(p) + " orthoslices"; // remove if present d3d.universe.removeContent(title); final PatchStack ps = p.makePatchStack(); final ImagePlus imp = get8BitStack(ps); final Content ct = d3d.universe.addOrthoslice(imp, null, title, 0, new boolean[]{true, true, true}, d3d.resample); setTransform(ct, ps.getPatch(0)); ct.setLocked(true); // locks the added content }