Added drag and drop support to GenericDialog directory and file fields, based on code from Fiji's GenericDialogPlus.
The File>Import>Image Sequence and File>Save As>Image Sequence comnands get the directory using the new GenericDialog.addDirectoryField() method, which is based on the very useful method with the same name in Fiji's GenericDialogPlus class.
The File>Import>AVI comnand gets the path to the AVI file using the new GenericDialog.addFileField() method, which is also from Fiji's GenericDialogPlus class.
Thanks Michael Schmid, added the Process>Filters>Top Hat filter.
Thanks to William Berndt, added the Image>Type>HSB (32-bit) command.
Thanks to Laurent Thomas, added the More>>Multi Crop command to the ROI Manager.
Thanks to Zeynab Mousavi, the Edit>Selection>Scale command uses the centroid instead of the center of the bounding rectangle when "Centered" is checked in the dialog.
The Help>About ImageJ window is larger and the text is drawn in an overlay.
Thanks to Peter Bankhead, the MacAdapter class is now in the ij.plugin package.
Thanks to Norbert Vischer, legend labels can be indexed or hidden in the plot window More>>Legend... dialog.
Thanks to Curtis Rueden, the sample images are now loaded from
https://imagej.net/images/.
Thanks to Jerome Mutterer, the Color Picker now has a clipboard-copyable TextArea containing the selected color in hex format.
Thanks to Jeff Hardin, the Image>Hyperstacks>Stack to Hyperstack command now works with virtual stacks not in CZT order.
The Threshold tool's "Set" function disables "Don't reset range" if the values set are outslide of the current display range.
The ImageStack class now accepts images of different types. Images are converted to the type specified by the setBitDepth() method or to the type of the first image added.
Added the Dialog.addDirectory() macro function and the GenericDialog.addDirectoryField() method (example).
Added the Dialog.addFile() macro function and the GenericDialog.addFileField() method.
Added the Dialog.addImageChoice() macro function and the GenericDialog.addImageChoice() method.
Added the Overlay.cropAndSave() macro function and the ImagePlus.cropAndSave() method (example).
Thanks to Laurent Thomas, added the RoiManager.multiCrop() macro function and RoiManager.multiCrop() method.
Thanks to Philippe Carl and Michael Schmid, added the LutLoader.getLut() method. For an example, run Help>Examples>JavaScript>Show all LUTs.
Thanks to Philippe Carl, added the String.format() macro function.
Thanks to Laurent Thomas, added the ImagePlus.crop(Roi[]), Overlay.createStackOverlay(Roi[]) and ImageStack.create(ImagePlus[]) methods. For an example, run Help>Examples>JavaScript>Crop Multiple Rois.
Added the FolderOpener.open(path, width, height, options) method, which opens a stack, or virtual stack, from a folder of images that may differ in size.
Added the ImageStack.setBitDepth() method.
Thanks to Aryeh Weiss, added the HyperStackConverter.toStack() method (example).
Added the StackWriter.save() method.
Thanks to 'bio7' and David Gault, fixed bugs that caused IJ.isJava18() to return false and JavaScript to not work when running Java 14 or later.
Thanks to Vivek Gupta, fixed a bug that caused the run("Add Selection...") macro function to ignore the current selection's position.
Thanks to Michael Cammer, fixed a bug that caused the contrast to constantly change when scrolling through a stack and the Threshold window is open.
Thanks to Gilles Carpentier, fixed a bug that caused the Duplicate command to propose an incorrect name when duplicating an image whose name ends in "-n", where 'n' is a digit.
Thanks to Gabriel Landini and Michael Schmid, fixed a bug that caused the File>Show Folder> commands to not work on some Linux systems.
Thanks to 'Nhaz', fixed a bug that caused the Fit.doFit(() macro function to fail with equations containing "Math.erf()".
Thanks to Michael Schmid, fixed preview and parallelization bugs in the RankFilters (Median, Mean, Minimum, etc.).
Thanks to Herbie Gluender, fixed a bug that caused Table.* macro functions to ignore custom tables not displayed in the active window.
Thanks to Philippe Carl and Michael Schmid, fixed a bug that caused the High Resolution Plot command to not be correctly recorded in Java(script) mode.
Thanks to Gabriel Landini, fixed the Process>Shadows>Shadows Demo command, which was too fast on modern computers.
Thanks to Jerome Mutterer, fixed a bug that sometimes caused point measurements to not work as expected (example).
Fixed issues with script-mode recording of file paths on Windows.
On Macs, fixed a bug that caused the ImageJ>About ImageJ window to open slowly.
Thanks to Michael Cammer, fixed a bug that caused the s2=replace(s,s1,s2) and s2=s.replace(s1,s2) macro functions to fail when 's1' was a single regular expression special character and 's2' did not have a length of one.
Thanks to Philippe Carl, fixed a bug that caused the Image>Stacks>Tools>Concatenate command to not preserve the "Info" properties.
Fixed a 1.52r regression that caused ImageJ to hang when saving images with fewer than 4 pixel in TIFF format.
Thanks to Jan Brocher, fixed a 1.52u regression that caused the Edit>Selection>Enlarge command to not work as well as before.
Thanks to 'jerr', fixed a 1.52 regression that made it impossible to set the threshold by changing the textfield values.
Thanks to 'Emil' and Pete Bankhead, fixed a 1.53c regression that caused the Analyze>Plot Profile command not work as expected with segmented and freehand line selections on spatially calibrated images.
Thanks to Zeynab Mousavi, fixed a 1.52 regression that caused the getResults() macro function to unexpectadly cause a "No results found" error (example).
Thanks to Sumin Kim, fixed a 1.52t regression that caused Stack to Images image titles to not be the same as before for stacks with names containing spaces.