グループ、コンポジション、トラックの作成
グループ、コンポジション、トラックは、タイムラインとソース クリップとの間の中間レイヤである。これらは、その中に入るオブジェクトのタイプによって区別される。
- トラックには、ソース オブジェクトが入る。
- コンポジションには、トラックおよび他のコンポジションが入るが、ソース オブジェクトは入らない。
- グループは、最上位レベルのコンポジションである。グループには、コンポジションとトラックが入るが、コンポジションの中にグループを入れることはできない。
- "仮想トラック" は、コンポジションまたはグループ内に配置できる任意のオブジェクトである。これには、トラックおよびコンポジションが含まれる。
これらのオブジェクトは、以下のインターフェイスを公開する。
インターフェイス | 公開元 |
IAMTimelineTrack | トラック |
IAMTimelineVirtualTrack | トラック、コンポジション |
IAMTimelineComp | コンポジション、グループ |
IAMTimelineGroup | グループ |
これらのインターフェイスには、オブジェクトをタイムラインに追加するメソッドが含まれている。
- IAMTimeline::AddGroup : タイムラインにグループを挿入する。
- IAMTimelineComp::VTrackInsBefore : コンポジションまたはグループに仮想トラックを挿入する。
- IAMTimelineTrack::SrcAdd : トラックにソースを挿入する。
たとえば、次のコードは新しいトラックをグループに挿入する。前の表に示したように、グループはコンポジションの一種と考えられ、トラックは仮想トラックの一種と考えられる。したがって、トラックをグループに挿入するには、グループにその IAMTimelineComp インターフェイスについて問い合わせ、IAMTimelineComp::VTrackInsBefore メソッドを呼び出さなければならない。
IAMTimelineGroup *pGroup;
// 新しいグループを作成する (省略)。
IAMTimelineComp *pComp = NULL;
IAMTimelineObj *pTrackObj = NULL;
pTL->CreateEmptyNode(&pTrackObj, TIMELINE_MAJOR_TYPE_TRACK);
pGroup->QueryInterface(IID_IAMTimelineComp, (void **)&pComp);
pComp->VTrackInsBefore(pTrackObj, 0);
VTrackInsBefore の 2 番目のパラメータは、仮想トラックの優先順位を指定する。優先順位レベルはゼロから始まる。-1 を指定した場合、仮想トラックは優先順位リストの最後に挿入される。既に仮想トラックが存在するレベルの値を指定した場合は、その位置以下のすべてのオブジェクトの優先順位レベルが 1 ずつ下げられる。仮想トラックの個数より大きい優先順位レベルの仮想トラックを挿入してはならない。それを行った場合の動作は未定義となる。
タイムラインからオブジェクトを完全に削除するには、そのオブジェクトに対して IAMTimelineObj::RemoveAll メソッドを呼び出す。このメソッドは、オブジェクトとその子をすべて削除する。オブジェクトをタイムラインの別の場所に再挿入する目的で削除するには、代わりに IAMTimelineObj::Remove を呼び出す。RemoveAll と異なり、このメソッドはオブジェクトの子は削除しない。タイムラインからすべてを削除するには、IAMTimeline::ClearAllGroups を呼び出す。