package ij.plugin.filter;
import ij.*;
import ij.process.*;

/** ImageJ plugins that process an image may implement this interface.
 *  In addition to the features of PlugInFilter, it is better suited
 *  for filters that have a dialog asking for the options or filter
 *  parameters. It also offers support for preview, for a smooth
 *  progress bar when processing stacks and for calling back
 *  the PlugInFilterRunner (needed, e.g., to get the slice number
 *  when processing a stack in parallel threads).
 *

* The sequence of calls to an ExtendedPlugInFilter is the following: *

* - setup(arg, imp): The filter should return its flags.

* - showDialog(imp, command, pfr): The filter should display * the dialog asking for parameters (if any) and do all operations * needed to prepare for processing the individual image(s) (E.g., * slices of a stack). For preview, a separate thread may call * setNPasses(nPasses) and run(ip) while * the dialog is displayed. The filter should return its flags.

* - setNPasses(nPasses): Informs the filter of the number * of calls of run(ip) that will follow.

* - run(ip): Processing of the image(s). With the * CONVERT_TO_FLOAT flag, this method will be called for * each color channel of an RGB image. With DOES_STACKS, * it will be called for each slice of a stack.

* - setup("final", imp): called only if flag * FINAL_PROCESSING has been specified. *

* Flag DONE stops this sequence of calls. */ public interface ExtendedPlugInFilter extends PlugInFilter { /** * This method is called after setup(arg, imp) unless the * DONE flag has been set. * @param imp The active image already passed in the * setup(arg, imp) call. It will be null, however, if * the NO_IMAGE_REQUIRED flag has been set. * @param command The command that has led to the invocation of * the plugin-filter. Useful as a title for the dialog. * @param pfr The PlugInFilterRunner calling this plugin-filter. * It can be passed to a GenericDialog by addPreviewCheckbox * to enable preview by calling the run(ip) method of this * plugin-filter. pfr can be also used later for calling back * the PlugInFilterRunner, e.g., to obtain the slice number * currently processed by run(ip). * @return The method should return a combination (bitwise OR) * of the flags specified in interfaces PlugInFilter and * ExtendedPlugInFilter. */ public int showDialog(ImagePlus imp, String command, PlugInFilterRunner pfr); /** * This method is called by ImageJ to inform the plugin-filter * about the passes to its run method. During preview, the number of * passes is one (or 3 for RGB images, if CONVERT_TO_FLOAT * has been specified). When processing a stack, it is the number * of slices to be processed (minus one, if one slice has been * processed for preview before), and again, 3 times that number * for RGB images processed with CONVERT_TO_FLOAT. */ public void setNPasses(int nPasses); /** Set this flag if the last preview image may be kept as a result. For stacks, this flag can lead to out-of-sequence processing of the slices, irrespective of the PARALLELIZE_STACKS flag. */ public final int KEEP_PREVIEW = 0x1000000; }

Ads help maintain this website.