GEOS
3.3.2
|
00001 /********************************************************************** 00002 * $Id: MultiLineString.h 3211 2011-02-13 19:54:01Z mloskot $ 00003 * 00004 * GEOS - Geometry Engine Open Source 00005 * http://geos.refractions.net 00006 * 00007 * Copyright (C) 2011 Sandro Santilli <strk@keybit.net> 00008 * Copyright (C) 2001-2002 Vivid Solutions Inc. 00009 * Copyright (C) 2005 2006 Refractions Research Inc. 00010 * 00011 * This is free software; you can redistribute and/or modify it under 00012 * the terms of the GNU Lesser General Public Licence as published 00013 * by the Free Software Foundation. 00014 * See the COPYING file for more information. 00015 * 00016 ********************************************************************** 00017 * 00018 * Last port: geom/MultiLineString.java r320 (JTS-1.12) 00019 * 00020 **********************************************************************/ 00021 00022 #ifndef GEOS_GEOS_MULTILINESTRING_H 00023 #define GEOS_GEOS_MULTILINESTRING_H 00024 00025 #include <geos/export.h> 00026 #include <geos/geom/GeometryCollection.h> // for inheritance 00027 #include <geos/geom/Lineal.h> // for inheritance 00028 #include <geos/geom/Dimension.h> 00029 00030 #include <string> 00031 #include <vector> 00032 00033 #include <geos/inline.h> 00034 00035 // Forward declarations 00036 namespace geos { 00037 namespace geom { // geos::geom 00038 class Coordinate; 00039 class CoordinateArraySequence; 00040 } 00041 } 00042 00043 namespace geos { 00044 namespace geom { // geos::geom 00045 00046 #ifdef _MSC_VER 00047 #pragma warning(push) 00048 #pragma warning(disable:4250) // T1 inherits T2 via dominance 00049 #endif 00050 00052 class GEOS_DLL MultiLineString: public GeometryCollection, public Lineal { 00053 00054 public: 00055 00056 friend class GeometryFactory; 00057 00058 virtual ~MultiLineString(); 00059 00061 Dimension::DimensionType getDimension() const; 00062 00068 int getBoundaryDimension() const; 00069 00071 Geometry* getBoundary() const; 00072 00073 std::string getGeometryType() const; 00074 00075 virtual GeometryTypeId getGeometryTypeId() const; 00076 00077 bool isClosed() const; 00078 00079 bool equalsExact(const Geometry *other, double tolerance=0) const; 00080 00081 Geometry *clone() const; 00082 00092 MultiLineString* reverse() const; 00093 00094 protected: 00095 00115 MultiLineString(std::vector<Geometry *> *newLines, 00116 const GeometryFactory *newFactory); 00117 00118 MultiLineString(const MultiLineString &mp); 00119 }; 00120 00121 #ifdef _MSC_VER 00122 #pragma warning(pop) 00123 #endif 00124 00125 } // namespace geos::geom 00126 } // namespace geos 00127 00128 #ifdef GEOS_INLINE 00129 # include "geos/geom/MultiLineString.inl" 00130 #endif 00131 00132 #endif // ndef GEOS_GEOS_MULTILINESTRING_H 00133 00134 /********************************************************************** 00135 * $Log$ 00136 * Revision 1.5 2006/05/04 15:49:39 strk 00137 * updated all Geometry::getDimension() methods to return Dimension::DimensionType (closes bug#93) 00138 * 00139 * Revision 1.4 2006/04/28 10:55:39 strk 00140 * Geometry constructors made protected, to ensure all constructions use GeometryFactory, 00141 * which has been made friend of all Geometry derivates. getNumPoints() changed to return 00142 * size_t. 00143 * 00144 * Revision 1.3 2006/03/24 09:52:41 strk 00145 * USE_INLINE => GEOS_INLINE 00146 * 00147 * Revision 1.2 2006/03/23 12:12:01 strk 00148 * Fixes to allow build with -DGEOS_INLINE 00149 * 00150 * Revision 1.1 2006/03/09 16:46:49 strk 00151 * geos::geom namespace definition, first pass at headers split 00152 * 00153 **********************************************************************/