実際の画像処理に関しては、先ほどの項である程度解説できましたが、他にもダイアログの変更が必要です。今回はコレについて解説を行います。
しかし、その前にこのフィルタに関してもう少し詳しい話をしてみましょう。
これまではDoFilterRect関数のみを弄っていたので気にしないですんできましたが、これ以外の関数を触るとなると他のファイルがどうなっているか分かっている必要があります。
DissolveWith.c | 画像処理に必要な関数があります |
DissolveWithScripting.c | AppleScriptの処理のためにありますが、触る必要はありません |
DissolveWithUIWin.c | 設定ダイアログ内部の処理を中心に記述されています |
PIUtilities.c | 細かい処理を行うためにユーティリティ関数を書いてあります |
WinDialogUtils.c | 設定ダイアログの処理で使うユーティリティ関数を書いてあります |
WinUtilities.c | ウィンドウズ対応のための関数を記述してあります |
基本的にユーティリティ関数は触ることはないので、触ることになるのはDoFilterRect関数などがある「DissolveWith.c」か、設定ダイアログを触るための「DissolveWithUIWin.c」だけになります。他はあまり触りません。使える道具がないか探す必要はありますが、書き換えはないと思ってください。
ここで出すべきか悩みましたが、単純で解説しやすいので載せてしまいます。
単純なフィルタの場合には、設定ダイアログの表示が必要ない場合があります。こういうときにダイアログを非表示にしたい場合には「DissolveWithUIWin.c」のDoUI関数を弄ります。というかすべてコメントアウトしてしまいます。
つまりは
Boolean DoUI(GPtr globals){
int nResult;
PlatformData *platform;
platform = ((FilterRecordPtr) gStuff)->platformData;
nResult = DialogBoxParam(hDllInstance,(LPSTR)DIALOGTITLE,(HWND)platform->hwnd,(FARPROC)DissolveProc,(LPARAM)globals);
return (nResult == ok);
}
上のコードを次の様に変更します
Boolean DoUI(GPtr globals){
return true;
}
これでダイアログが非表示になります
さて、まず最初に言っておかないと行けないことは、ダイアログなどの操作を行う場合は、Windowsの用意したGUI関連の操作のプログラミングの知識、つまりは ここから先はWindowsプログラミングの知識が必要になります。
ここからがまた結構難しいことが多いです。ですが、できるだけ噛み砕いて足りないものは全て解説させていただきますので付いてきてください。