import ij.*;import ij.plugin.filter.PlugInFilter;import ij.process.*;import java.awt.*;/** This sample ImageJ plug-in filter inverts 8-bit images.A few things to note:	1) Filter plug-ins must implement the PlugInFilter interface.	2) Plug-ins located in the "plug-in" folder must not use	the package statement;	3) Plug-ins residing in the "plugins" folder and with at	least one underscore in their name will be automatically	installed in the PlugIns menu.	4) Plug-ins can be installed in other menus be editing	the ij.properties file.	5) You must edit ij.properties to get you plug-in to appear	in the Help->About PlugIns sub-menu.	6) The class name and file name must be the same.	7) This filter works with ROIs, including non-rectangular ROIs.	5) It will be called repeatedly to process all the slices in a stack.	6) This plug-in can't be named "Invert_" because this would	conflict with the built-in command of the same name.*/public class Inverter_ implements PlugInFilter {	public int setup(String arg, ImagePlus imp) {		if (arg.equals("about"))			{showAbout(); return DONE;}		return DOES_8G+DOES_STACKS+SUPPORTS_MASKING;	}	public void run(ImageProcessor ip) {		byte[] pixels = (byte[])ip.getPixels();		int width = ip.getWidth();		Rectangle r = ip.getRoi();		int offset, i;		for (int y=r.y; y<(r.y+r.height); y++) {			offset = y*width;			for (int x=r.x; x<(r.x+r.width); x++) {				i = offset + x;				pixels[i] = (byte)(255-pixels[i]);			}		}	}	void showAbout() {		IJ.showMessage("About Inverter_...",			"This sample plug-in filter inverts 8-bit images. Look\n" +			"at the 'Inverter_.java' source file to see how easy it is\n" +			"in ImageJ to process non-rectangular ROIs, to process\n" +			"all the slices in a stack, and to display an About box."		);	}}