Springhead Users Manual

8.5 フレーム

フレームは座標変換を定義すると同時に他の描画アイテムのコンテナとしての役割を持ちます. フレームのクラスはGRFrameです. 次のコードは,フレームを作成してワールドフレームの子として登録します.


     GRFrameDesc desc;
     GRFrameIf* frame =
          grScene->CreateVisual(desc, grScene->GetWorldFrame())->Cast();

CreateVisual関数は指定されたディスクリプタに対応する描画アイテムを作成し, 指定された親フレームの子として登録します.親フレームを省くとデフォルトでワールドフレームに登録されます. したがって上のコード はCreateVisual(desc)としてもかまいません.

GRFrameRender関数は,子描画アイテムのRenderを順次呼び出します.

親子関係

フレーム間の親子関係を管理する関数には次のものがあります.

GRFrameIf

GRFrameIf*

GetParent()

void

SetParent(GRFrameIf*)

int

NChildren()

GRVisualIf**

GetChildren()

GetParentは親フレームを取得します. SetParentはそのフレームの親フレームを変更するために使います. NChildrenはそのフレームの子である描画アイテムの数を返します. これらにはフレーム以外の描画アイテムも含まれる ことに注意してください. GetChildrenは子描画アイテムの配列を取得します.

座標変換

フレームの座標変換を操作する関数は以下の通りです.

GRFrameIf

Affinef

GetTransform()

Affinef

GetWorldTransform()

void

SetTransform(const Affinef&)

GetTransformSetTransformはそれぞれフレームとその親フレームとの間の相対的な座標変換を取得/設定します. 例えば


     frame->SetTransform(Affinef::Trn(1.0, 0.0, 0.0));

とすると親フレームに対して相対的にx方向に\( 1.0 \)移動します.