001: /*
002: * This file is part of the GeOxygene project source files.
003: *
004: * GeOxygene aims at providing an open framework which implements OGC/ISO specifications for
005: * the development and deployment of geographic (GIS) applications. It is a open source
006: * contribution of the COGIT laboratory at the Institut Géographique National (the French
007: * National Mapping Agency).
008: *
009: * See: http://oxygene-project.sourceforge.net
010: *
011: * Copyright (C) 2005 Institut Géographique National
012: *
013: * This library is free software; you can redistribute it and/or modify it under the terms
014: * of the GNU Lesser General Public License as published by the Free Software Foundation;
015: * either version 2.1 of the License, or any later version.
016: *
017: * This library is distributed in the hope that it will be useful, but WITHOUT ANY
018: * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
019: * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
020: *
021: * You should have received a copy of the GNU Lesser General Public License along with
022: * this library (see file LICENSE if present); if not, write to the Free Software
023: * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
024: *
025: */
026:
027: package fr.ign.cogit.geoxygene.spatial.geomcomp;
028:
029: import fr.ign.cogit.geoxygene.spatial.coordgeom.DirectPosition;
030: import fr.ign.cogit.geoxygene.spatial.geomprim.GM_Point;
031:
032: //import spatial.geomprim.Bearing;
033: //import spatial.geomprim.GM_Boundary;
034: //import spatial.geomprim.GM_OrientablePrimitive;
035:
036: /**
037: * Complexe contenant un et un seul GM_Point. Cette classe ne sert pas a grand chose mais elle a été mise pour homogénéiser
038: * avec les GM_Composite des autres types de primitives.
039: * Hérite de GM_Point, mais le lien n'apparaît pas explicitement (problème de double héritage en java). Les méthodes et attributs ont été reportés.
040: * <P> Utilisation : un GM_CompositePoint se construit exclusivement à partir d'un GM_Point.
041: *
042: * <P> ATTENTION : normalement, il faudrait remplir le set "element" (contrainte : toutes les primitives du generateur
043: * sont dans le complexe). Ceci n'est pas implémenté pour le moment.
044: *
045: * @author Thierry Badard & Arnaud Braun
046: * @version 1.0
047: *
048: */
049:
050: public class GM_CompositePoint extends GM_Composite {
051:
052: /////////////////////////////////////////////////////////////////////////////////////////
053: // Attribut et méthodes propres à GM_CompositePoint /////////////////////////////////////
054: /////////////////////////////////////////////////////////////////////////////////////////
055:
056: /** Le GM_Point constituant self. C´est une référence (un nouvel objet n'est pas construit).*/
057: protected GM_Point generator;
058:
059: /** Renvoie le GM_Point constituant self. */
060: public GM_Point getGenerator() {
061: return this .generator;
062: }
063:
064: /** Affecte le GM_Point constituant self. */
065: public void setGenerator(GM_Point value) {
066: this .generator = value;
067: this .position = new DirectPosition(value.getPosition()
068: .getCoordinate());
069: }
070:
071: /** Renvoie 1 si un GM_Point a été affecté, 0 sinon. */
072: public int sizeGenerator() {
073: if (this .generator == null)
074: return 0;
075: else
076: return 1;
077: }
078:
079: /////////////////////////////////////////////////////////////////////////////////////////
080: // Attribut et méthodes héritées de GM_Point (héritage simulé) //////////////////////////
081: /////////////////////////////////////////////////////////////////////////////////////////
082:
083: /** DirectPosition du point (DirectPosition étant la classe stockant les coordonnées). */
084: protected DirectPosition position;
085:
086: /** Renvoie le DirectPosition du point. */
087: public DirectPosition getPosition() {
088: position = generator.getPosition();
089: return this .position;
090: }
091:
092: // la methode setPosition n'existe pas, pour obliger a passer par le generator pour affecter un point.
093:
094: // Dans la norme, on passe un GM_Position en parametre. Je prefere faire 2 methodes pour simplifier,
095: // l'une avec un GM_Point en parametre, l'autre avec un DirectPosition.
096: /** NON IMPLEMENTE (renvoie null).
097: * Direction entre self et le GM_Point passé en paramètre, en suivant une courbe qui dépend du sytème de coordonnées (courbe géodésique par exemple).
098: * Le bearing retourné est un vecteur.
099: */
100: /*public Bearing bearing(GM_Point toPoint) {
101: return null;
102: }*/
103:
104: /** NON IMPLEMENTE (renvoie null).
105: * Direction entre self et le DirectPosition passé en paramètre, en suivant une courbe qui dépend du sytème de coordonnées (courbe géodésique par exemple).
106: * Le bearing retourné est un vecteur.
107: */
108: /*public Bearing bearing(DirectPosition toPoint) {
109: return null;
110: }*/
111:
112: /////////////////////////////////////////////////////////////////////////////////////////
113: // Constructeurs ////////////////////////////////////////////////////////////////////////
114: /////////////////////////////////////////////////////////////////////////////////////////
115: /** Constructeur par défaut. */
116: public GM_CompositePoint() {
117: position = new DirectPosition();
118: }
119:
120: /** Constructeur à partir d'un GM_Point. */
121: public GM_CompositePoint(GM_Point thePoint) {
122: this .generator = thePoint;
123: position = new DirectPosition(thePoint.getPosition()
124: .getCoordinate());
125: }
126:
127: }
|