December 06, 2005

tap.windowdragを"thispatcher"で実現してみる

Taptoolsの話題がでたので、ネタ的なトピックです、、、全然Maxの本質ではありません。完全に遊びです。

Taptoolsには、tap.windowdragという、パッチ内にドラッグエリアを配置するとウィンドウ本体を移動可能にしてくれるオブジェクトがあります。

ほとんど、使い道は無いと思われますが、Maxで独自のアプリケーションを構築するときに、OS非依存のウィンドウをデザインしたいなどとなると、使うことになるでしょう。

これは、もちろんCで作られたオブジェクトですが、Maxのみでも実現は可能です。

メインとなるオブジェクトは"thispatcher"です。
"thispather"は、パッチ内にある、オブジェクトの配置や、消したり、新たに追加したり、ウィンドウの位置、機能を変更したり、パッチの絶対パスの取得、など様々な操作を、メッセージを送ることで、可能にします。
これを、利用して、ドラッグしている間ウィンドウ位置を変更するメッセージを常に送ることで、tap.windowdragもどきをMaxのみで実現できます。

ソースは以下にテキストで記してます。

ここで、一応、テキスト形式のパッチについて。

Patch As Text

Maxのパッチを、Fileメニューの"Open As Text..."で開くと、"max V2;....."で始まる、テキストデータとして見ることができます。

これは、単なるテキストデータなので、Webや、メールでパッチをやり取りするのに非常に便利です。なので、よくこの形式で公開、交換する場面があります。

この形式のものを、Maxパッチとして見るには、"max v2;......#p pop"までをコピーして、Maxで"New Patcher"を開き、ペーストするだけで、見慣れたパッチコードのある画面が出現します。
非常に、簡単です。

tap.windowdragをまねるパッチ


____________________________

