ImageJプラグインを作成する際に、以下の3つの重要なインターフェースがあります。
Javaにおけるインターフェースは、強制力の強いテンプレートのようなものです。
ImageJにおいて、上の3つのインターフェースを実装したクラスで作成されたプラグインは、実行時に、ある決まったメソッドが自動的に実行されます。
インターフェースを実装する時には、ある決まったメソッドをユーザーが定義する必要があります。
単純に実行するだけのプラグインです。
public class ABCD implements PlugIn
{
public void run(ImageProcessor ip)
{
~
}
}
実行前に、画像のチェックを行います。
public class ABCD implements PlugInFilter
{
public int setup(String arg, ImagePlus imp)
{
~
}
public void run(ImageProcessor ip)
{
~
}
}
実行前に、画像のチェック、パラメータ入力用ダイアログの表示などを行います。
public class ABCD implements ExtendedPlugInFilter
{
public int setup(String arg, ImagePlus imp)
{
~
}
public void setNPasses(int arg0)
{
~
}
public int showDialog(ImagePlus imp, String command, PlugInFilterRunner pfr)
{
~
}
public void run(ImageProcessor ip)
{
~
}
}
それぞれのメソッドは、以下のような意味を持ちます。
setup()
return DOES_***;
とすれば、画像の形式をチェックしてくれますDOES_8G
DOES_16
DOES_RGB
DOES_ALL
NO_IMAGE_REQUIRED
setup(arg0, arg1)
においてarg0
: 空白ならプログラムの先頭、"final"なら最後に実行されますarg1
: "ImagePlus"、つまり画像を意味しますshowDialog()
setup()
の後に、パラメーター入力ダイアログを起動しますrun()
setNPasses()
ただのプログラミング上のルールにとどまらず、マクロからも呼び出せる強力なプラグインを作成することができます。