File 01. 表示しなけりゃ始まらない

- 242.ekranで遊ぼう -

1. 242.ekranファミリー
 natoは画像、映像の処理を行うものですから、とりあえず表示しなけりゃなりませんよね。そこで、まず「ディスプレイオブジェクト」の242.ekranファミリー(勝手にファミリーなんて言ってますが(^^;))から見ていきましょう。
 242.ekranファミリーには242.ekran、242.ekran02、242.ekran04、
242.ekran07、242.ekran08の5つのオブジェクトがあります。(*1)
 242.ekran07は242ekranの、242.ekran.08は242.ekran04の、それぞれ高速版(マスク機能などの制限があります)なので、ここでは242.ekran,242.ekran02、242.ekran04について説明します。(以下の文では、"242."は省略しますのでよろしく!)

(*1)新しいバージョンでは242.ekran09が追加されています。

2. 242.ekran04
 まず、一番お手軽な、ekran04を見てみましょう。04はインターフェイスオブジェクトですので、max-startupフォルダに入れておくとパッチャーウィンドウのパレットに表示されます。これを普通のMaxのインターフェイスオブジェクトと同じようにパッチに配置するだけでOKです。 

図01-01

 242.filmはムービーファイルを再生できるオブジェクトです。本当は、これ1つでも驚くほど多くの機能を持っているのですが、それはまた回を改めて御紹介したいと思います。今の所「ムービー再生用」に使用します。[read]でファイルを読み込み、[start]で再生開始、[stop]で停止です。

 ekran04は、パッチャーウィンドウ内に画像を表示します。もう少し、いろいろな機能(コマンド)を説明しているのが下の図です。

図01-02

 コマンド[coords]とそれに続く後の4つの引数で、表示する位置とサイズを指定できます。[coords2]では、サイズはそのままで、位置だけを変更できます。また、[coords3]や
[coords4]ではそれぞれ位置、位置及びサイズをランダムに変更することができます。さらに、[dim.set]では位置は変えずにサイズだけを変更できます。コマンド"center"はMacの画面の中央に表示するように指定するものです。
このオブジェクトは、小さいサイズで、ちょっとしたテストや、画像のモニタ用に使うと便利です。

/* QuickDraw(Macのグラフィックシステム)では、画像データを書き込む時に、上書きだけでなくそれまでの状態(デスティネーション)にデータ(ソース)をいろいろな関係(演算)で重ね合わせることができます。このやりかたを「転送モード」-Transfer Mode-といいます。これを、natoでは[copymode]というコマンドで表しています。実際の効果については、columu 03で、実際に重ね合わせた画像と共に説明しています。*/

2. 242.ekran
次に、ekranを見てみます。ekranとekran02は、パッチャーウィンドウ上に限らず、画面のどこにでも表示することができます。デスクトップはこんな感じになります。


図01-03

 242.ekranの主なコマンドと引数を一般的なhelpパッチのような形で挙げてみたのが次の図です。これでもすべてではないのですが、かなりいろいろなコマンドがあることがおわかりでしょう。ナンバーボックスをぐりぐり動かすとディスプレイのディスプレイの位置や大きさが変わります。これだけでも結構おもしろいでしょ。[coords.set2]や[coords.set3]では、ランダムに画面の位置やサイズが変わります。先ほどのekran04でも可能ですが、こちらのほうが断然迫力がありますね。ekran04の時と、微妙に(!)コマンド名が異なっているので注意して下さい。

図01-04

 

 上の図でおわかりのように、ウインドウサイズやウィンドウ内のカーソル位置、指定された場所のRGB値を出力させることもできます。
 また、ekranでは"キーコマンド"を使うこともできます。キーコマンドをオンにしておくと、キーボードのキー操作で画面の状態をコントロールできます。主なコマンドの一部を載せておきます。

キー操作
対応するコマンドまたは動作
command + w
ウィンドウをクローズ
[tab]
[collapse]
b
[ index]
c
[center]
f
フルスクリーンで表示
F
元のサイズ、位置で表示
i
[clear]
j
[mbar 0]
J
[mbar 1]
r
[coords.set2]
R
[coords.set3]
3. 242.ekran02
 次の図は、ekran02です。もちろん、これですべての機能を挙げてあるわけではありません。
 一見したところekranとあまり変わらないように見えます。ところがekran02はデスクトップのグラフポートにアクセスするという、かなり大胆な(笑)ことをしてます。また、ディスプレイオブジェクトであるとともに、デスクトップのイメージを出力できるジェネレータ?っぽい機能も持っています。



図01-05

 ディスプレイオブジェクトは、それぞれ表示するイメージを保持するためのグラフポートを持っています。242.ekran02は、デスクトップの領域とシンクロしたグラフポートを持っているのではないかと思います。(このあたり、あまり詳しくないので、間違っているかも知れません。とりあえず、イメージを持ちやすくするための説明と思って下さい。)
 そのため、表示するにあたっては、自分のグラフポートに元のムービー等のサイズをそのまま、あるいはスケールして表示用に保持します。上の[mode]というコマンドは、この設定を行います。また、右の方にある[coords.set]や[dimensions]はこのグラフポートの座標位置、サイズを指定します。設定したサイズは[reset]でデフォルトに戻すことができます。
 一方で、ekran02はデスクトップ全体のイメージを出力しますので、このモードを[objmode]で設定します。この[objmode]を0(または2?)に設定すると、デスクトップ全体のイメージをオブジェクトレートで出力しますので、他のディスプレイオブジェクトで表示することができます。上の図の右下では、ekran08がデスクトップ全体の様子を表示しています。
 ところで、この図では小さくてわかりませんが、実はディスプレイオブジェクトが表示したデスクトップ全体の画像もまた、本来のデスクトップの一部ですから、この状態をさらにekran02が出力します。それをまた表示し‥‥というように、繰り返されるとリカーシブ(再帰的−入れ子構造ですね)に働いています。そこで、パッチの中のもう1つのディスプレイオブジェクト、ekran07の表示位置を工夫すると、下の図のような画面を作ることもできます。
 

図01-06

これを利用して、とても簡単なサンプルプログラム「手動スクリーンセーバ?」というのを作ってみました。次のColumnに掲載してありますので、よかったら御覧になってみて下さい。スタンドアロンのアプリケーション版もありますので、natoをお持ちでない方でも(新しめのMacを使っている方なら(^^;))お試しになれると思います。
Back