Max 5 API Reference

補遺B: UI オブジェクトに対するアイコンの用意

Max用のユーザインターフェイスオブジェクトを書くのであれば、そのオブジェクトにアイコンを用意することを推奨します。

アイコンを用意しておけば、ユーザはオブジェクトパレットから穴が作成したクラス(オブジェクト)のインスタンスを作ることができ、オブジェクトがデフォルトで持つインスペクタなどを含む Max とユーザのインタラクションをより快適なものにすることができます。

オブジェクトの SVG アイコン

Max のオブジェクトに対して Cycling '74 がどのようにアイコンを用意しているかを見るために、Max によってインストールされている "Cycling '74/object-palettes" というフォルダの中を見て下さい。オブジェクトのために様々な SVG (scalable vecter graphics)ファイルがあることが分かるでしょう。これらのファイルはクラス名(オブジェクトの main() 関数で定義されたものと同じ名前)と同じ名前をつけられています。これによりオブジェクトとアイコンが関連づけられます。Max によって認識されるためには、作成した SVGiアイコンファイルをこのフォルダ内に置いておく必要があります。

SVG ファイルは様々なアプリケーションソフトで編集することができます。例えば、InkScape や Adobe Illustrator などです。Mac では OmniGraffe から SVG ファイルをエクスポートすることもできます。Max のオブジェクトアイコンはこの方法で作られています。

オブジェクトパレット定義

svg ファイルを追加することにより、アイコンは Maxから利用できるようになります。しかし、新規オブジェクトパレットにこのアイコンを表示させるためには、このSVGファイルを含むパレットを作成する必要があります。Cycling '74/object-palettes フォルダ(SVG ファイルを置いた場所です)の中を見ると、 "palette1.json"、"palette2.json"、palette3.json" というような名前のファイルがあることに気づくと思います。作成したオブジェクト用には、新しいパレットファイルを作らなければなりません。

次の例では "littleuifo" という名前のオブジェクトを作成したと仮定しています。このオブジェクト用に "littleuifoo-palette.json" というパレットファイルを作る場合、ファイルの内容は下に示すようなものになるでしょう。

{
	"patcher" : 	{
		"rect" : [ 0.000000, 0.000000, 1000.000000, 1000.000000 ],
		"bgcolor" : [ 1.000000, 1.000000, 1.000000, 1.000000 ],
		"bglocked" : 0,
		"defrect" : [ 10.000000, 59.000000, 1176.000000, 668.000000 ],
		"boxes" : [ 			{
				"box" : 				{
					"maxclass" : "fpic",
					"boxalpha" : 1.000000,
					"presentation" : 0,
					"destrect" : [ 0.000000, 0.000000, 0.000000, 0.000000 ],
					"patching_rect" : [ 241.000000, 244.000000, 100.000000, 50.000000 ],
					"autofit" : 0,
					"id" : "obj-1",
					"ignoreclick" : 0,
					"hidden" : 0,
					"fontname" : "Courier",2
					"pic" : "littleuifoo.svg",
					"xoffset" : 0.000000,
					"yoffset" : 0.000000,
					"background" : 0,
					"presentation_rect" : [ 0.000000, 0.000000, 0.000000, 0.000000 ],
					"fontsize" : 12.000000,
					"instance_attributes" : 					{
						"palette_category" : [ "Images", "Interface" ],
						"palette_action" : "littleuifoo"
					}
				}
			}
 		],
		"lines" : [  ]
	}
}	

このパレットファイルの大部分は、どのようなオブジェクトにも共通するものです。慧眼な読者は、これが fpic オブジェクトを含むパッチを表す t_dictionary の JSON 表現であることに気づくかもしれません。このディクショナリの中の3行に注意して下さい。

  1. fpic オブジェクトの 'pic" アトリビュートは、新規オブジェクトパレットにどのような画像を表示するかを決定します。
  2. 'palette_category' インスタンスアトリビュートは、新規オブジェクトパレットの中のどのカテゴリ/タブにアイコンを表示させるかを決定します。
  3. 'palette_action" インスタンスアトリビュートはユーザがアイコンを選択したときにインスタンス化するクラスを決定します。

Copyright © 2008, Cycling '74