ここ最近VisualWorks環境で画像フィルタをつくっていました。
その際にちゃんとフィルタが動作しているか確認するために、つくったフィルタを適応して
すぐに結果を確認するためのコードをずっとWorkspaceにひらいておく事をしておきました。
その時に利用していたコードはこんな感じでした。
| dialog fileName imageReader image newImage | dialog := OpenFileDialog new. dialog addFileFilter: 'Image Files' pattern: '*.png;*.gif;*.jpg;*.jpeg'. fileName := dialog select. fileName notNil ifTrue: [imageReader := ImageReader fromFile: fileName. image := imageReader image. newImage := image filter: SepiaFilter new. newImage inspect]
画像ファイルを選択して、その画像にフィルタを適応して、適応後の画像をinspectして結果を確認していました。VisualWorksではImageはインスペクタにpreviewされるのでとくに画像を表示するウィンドウを表示しなくても大丈夫だと判断しました。
今回作成した画像フィルタをPharoに移植してみようとおもっているので、とりあえず
同様に画像ファイルをひらいて、その画像になにかをしてから表示するというプロセスを快適にするために
Workspaceにまたコードをかきました。
その内容が以下
| fileName imageForm imageMorph builder contents | fileName := UIManager default chooseFullFileNameMatching: #('*.png' '*.jpg' '*.gif' '*.jpeg') label: 'Select File.'. fileName notNil ifTrue: [ imageForm := ImageReadWriter formFromFileNamed: fileName. imageMorph := ImageMorph withForm: imageForm. imageMorph openInWindow. ]. ]
とりあえず現状では画像フィルタの移植に着手していないので、とくに画像フィルタの適応をするコードはつくっておりませんが、うまく途中でその画像に処理をくわえれば良いかなとおもっておりますが...