グラファー・インタラクター
IlvManager クラスは、オブジェクトを作成してその形状を変えるために使用する多種多様なインタラクターを提供します。
IlvGrapher クラスには、新しいノードとリンクを作成してそれらの接続方法を変更するための特定インタラクターが含まれます。
選択インタラクター
IlvGraphSelectInteractor クラスは
IlvSelectInteractor クラスから派生しています。移動または拡大されるノードに付加されたリンクのゴースト・イメージの描画を管理するために使用する追加のメンバー関数が含まれています。このクラスには以下のコンストラクターがあります。
IlvGraphSelectInteractor(IlvManager* manager, IlvView* view);
このコンストラクターは、マネージャー
manager に接続されたビュー
view の個別オブジェクトまたはオブジェクトのグループの選択を可能にする
IlvGraphSelectInteractor クラスの新しいインスタンスを初期化します。このマネージャーは、
IlvGrapher クラスのインスタンスであると想定されます。
ノードの作成
IlvMakeNodeInteractor クラスは、グラファーにノードをインタラクティブに作成できるインタラクターのベース・クラスです。このクラスのインスタンスは、ここで示すように、グラファーとそのいずれかの接続ビューに付加する必要があります。
IlvGrapher* graph = ...;
IlvView* view = ...;
IlvMakeNodeInteractor * inter = new IlvMakeNodeInteractor(graph, view);
graph->setInteractor(inter);
ノードを作成するには、作業中のビューで矩形領域をドラッグします。作成するグラフィック・オブジェクトの種類を指定する方法は 2 つあります。
グラファー・ライブラリーは、IlvMakeNodeInteractor の定義済みサブクラスを提供します。
リンクの作成
IlvMakeLinkInteractor クラスは、グラファーでノードをインタラクティブに接続できるインタラクターのベース・クラスです。コンストラクターは次の通りです。
IlvMakeLinkInteractor(IlvManager* manager, IlvView* view, IlvBoolean oriented = IlvTrue); |
oriented パラメーターは、作成されたリンクに向きがあるかどうかを指定します。以下に、このタイプのインタラクターを作成してグラファーとそのいずれかのビューに接続する方法の例を示します。
IlvGrapher* graph = ...;
IlvView* view = graph->getFirstView();
IlvMakeLinkInteractor * inter = new IlvMakeLinkInteractor(graph, view);
graph->setInteractor(inter);
2 つのノードを接続するには、次の手順に従います。
1. 開始ノードをクリックします。インタラクターがこのノードを有効であると判断した場合、ノードは強調表示されます。
2. マウスを終了ノードまでドラッグします。このノードが有効な場合は、同じように強調表示されます。
3. マウスを放すとリンクが作成されます。
IlvMakeLinkInteractor::acceptFrom メソッドと IlvMakeLinkInteractor::acceptTo メソッドをオーバーロードすることにより、どのノードを有効にするかを制御できます。作成するリンクの種類を指定する方法は、次の 2 つです。
IlvMakeLinkInteractorFactory クラスをサブタイプ化して、その
IlvMakeLinkInteractorFactory::createLink メソッドをオーバーロードする。
IlvMakeLinkInteractor::setFactory メソッドを使用して、リンク・ファクトリーとインタラクターを関連付けることができます。
グラファー・ライブラリーは、IlvMakeLinkInteractor の定義済みサブクラスを複数提供します。
ポリライン・リンクの作成
このインタラクターを使用して、中間点を明示的に定義できるリンクを作成します。これにより、IlvMakePolyLinkInteractor::accept メソッドを使用して描画できる形状を制御できます。
virtual IlvBoolean accept(IlvPoint& point);
このメソッドをオーバーロードすることにより、リンクの中間点の位置に特定の制約を加えることができます。これらの点を定義すると、リンクが
IlvMakePolyLinkInteractor::makeLink メソッドで作成されます。このメソッドはサブクラスに定義し、適切なリンク・インスタンスを返すようにする必要があります。グラファー・ライブラリーには定義済みサブクラスが 1 つあります (
IlvMakePolylineLinkInteractor)。
IlvPolylineLinkImage タイプのリンクを作成する場合はこれを使用します。
接続ピンの編集
IlvPinEditorInteractor クラスを使用すると、グラファー・ノードの接続ピンをインタラクティブに編集できます。このインタラクターがアクティブである場合、
Figure 2.11で示すように、ノードを選択するとその接続ピンが強調表示されます。
図 2.11 強調表示された接続ピン
グラファー・ノードを選択すると、次が可能になります。
ノードの内側をクリックして新しい接続ピンを追加する。
接続ピンを削除する。これを行うには、マウスでピンを選択して Delete キーを押します。
既存の接続ピンを移動する。これを行うには、マウスでピンを選択して希望の位置までドラッグします。
リンクをピンに接続、またピンから接続解除する。これを行うには、接続ピンを選択してから該当するリンクをクリックします。
リンクの編集
リンクを選択すると、その選択オブジェクトによりハンドルが描画されます。これを使用して形状を変えたり、接続方法を編集したりできます。
Figure 2.12は選択されているノードを示します。
図 2.12 選択されたリンク
終点ハンドルをドラッグして次を実行できます。
リンクを付加する先の接続ピンを変更する。ハンドルを接続ピンの近くにドラッグすると、ピンは強調表示され、リンクはこの位置を利用して終点を計算します。
リンクを他のノードに接続する。
中間点ハンドルを使用してリンクの形状を編集できます。これらのハンドルで許可されるインタラクションの種類は、編集中のリンクの種類によって異なります。
メモ: リンク編集は IlvGrapher::setLinksEditable メソッドを使用してオフに切り替えることができます。 IlvGrapher インスタンスが作成されると、デフォルトではリンク編集が使用不可になります。 |
Version 6.0
Copyright © 2015, Rogue Wave Software, Inc. All Rights Reserved.