OffsetPointGenerator.h

00001 /**********************************************************************
00002  * $Id: OffsetPointGenerator.h 1941 2006-12-13 10:55:55Z 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: operation/overlay/validate/OffsetPointGenerator.java rev. 1.1
00017  * (we should move in GEOS too, probably)
00018  *
00019  **********************************************************************/
00020 
00021 #ifndef GEOS_OP_OVERLAY_OFFSETPOINTGENERATOR_H
00022 #define GEOS_OP_OVERLAY_OFFSETPOINTGENERATOR_H
00023 
00024 #include <geos/algorithm/PointLocator.h> // for composition
00025 #include <geos/geom/Geometry.h> // for auto_ptr visibility of dtor
00026 #include <geos/geom/MultiPoint.h> // for auto_ptr visibility of dtor
00027 #include <geos/geom/Coordinate.h> // for use in vector
00028 
00029 #include <vector>
00030 #include <memory> // for auto_ptr
00031 
00032 // Forward declarations
00033 namespace geos {
00034         namespace geom {
00035                 //class Geometry;
00036                 //class MultiPoint;
00037                 class LineString;
00038                 //class Coordinate;
00039         }
00040 }
00041 
00042 namespace geos {
00043 namespace operation { // geos::operation
00044 namespace overlay { // geos::operation::overlay
00045 
00047 //
00048 class OffsetPointGenerator {
00049 
00050 public:
00051 
00052         OffsetPointGenerator(const geom::Geometry& geom, double offset);
00053 
00055         std::auto_ptr< std::vector<geom::Coordinate> > getPoints();
00056 
00057 private:
00058 
00059         const geom::Geometry& g;
00060 
00061         double offsetDistance;
00062 
00063         std::auto_ptr< std::vector<geom::Coordinate> > offsetPts;
00064 
00065         void extractPoints(const geom::LineString* line);
00066 
00067         void computeOffsets(const geom::Coordinate& p0,
00068                         const geom::Coordinate& p1);
00069 };
00070 
00071 } // namespace geos::operation::overlay
00072 } // namespace geos::operation
00073 } // namespace geos
00074 
00075 #endif // ndef GEOS_OP_OVERLAY_OFFSETPOINTGENERATOR_H
00076 
00077 /**********************************************************************
00078  * $Log$
00079  **********************************************************************/
00080 

Generated on Fri Mar 27 04:52:54 2009 for GEOS by  doxygen 1.5.4