max v2;
#N vpatcher 100 375 498 669;
#P window setfont "Sans Serif" 9.;
#P window linecount 1;
#P hidden newex 282 185 34 196617 s line;
#P user radiogroup 282 163 18 16;
#X size 1;
#X offset 16;
#X inactive 0;
#X itemtype 1;
#X flagmode 1;
#X set 0;
#X done;
#N thispatcher;
#Q end;
#P hidden newobj 93 201 61 196617 thispatcher;
#P user ubutton 55 122 280 33 0 2;
#N vpatcher 10 59 543 778;
#P window setfont "Sans Serif" 9.;
#P window linecount 1;
#N vpatcher 521 340 1121 740;
#P window setfont "Sans Serif" 9.;
#P newex 81 136 58 196617 pak 0. 500;
#P newex 81 161 40 196617 line 0.;
#P outlet 81 192 15 0;
#P inlet 81 38 15 0;
#P connect 0 0 3 0;
#P connect 3 0 2 0;
#P connect 2 0 1 0;
#P pop;
#P newobj 258 483 34 196617 p line;
#N vpatcher 521 340 1121 740;
#P window setfont "Sans Serif" 9.;
#P newex 81 136 58 196617 pak 0. 500;
#P newex 81 161 40 196617 line 0.;
#P outlet 81 192 15 0;
#P inlet 81 38 15 0;
#P connect 0 0 3 0;
#P connect 3 0 2 0;
#P connect 2 0 1 0;
#P pop;
#P newobj 194 483 34 196617 p line;
#N vpatcher 521 340 1121 740;
#P window setfont "Sans Serif" 9.;
#P newex 81 136 58 196617 pak 0. 500;
#P newex 81 161 40 196617 line 0.;
#P outlet 81 192 15 0;
#P inlet 81 38 15 0;
#P connect 0 0 3 0;
#P connect 3 0 2 0;
#P connect 2 0 1 0;
#P pop;
#P newobj 130 483 34 196617 p line;
#P window linecount 0;
#N vpatcher 521 340 1121 740;
#P window setfont "Sans Serif" 9.;
#P newex 81 136 58 196617 pak 0. 500;
#P newex 81 161 40 196617 line 0.;
#P outlet 81 192 15 0;
#P inlet 81 38 15 0;
#P connect 0 0 3 0;
#P connect 3 0 2 0;
#P connect 2 0 1 0;
#P pop;
#P newobj 66 483 34 196617 p line;
#P newex 29 395 34 196617 r line;
#P newex 29 419 27 196617 + 1;
#P window linecount 1;
#P newex 221 442 47 196617 gate 2 1;
#P newex 157 442 47 196617 gate 2 1;
#P newex 93 442 47 196617 gate 2 1;
#P window linecount 0;
#P newex 29 442 47 196617 gate 2 1;
#P newex 66 589 120 196617 t b l;
#P window linecount 1;
#P newex 66 565 82 196617 prepend window;
#P message 66 617 68 196617 window exec;
#P window linecount 0;
#P newex 66 544 66 196617 prepend size;
#P window linecount 1;
#P newex 258 293 164 196617 if $i1>(22-$i2) then $i1 else out2;
#P window linecount 0;
#P newex 283 242 27 196617 -;
#P newex 117 292 136 196617 if $i1>22 then $i1 else out2;
#P message 160 60 14 196617 0;
#P newex 226 61 168 196617 t zero 1 b;
#P newex 66 521 202 196617 pack 0 0 0 0;
#P newex 219 242 27 196617 +;
#P newex 168 242 27 196617 +;
#P newex 117 242 27 196617 +;
#P newex 66 242 27 196617 +;
#P newex 83 196 163 196617 unpack 0 0 0 0;
#P newex 226 116 51 196617 qmetro 1;
#P newex 289 139 66 196617 mousestate;
#P toggle 226 97 15 0;
#P newex 83 173 55 196617 route size;
#P newex 83 149 69 196617 route window;
#P message 384 96 75 196617 window getsize;
#P inlet 226 40 15 0;
#P inlet 160 40 15 0;
#P inlet 83 40 15 0;
#P outlet 66 651 15 0;
#P outlet 449 480 15 0;
#P connect 31 0 30 0;
#P connect 30 0 26 0;
#P fasten 9 1 12 0 308 236 71 236;
#P connect 12 0 26 1;
#P connect 26 1 32 0;
#P connect 32 0 16 0;
#P connect 26 0 16 0;
#P connect 16 0 22 0;
#P connect 22 0 24 0;
#P connect 24 0 25 0;
#P connect 25 0 23 0;
#P connect 23 0 1 0;
#P fasten 25 1 1 0 181 640 71 640;
#P connect 2 0 6 0;
#P connect 6 0 7 0;
#P connect 7 0 11 0;
#P fasten 11 0 12 1 88 217 88 217;
#P fasten 30 0 27 0 34 439 98 439;
#P fasten 9 2 13 0 322 230 122 230;
#P connect 13 0 19 0;
#P fasten 19 0 27 1 122 375 135 375;
#P connect 27 1 33 0;
#P connect 33 0 16 1;
#P connect 27 0 16 1;
#P fasten 11 1 13 1 139 216 139 216;
#P fasten 30 0 28 0 34 439 162 439;
#P connect 3 0 18 0;
#P fasten 9 1 14 0 308 226 173 226;
#P connect 11 2 14 1;
#P fasten 14 0 28 1 173 281 199 281;
#P connect 28 1 34 0;
#P connect 34 0 16 2;
#P connect 28 0 16 2;
#P fasten 9 2 15 0 322 223 224 223;
#P fasten 30 0 29 0 34 439 226 439;
#P connect 4 0 17 0;
#P fasten 18 0 8 0 165 88 231 88;
#P fasten 17 1 8 0 310 88 231 88;
#P connect 8 0 10 0;
#P connect 11 3 15 1;
#P fasten 15 0 21 0 224 270 263 270;
#P connect 21 0 29 1;
#P connect 29 1 35 0;
#P connect 35 0 16 3;
#P connect 29 0 16 3;
#P fasten 11 1 20 0 139 219 288 219;
#P fasten 10 0 9 0 231 136 294 136;
#P fasten 17 0 9 0 231 82 294 82;
#P fasten 11 3 20 1 241 216 305 216;
#P fasten 17 2 5 0 389 90 389 90;
#P fasten 20 0 21 1 288 283 417 283;
#P fasten 5 0 0 0 389 126 454 126;
#P pop;
#P hidden newobj 93 175 69 196617 p thispacther;
#P window setfont "Arial Rounded MT Bold" 24.;
#P comment 100 123 221 197066776 Drag And Move;
#P user panel 54 121 282 35;
#X brgb 255 255 255;
#X frgb 99 99 99;
#X border 1;
#X rounded 8;
#X shadow 0;
#X done;
#P window setfont "Sans Serif" 9.;
#P comment 302 165 51 196617 Line?;
#P hidden fasten 5 0 3 0 98 227 70 227 70 171 98 171;
#P hidden fasten 3 1 5 0 157 196 98 196;
#P hidden connect 3 0 5 0;
#P hidden connect 4 0 3 1;
#P hidden connect 4 1 3 2;
#P hidden connect 6 0 7 0;
#P pop;
____________________________

関連記事




次の記事

Dec 12, 05
Written by noriko matsumoto | info
Gabocoyメンバーが参加する東京でのイベントがあります。 またそちらで、これまでgabocoyメンバ−が制作した...

前の記事

Dec 03, 05
Written by noriko matsumoto | Max+Others , Max/MSP+Jitter
『んー、この作業を自動化したい!』とか一日に一回データーをコピーしてほしい、削除したーいなど が出てくることがありますが、これはMacを使っていると、Applescriptを書くことで作業を簡単にすることができます。...