Maps > Rogue Wave Views リーダー・フレームワーク > レンダラー > レンダラーの永続化
 
レンダラーの永続化
場合によっては、レンダラーを保存する必要があります。たとえば、ロード・オン・デマンド・モードで作業を行っている場合、オブジェクト自体ではなく、レイヤーのグラフィック・オブジェクトをロードする際に必要なパラメーターのみを保存するような場合です。ロード・オン・デマンドについては、ロード・オン・デマンドの使用を参照してください。
特定のレンダラーを使ってグラフィック・オブジェクトを作成している場合は、オブジェクトを描画するレンダラーを次にロードする場合と同じ方法で保存する必要があります。たとえば、クラス IlvSDOLayer を使うと、レイヤーに保存するレンダラーを指定できます。リファレンス・マニュアルIlvSDOLayer::setFeatureRenderer を参照してください。
前のセクションで説明した ColorLineRenderer は、IlvFeatureRenderer 抽象クラスから派生します。このクラスは、永続性に関連する 3 つのメソッドを指定します。isPersistent メソッドは、レンダラーに永続性があるかどうかを指定し、write メソッドはレンダラーを IlvOutputFile に書き込み、save メソッドはクラスとレンダラーを保存します。永続性のあるレンダラーを実装する場合は、isPersistent メソッドと write メソッドの上書きが必要です。
IlvBoolean
ColorLineRenderer::isPersistent()
{
return IlvTrue;
}
 
void
ColorLineRenderer::write(IlvOutputFile& output) const
{
IlvWriteString(output, _attributeName);
 
if(_colorModel->isPersistent()) {
output.getStream() << 1 << IlvSpc();
_colorModel->write(output);
} else {
output.getStream() << 1 << IlvSpc();
IlvWarning("colormodel not saved");
}
}
 
ただし、他の任意の色モデルを使って、永続性のないレンダラーも作成できます。その場合、色モデルは保存されず、write メソッドが警告を生成します。
レンダラーとともに色モデルが保存されない場合は、レンダラーの読み込み時にデフォルトの色モデルが作成されます。
ColorLineRenderer::ColorLineRenderer(IlvInputFile& stream)
:IlvFeatureRenderer(stream.getDisplay(), IlvTrue)
{
char* s = IlvReadString(stream);
if(s)
_attributeName = strcpy(new char[strlen(s)+1], s);
 
IlvInt hasColorModel;
stream.getStream() >> hasColorModel;
if(hasColorModel) {
_colorModel = (IlvMapColorModel*)
IlvMapClassInfo::ReadObject(IlvMapColorModel::ClassInfo(),
stream,
0);
} else {
_colorModel = IlvIntervalColorModel::MakeElevationColorModel();
}
}
 

Version 6.0
Copyright © 2015, Rogue Wave Software, Inc. All Rights Reserved.