Q:QuickTime エフェクトの中でエフェクトパラメータデータ型の kParameterTypeDataImage を使用したいのですが、このデータ型における kParameterDataDefaultItem、kParameterDataBehavior、kParameterDataRange の各アトムの値を設定する方法を説明する文書が見当たりません。
A:エフェクトパラメータの kParameterDataType アトムは、対応するエフェクトパラメータのデータのタイプを定義します。データ型 kParameterTypeDataImage は、イメージデータへの参照を指定します。
kParameterTypeDataImage をパラメータデータ型として使用するとき、以下のガイドラインに従って、対応するパラメータ記述アトムを設定します。
kParameterDataRange:これは ImageRangeRecord であり、対応するエフェクトパラメータが取り得る値の有効範囲を定義します。このレコードの最初のフィールドである imageFlags の値は 0(ゼロ)に設定します。この値は kParameterImageNoFlags という定数として定義されています。
kParameterDataBehavior:このアトムは、エフェクトパラメータをクライアントアプリケーションがどのように表示するべきかを示します。最初のフィールドである behaviorType の値は kParameterItemDragImage に設定します。これにより、コントロールに新しいイメージをドラッグすることでイメージを変更できるようになります。behaviorFlags フィールドの値は 0(kParameterImageNoFlags )にします。
kParameterDataDefaultItem:このアトムは、パラメータのデフォルト値を保持し、無地の色または PICT イメージデータを指定する 3 つの short 型の値である必要があります。
デフォルト項目(kParameterDataDefaultItem )のサイズが Picture の最小サイズより小さい場合(10 バイト未満。QuickDraw.h 参照)、QuickTime はデータが無地の色であると見なしてデフォルトイメージを作成します。
デフォルト項目(kParameterDataDefaultItem )のサイズが Picture の最小サイズより大きい場合(10 バイト以上。QuickDraw.h 参照)、QuickTime は項目に有効な PICT データが含まれているものと見なしてデフォルトイメージの作成に使用します。
これらの定数は、ほかのエフェクトパラメータレコード、フラグ、および値とともに ImageCodec.h に定義されています。
以下のリストに、データ型が kParameterTypeDataImage のときに、QuickTime が対応するパラメータアトムを設定する方法を示します。リスト 1 は、「リップル」エフェクトのためのリップルマスクに対応するもので、リスト 2 は、「傾斜ワイプ」エフェクトのためのマットに対応するものです。
|
リスト 1. リップルエフェクト用の kParameterTypeDataImage
|
// --------------------
// マスク
kParameterAtomTypeAndID, 104, noChildren,
{
OSType { "mask" };
long { "1" };
kAtomNotInterpolated;
string { "Ripple mask" };
};
kParameterDataType, 104, noChildren,
{
kParameterTypeDataImage;
};
kParameterDataRange, 104, noChildren,
{
long { "0" };
};
kParameterDataBehavior, 104, noChildren,
{
kParameterItemDragImage;
long { "0" };
};
kParameterDataDefaultItem, 104, noChildren,
{
short { "0" }; // ブラックを short として
short { "0" }; // ブラックを short として
short { "0" }; // ブラックを short として
};
|
|
リスト 2. 傾斜ワイプ用の kParameterTypeDataImage
|
// --------------------
// マット
kParameterAtomTypeAndID, 104, noChildren,
{
OSType { "matt" };
long { "1" };
kAtomNotInterpolated;
string { "Matte" };
};
kParameterDataType, 104, noChildren,
{
kParameterTypeDataImage;
};
kParameterDataRange, 104, noChildren,
{
long { "0" };
};
kParameterDataBehavior, 104, noChildren,
{
kParameterItemDragImage;
long { "0" };
};
kParameterDataDefaultItem, 104, noChildren,
{ // PICT
lstring {
$"129A 0000 0000 0100 0155 0011 02FF 0C00" /*.?.......U...?.. */
$"FFFE 0000 0048 0000 0048 0000 0000 0000" /*??...H...H...... */
$"0100 0155 0000 0000 00A1 01F2 0016 3842" /*...U.....°.Ú..8B */
$"494D 0000 0000 0000 0100 0155 4772 8970" /*IM.........UGr?p */
$"68AF 626A 0001 000A 0000 0000 0100 0155" /*hÿbj...........U */
$"0098 8158 0000 0000 0100 0155 0000 0000" /*.ÚÅX.......U.... */
$"0000 0000 0048 0000 0048 0000 0000 0008" /*.....H...H...... */
$"0001 0008 0000 0000 0000 0000 0000 0000" /*................ */
$"0000 0028 0000 00FF 0000 FFFF FFFF FFFF" /*...(...?..?????? */
$"0001 FEFE FEFE FEFE 0002 FDFD FDFD FDFD" /*..??????..?????? */
$"0003 FCFC FCFC FCFC 0004 FBFB FBFB FBFB" /*.. ..?????? */
$"0005 FAFA FAFA FAFA 0006 F9F9 F9F9 F9F9" /*..??????..?????? */
$"0007 F8F8 F8F8 F8F8 0008 F7F7 F7F7 F7F7" /*..ØØØØØØ..òòòòòò */
$"0009 F6F6 F6F6 F6F6 000A F5F5 F5F5 F5F5" /*.?àààààà..?????? */
$"000B F4F4 F4F4 F4F4 000C F3F3 F3F3 F3F3" /*..??????..ÛÛÛÛÛÛ */
$"000D F2F2 F2F2 F2F2 000E F1F1 F1F1 F1F1" /*.¨ÚÚÚÚÚÚ..?????? */
$"000F F0F0 F0F0 F0F0 0010 EFEF EFEF EFEF" /*..??????.. */
... PICT データが続く ...
$"0006 8100 8100 A900 00FF" /* ..Å.Å.©..? */
};
};
|
参考資料:
[2003 年 12 月 9 日] |