マネージャー・レイヤー
レイヤーは、
Figure 1.3で示すように、グラフィック・オブジェクトの格納場所です。
図 1.3 レイヤー
これらのオブジェクトは格納されると、同じマネージャーによって制御および編成が行われます。それぞれのレイヤーはマネージャーに固有となっており、1 つのマネージャーによってのみ制御します。マネージャーが処理するそれぞれのグラフィック・オブジェクトは、ただ 1 つのレイヤーに属します。
このセクションは、以下のように構成されています。
レイヤー・レンダリング
レイヤー・インデックス
レイヤーは、そのインデックスに従ってマネージャーに格納されます。最初のレイヤーのインデックスは
0 で、
N 番目のレイヤーのインデックスは
N -1 です。レイヤーは
IlvManagerLayer クラスのインスタンスで表現されますが、多くの場合はマネージャーのインデックスによってメンバー関数の署名で識別されます。さまざまなメンバー関数により、これらのレイヤーまたはレイヤーにあるオブジェクトの操作ができます。
マネージャーはレイヤーをインデックス 0 から順に 1 つずつ描画します。その結果、画面の一番上のレイヤーのインデックスが一番高くなります。これにより、レイヤー・インデックスに基づいてグラフィック・オブジェクトに視覚的な階層ができます。通常、Rogue Wave Views プログラムの背景として使用されるオブジェクトなどのように、より静的な性質のグラフィック・オブジェクトは、マネージャーの下位レイヤーに配置する必要があります。ユーザー・インタラクションがある動的な性質のグラフィック・オブジェクトは、上位レイヤーに配置します。一番上のレイヤー (インデックスが一番高いレイヤー) は、マネージャーの使用のために予約されており、選択されたオブジェクトの周囲に四角ハンドルとして表示される選択オブジェクトを含んでいます。マネージャーはレイヤーが新規追加されるたびにこのレイヤーのインデックスを増加させるため、常にスタックの一番上に残ります。
レイヤーの設定
デフォルトで、マネージャーは 2 つのレイヤーで作成されます。コンストラクターの 2 番目のパラメーターを使用することにより、マネージャーの作成時にこの数を変更できます。また、IlvManager::setNumLayers メンバー関数を使用することにより、マネージャーの作成後にこの数を変更することもできます。
注記: レイヤーは 0 から始まるインデックス番号で参照する必要があります。たとえば、レイヤー 3 のインデックス番号は 2 になります。 |
例
次のコードは、マネージャーの 2 番目のレイヤー (インデックス 1 で指定) にオブジェクトを追加し、オブジェクトをレイヤー 0 に移動します。
manager->addObject(object, IlvTrue, 1); manager->setLayer(object, 0); |
存在しないレイヤー・インデックスを使用してグラフィック・オブジェクトを追加すると、レイヤーの数は自動的に増加します。
IlvManager* manager = new IlvManager(display); // A manager with 2 layers IlvRectangle* rect = new IlvRectangle(display, IlvRect(0, 0, 100, 100)); // Add the object in layer 7 and create intermediate layers manager->addObject(rect, IlFalse, 7); |
レイヤーの選択性
レイヤーの選択性は、アプリケーションのエンド・ユーザーが特定のレイヤーのオブジェクトを選択できるかどうかを示します。プログラムのユーザーがレイヤー内のグラフィック・オブジェクトを選択できないようにすると、これらのオブジェクトは固定され、変更できなくなります。レイヤーの選択性には、次のメンバー関数を使用します。
レイヤーの可視性
レイヤーの可視性は、特定のレイヤー内のオブジェクトをユーザーに表示するかどうかを指定します。レイヤーはさまざまな方法で非表示にできるため、レイヤーの可視性という概念はそれほど単純なものではありません。
グローバル - すべてのマネージャー・ビューで非表示にします。
ローカル - 1 つ以上のマネージャー・ビューで非表示にします。
コンテキスト - アプリケーション可視フィルターにより非表示にします。
レイヤーはこれらのいずれかの方法で非表示にされていない限り、ビューに表示されます。
グローバルな可視性
レイヤーはグローバルに非表示となり、どのマネージャー・ビューにも表示されません。次の
IlvManager メンバー関数により、レイヤーにグローバルな可視性を設定または解除できます。
setVisible (int layer, IlBoolean val) isVisible (int layer) ローカルな可視性
次の
IlvManager メンバー関数により、特定のマネージャー・ビューのレイヤーに可視性を設定または解除できます。
setVisible (const IlvView* view, int layer, IlBoolean visible) isVisible (const IlvView* view, int layer) 可視性フィルター
IlvLayerVisibilityFilter は抽象クラスです。サブクラスは、レイヤーの可視性状態を戻すために、仮想メンバー関数 IlvLayerVisibilityFilter::isVisible を再定義しなければなりません。
それぞれのマネージャー・レイヤーは可視性フィルターのリストを処理します。ビューにレイヤーを描画する必要がある場合、マネージャーはそのレイヤーのすべてのフィルターに対してメンバー関数
isVisible を呼び出します。可視性フィルターで
IlFalse が戻されるとレイヤーは表示されません。アプリケーションはこのメカニズムで、表示可能なレイヤーを非表示することだけできます。非表示レイヤーを表示させることはできません。
レイヤーに可視性フィルターを追加するには、IlvManagerLayer::addVisibilityFilter を使用します。
レイヤー・レンダリング
レイヤー・レンダリングは、レイヤーが描画デバイスにどのようにレンダリングされるかを示します。レイヤーの 2 つのアトリビュートによりレンダリングを変更できます。
アルファ値
レイヤーのアルファ値は、このレイヤーが他のレイヤーの上に描画されるときの不透明度を示します。透明色のオブジェクトが含まれるレイヤーでは、レイヤーの透明度と透明オブジェクトが構成されます。
この設定のデフォルト値は IlvFullIntensity です。つまり、レイヤーは完全に不透明になります。
アンチエイリアシング・モード
レイヤーのアンチエイリアシング・モードはグローバル設定であり、このレイヤーのすべてのオブジェクトに適用されます。これは、オブジェクトのレンダリングで使用されるアンチエイリアシング・モードを示します。
この設定のデフォルト値は IlvDefaultAntialiasingMode です。つまり、レイヤーのアンチエイリアシング・モードは描画ポート自体から継承されます。たとえば、マネージャー・ビューのアンチエイリアシング・モードが IlvUseAntialiasingMode に設定されている場合 (IlvPort::setAntialiasingMode 参照)、このビューのすべてのレイヤーでアンチエイリアシングが使用されます。特定のレイヤーにアンチエイリアシングが不要であることを指定することにより、このレイヤーの設定をオーバーライドできます。
メモ: これらの機能は、GDI+ がインストールされた Microsoft Windows のみでサポートされます。詳細は、『Foundation ユーザー・マニュアル』の付録 B にある「GDI+」を参照してください。 |
Version 5.6
Copyright © 2012, Rogue Wave Software, Inc. All Rights Reserved.