00001 /********************************************************************** 00002 * $Id: TaggedLineSegment.h 1820 2006-09-06 16:54:23Z mloskot $ 00003 * 00004 * GEOS - Geometry Engine Open Source 00005 * http://geos.refractions.net 00006 * 00007 * Copyright (C) 2006 Refractions Research Inc. 00008 * 00009 * This is free software; you can redistribute and/or modify it under 00010 * the terms of the GNU Lesser General Licence as published 00011 * by the Free Software Foundation. 00012 * See the COPYING file for more information. 00013 * 00014 ********************************************************************** 00015 * 00016 * Last port: simplify/TaggedLineSegment.java rev. 1.1 (JTS-1.7) 00017 * 00018 ********************************************************************** 00019 * 00020 * NOTES: Use of this class by DP simplification algorithms 00021 * makes it useless for a TaggedLineSegment to store copies 00022 * of coordinates. Using pointers would be good enough here. 00023 * We don't do it to avoid having to break inheritance from 00024 * LineSegment, which has copies intead. Wheter LineSegment 00025 * itself should be refactored can be discussed. 00026 * --strk 2006-04-12 00027 * 00028 **********************************************************************/ 00029 00030 #ifndef _GEOS_SIMPLIFY_TAGGEDLINESEGMENT_H_ 00031 #define _GEOS_SIMPLIFY_TAGGEDLINESEGMENT_H_ 00032 00033 #include <geos/geom/LineSegment.h> // for inheritance 00034 00035 00036 // Forward declarations 00037 namespace geos { 00038 namespace geom { 00039 class Coordinate; 00040 class Geometry; 00041 } 00042 } 00043 00044 namespace geos { 00045 namespace simplify { // geos::simplify 00046 00047 00054 class TaggedLineSegment: public geom::LineSegment 00055 { 00056 00057 public: 00058 00059 TaggedLineSegment(const geom::Coordinate& p0, 00060 const geom::Coordinate& p1, 00061 const geom::Geometry* parent, 00062 unsigned int index); 00063 00064 TaggedLineSegment(const geom::Coordinate& p0, 00065 const geom::Coordinate& p1); 00066 00067 TaggedLineSegment(const TaggedLineSegment& ls); 00068 00069 const geom::Geometry* getParent() const; 00070 00071 unsigned int getIndex() const; 00072 00073 private: 00074 00075 const geom::Geometry* parent; 00076 00077 unsigned int index; 00078 00079 }; 00080 00081 00082 00083 } // namespace geos::simplify 00084 } // namespace geos 00085 00086 #endif // _GEOS_SIMPLIFY_TAGGEDLINESEGMENT_H_ 00087 00088 /********************************************************************** 00089 * $Log$ 00090 * Revision 1.2 2006/04/12 17:19:57 strk 00091 * Ported TaggedLineStringSimplifier class, made LineSegment class 00092 * polymorphic to fix derivation of TaggedLineSegment 00093 * 00094 * Revision 1.1 2006/04/12 14:22:12 strk 00095 * Initial implementation of TaggedLineSegment and TaggedLineString classes 00096 * 00097 **********************************************************************/