/*----------------    FILE HEADER ---------------------------------------
 This file is part of Geoide.
 Copyright (C) 2005-2006 by:
 IDgis B.V.
 http://www.idgis.nl

 This library is free software; you can redistribute it and/or
 modify it under the terms of the GNU Lesser General Public
 License as published by the Free Software Foundation; either
 version 2.1 of the License, or (at your option) any later version.

 This library is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 Lesser General Public License for more details.

 You should have received a copy of the GNU Lesser General Public
 License along with this library; if not, write to the Free Software
 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA

 Contact:

 Herman Assink
 IDgis bv
 P.O. Box 15
 7450 AA Holten
 The Netherlands
 E-Mail: herman.assink@idgis.nl

 * @version 1.4.0
 * @author IDgis team
 * 
 ------------------------------------------------------------------------*/
import nl.idgis.giclient.geoma.Envelope;
import nl.idgis.giclient.geoma.GeometryEventDispatcher;
import nl.idgis.giclient.geoma.Point;

class nl.idgis.giclient.geoma.Geometry {

    private var superGeometry:Geometry = null;
    private var srsName:String = null;

    var geometryEventDispatcher:GeometryEventDispatcher = null;

    function Geometry(srsName:String) {
    	  this.srsName = srsName;
        geometryEventDispatcher = new GeometryEventDispatcher();
    }

    function setSuperGeometry(superGeometry:Geometry):Void {
        this.superGeometry = superGeometry;
    }

    function getSuperGeometry():Geometry {
        return superGeometry;
    }

    function getMostSuperGeometry():Geometry {
        var mostSuperGeometry:Geometry = this;
        while (mostSuperGeometry.getSuperGeometry() != null) {
            mostSuperGeometry = mostSuperGeometry.getSuperGeometry();
        }
        return mostSuperGeometry;
    }
    
    function getSRS():String {
    	return srsName;
    }

    function getGeometries():Array {return null;}

    function addPoint(point:Point, permanent:Boolean):Void { }

    function addPointN(point:Point, number:Number, permanent:Boolean):Void { }

    function removeGeometry(geometry:Geometry):Void { }

    function removePoint(point:Point, permanent:Boolean):Void { }

    function setPointXY(x:Number, y:Number):Void { }

    function move(dx:Number,dy:Number, permanent:Boolean):Void { }

    function getCoords():Array {return null;}

    function getCenterPoint():Point {return null;}

    function getNearestPoint(point:Point):Point {return null;}

    function getEnvelope():Envelope {return null;}

    function clip(envelope:Envelope):Geometry {return null;}

    function clone():Geometry {return null;}

    function toString():String {return null;}

}