レンダラーの永続化

状況によっては、レンダラーを保存する必要があります。例えば、ロード・オンデマンド・モードで作業を行っている場合、オブジェクト自体ではなく、レイヤーのグラフィック・オブジェクトをロードする際に必要なパラメーターのみを保存するような場合です。ロード・オンデマンドについては、「ロード・オンデマンドの使用」を参照してください。
この例のソース・コード一式は、以下のファイルにあります。
特定のレンダラーを使用してグラフィック・オブジェクトを作成している場合は、オブジェクトを描画するレンダラーを次にロードする場合と同じ方法で保存する必要があります。クラス IlvSDOLayer を使用すると、レイヤーに保存するレンダラー ( setFeatureRenderer を指定できます。
色付き線のレンダラーの作成」で紹介した ColorLineRenderer は、IlvPersistentObject を拡張して保存できる IlvFeatureRenderer インターフェースから派生します。
  /**
   * Writes this to specified stream.
   */
  public void write(IlvOutputStream stream)
  throws java.io.IOException
  {
    stream.write("attributeName",myAttributeName);
    if (myColorModel instanceof IlvPersistentObject)
      stream.write("colorModel",(IlvPersistentObject)myColorModel);
    else
      System.err.println("Warning : colormodel not saved");
  }
  public ColorLineRenderer(IlvInputStream stream)
  throws IlvReadFileException
  {
    myAttributeName = stream.readString("attributeName");
    try {
      myColorModel = (ColorModel)stream.readPersistentObject("colorModel");  
    } catch (IlvFieldNotFoundException e) {
      // Get default colormodel
      myColorModel = IlvIntervalColorModel.MakeElevationColorModel();
    }
  }
}