ImageJプラグインを作成する際に、以下の3つの重要なインターフェースがあります。
- ij.pugin.PlugIn
- ij.plugin.filter.PlugInFilter
- ij.plugin.filter.ExtendedPlugInFilter
Javaにおけるインターフェースは、強制力の強いテンプレートのようなものです。
ImageJにおいて、上の3つのインターフェースを実装したクラスで作成されたプラグインは、実行時に、ある決まったメソッドが自動的に実行されます。
インターフェースを実装する時には、ある決まったメソッドをユーザーが定義する必要があります。
ij.pugin.PlugIn
単純に実行するだけのプラグインです。
public class ABCD implements PlugIn
{
public void run(ImageProcessor ip)
{
~
}
}
ij.plugin.filter.PlugInFilter
実行前に、画像のチェックを行います。
public class ABCD implements PlugInFilter
{
public int setup(String arg, ImagePlus imp)
{
~
}
public void run(ImageProcessor ip)
{
~
}
}
ij.plugin.filter.ExtendedPlugInFilter
実行前に、画像のチェック、パラメータ入力用ダイアログの表示などを行います。
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(arg0, arg1)
- ・ 一度だけ実行されます
- ・ arg0は、空白ならプログラムの先頭、"final"なら最後に実行されます
- ・ arg1は、「ImagePlus」つまり画像を意味します
- ・ 「return DOES_***;」とすれば、画像の形式をチェックしてくれます
- 8bitグレイ画像 : DOES_8G
- 16bit画像 : DOES_16
- RGB : DOES_RGB
- 全画像 : DOES_ALL
- 画像は不要 : NO_IMAGE_REQUIRED
- showDialog()
- ・ setup()の後に、パラメーター入力ダイアログを起動します
- ・ setupメソッドと同様に、フラグを返さなくてはなりません
- run()
- ・ 処理を実行します
- setNPasses()
- ・ This method is called by ImageJ to inform the plugin-filter about the passes to its run method.
これらのインターフェースを利用すると、ただのプログラミング上のルールにとどまらず、マクロからも呼び出せる強力なプラグインを作成することができます。