• Main Page
  • Related Pages
  • Namespaces
  • Classes
  • Files
  • File List

IntersectionMatrix.h

00001 /**********************************************************************
00002  * $Id: IntersectionMatrix.h 2556 2009-06-06 22:22:28Z strk $
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 Public Licence as published
00011  * by the Free Software Foundation. 
00012  * See the COPYING file for more information.
00013  *
00014  **********************************************************************
00015  *
00016  * Last port: geom/IntersectionMatrix.java rev. 1.18
00017  *
00018  **********************************************************************/
00019 
00020 #ifndef GEOS_GEOM_INTERSECTIONMATRIX_H
00021 #define GEOS_GEOM_INTERSECTIONMATRIX_H
00022 
00023 #include <geos/export.h>
00024 #include <string>
00025 
00026 #include <geos/inline.h>
00027 
00028 namespace geos {
00029 namespace geom { // geos::geom
00030 
00052 class GEOS_DLL IntersectionMatrix {
00053 
00054 public:
00055 
00062         IntersectionMatrix();
00063 
00072         IntersectionMatrix(const std::string& elements);
00073 
00081         IntersectionMatrix(const IntersectionMatrix &other);
00082 
00093         bool matches(const std::string& requiredDimensionSymbols) const;
00094 
00107         static bool matches(int actualDimensionValue,
00108                         char requiredDimensionSymbol);
00109 
00122         static bool matches(const std::string& actualDimensionSymbols,
00123                         const std::string& requiredDimensionSymbols);
00124 
00135         void add(IntersectionMatrix* other);
00136 
00147         void set(int row, int column, int dimensionValue);
00148 
00157         void set(const std::string& dimensionSymbols);
00158 
00171         void setAtLeast(int row, int column, int minimumDimensionValue);
00172 
00193         void setAtLeastIfValid(int row, int column, int minimumDimensionValue);
00194 
00205         void setAtLeast(std::string minimumDimensionSymbols);
00206 
00215         void setAll(int dimensionValue);
00216 
00230         int get(int row, int column) const;
00231 
00238         bool isDisjoint() const;
00239 
00246         bool isIntersects() const;
00247 
00260         bool isTouches(int dimensionOfGeometryA, int dimensionOfGeometryB)
00261                         const;
00262 
00280         bool isCrosses(int dimensionOfGeometryA, int dimensionOfGeometryB)
00281                         const;
00282 
00288         bool isWithin() const;
00289 
00295         bool isContains() const;
00296 
00306         bool isEquals(int dimensionOfGeometryA, int dimensionOfGeometryB)
00307                  const;
00308 
00322         bool isOverlaps(int dimensionOfGeometryA, int dimensionOfGeometryB)
00323                 const;
00324 
00333         bool isCovers() const;
00334 
00335             
00344         bool isCoveredBy() const;
00345 
00354         IntersectionMatrix* transpose();
00355 
00363         std::string toString() const;
00364 
00365 private:
00366 
00367         static const int firstDim; // = 3;
00368 
00369         static const int secondDim; // = 3;
00370                         
00371         // Internal buffer for 3x3 matrix.
00372         int matrix[3][3];
00373         
00374 }; // class IntersectionMatrix
00375 
00376 std::ostream& operator<< (std::ostream&os, const IntersectionMatrix& im);
00377 
00378 
00379 } // namespace geos::geom
00380 } // namespace geos
00381 
00382 //#ifdef GEOS_INLINE
00383 //# include "geos/geom/IntersectionMatrix.inl"
00384 //#endif
00385 
00386 #endif // ndef GEOS_GEOM_INTERSECTIONMATRIX_H
00387 
00388 /**********************************************************************
00389  * $Log$
00390  * Revision 1.6  2006/05/17 17:41:10  strk
00391  * Added output operator + test
00392  *
00393  * Revision 1.5  2006/05/17 17:24:17  strk
00394  * Added port info, fixed isCoveredBy() comment.
00395  *
00396  * Revision 1.4  2006/05/17 17:20:10  strk
00397  * added isCovers() and isCoveredBy() public methods to IntersectionMatrix and associated tests.
00398  *
00399  * Revision 1.3  2006/04/09 01:46:13  mloskot
00400  * [SORRY] Added comments for doxygen based on JTS docs. Added row/col dimension consts. Added asserts in functions to check if given row/col is in range.
00401  *
00402  * Revision 1.2  2006/03/24 09:52:41  strk
00403  * USE_INLINE => GEOS_INLINE
00404  *
00405  * Revision 1.1  2006/03/09 16:46:49  strk
00406  * geos::geom namespace definition, first pass at headers split
00407  *
00408  **********************************************************************/

Generated on Thu Jul 22 2010 for GEOS by  doxygen 1.7.1