高度な検索
Developer Connection
Member Login ログイン | ご入会 ADC連絡先

Technical Q&A QA1326
QuickTime Effects - How to set up parameter description values when using kParameterTypeDataImage

Q:QuickTime エフェクトの中でエフェクトパラメータデータ型の kParameterTypeDataImage を使用したいのですが、このデータ型における kParameterDataDefaultItemkParameterDataBehaviorkParameterDataRange の各アトムの値を設定する方法を説明する文書が見当たりません。

A:エフェクトパラメータの kParameterDataType アトムは、対応するエフェクトパラメータのデータのタイプを定義します。データ型 kParameterTypeDataImage は、イメージデータへの参照を指定します。

kParameterTypeDataImage をパラメータデータ型として使用するとき、以下のガイドラインに従って、対応するパラメータ記述アトムを設定します。

  • kParameterDataRange:これは ImageRangeRecord であり、対応するエフェクトパラメータが取り得る値の有効範囲を定義します。このレコードの最初のフィールドである imageFlags の値は 0(ゼロ)に設定します。この値は kParameterImageNoFlags という定数として定義されています。

  • kParameterDataBehavior:このアトムは、エフェクトパラメータをクライアントアプリケーションがどのように表示するべきかを示します。最初のフィールドである behaviorType の値は kParameterItemDragImage に設定します。これにより、コントロールに新しいイメージをドラッグすることでイメージを変更できるようになります。behaviorFlags フィールドの値は 0kParameterImageNoFlags )にします。

  • 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 日]