private メソッド

Flag レンダラーの以下の private メソッドは、ノード上のフラグを処理します。
  • checkNode
  • cleanNode
  • moveNode
以下のコード例で、checkNode のコードを示します。
フラグの検査
//////////////
    // local method
The checkNode method fetches the graphic property to see if a flag is defined for the node in its current state.
    // manage graphic props
    private void checkNode(IlvSDMEngine engine, Object obj, 
                           IlvGraphic graphic) {
        Object rawFlag = IlvRendererUtil.getGraphicProperty(engine, obj, 
                                               FLAG, REND_CLASS, null);
        if (rawFlag != null && rawFlag instanceof IlvGraphic) {
            IlvGraphic g = (IlvGraphic) rawFlag;
            // set flag location at top left corner  
            IlvRect r = graphic.boundingBox(null);
            g.move(r.x, r.y);
            // add object
            engine.getGrapher().addObject(g, _flagLayer, true);
            // save flag in the graphic itself
            graphic.addProperty(FLAG_GRAPHICS, g);
        }
    }
checkNode メソッドは、フラグが要求されているかどうかを検査して、必要な場合はオブジェクトの左上にフラグを追加してレンダリングします。
以下のコード例で、cleanNode のコードを示します。
フラグの削除
// remove previous flag
    private void cleanNode(IlvSDMEngine engine, IlvGraphic graphic) {
        // get the flag object from the source
        Object previous = graphic.getProperty(FLAG_GRAPHICS);
        if (previous != null) {
            // remove it and clear the property
            engine.getGrapher().removeObject((IlvGraphic)previous,true);
            graphic.removeProperty(FLAG_GRAPHICS);
        }
    }
不要になったフラグを削除するには、cleanNode メソッドを使用します。
以下のコード例で、moveNode のコードを示します。
ノードのフラグの移動
    // adjust flag position
    private void moveNode(IlvRect newBBox, IlvGraphic flag) {
        if (flag == null)
            return;
        flag.move(newBBox.x, newBBox.y);
    }
moveNode メソッドは、フラグが表示されるノードの新しいバウンディング・ボックスに従って、フラグのみを移動する場合に使用します。