TaggedLinesSimplifier.h

00001 /**********************************************************************
00002  * $Id: TaggedLinesSimplifier.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/TaggedLinesSimplifier.java rev. 1.4 (JTS-1.7.1)
00017  *
00018  **********************************************************************
00019  *
00020  * NOTES: changed from JTS design adding a private
00021  *        TaggedLineStringSimplifier member and making
00022  *        simplify(collection) method become a templated
00023  *        function.
00024  *
00025  **********************************************************************/
00026 
00027 #ifndef _GEOS_SIMPLIFY_TAGGEDLINESSIMPLIFIER_H_
00028 #define _GEOS_SIMPLIFY_TAGGEDLINESSIMPLIFIER_H_ 
00029 
00030 #include <vector>
00031 #include <memory>
00032 #include <cassert>
00033 
00034 #include <geos/simplify/LineSegmentIndex.h> // for templated function body
00035 
00036 // Forward declarations
00037 namespace geos {
00038         namespace simplify {
00039                 //class LineSegmentIndex;
00040                 class TaggedLineString;
00041                 class TaggedLineStringSimplifier;
00042         }
00043 }
00044 
00045 namespace geos {
00046 namespace simplify { // geos::simplify
00047 
00052 class TaggedLinesSimplifier {
00053 
00054 public:
00055 
00056         TaggedLinesSimplifier();
00057 
00066         void setDistanceTolerance(double tolerance);
00067 
00081         template <class iterator_type>
00082         void simplify(
00083                 iterator_type begin,
00084                 iterator_type end)
00085         {
00086                 // add lines to the index
00087                 for (iterator_type it=begin; it != end; ++it) {
00088                         assert(*it);
00089                         inputIndex->add(*(*it));
00090                 }
00091 
00092                 // Simplify lines
00093                 for (iterator_type it=begin; it != end; ++it) {
00094                         assert(*it);
00095                         simplify(*(*it));
00096                 }
00097         }
00098 
00099 
00100 private:
00101 
00102         void simplify(TaggedLineString& line);
00103 
00104         std::auto_ptr<LineSegmentIndex> inputIndex;
00105 
00106         std::auto_ptr<LineSegmentIndex> outputIndex;
00107 
00108         std::auto_ptr<TaggedLineStringSimplifier> taggedlineSimplifier;
00109 
00110 };
00111 
00112 
00113 } // namespace geos::simplify
00114 } // namespace geos
00115 
00116 #endif // _GEOS_SIMPLIFY_TAGGEDLINESSIMPLIFIER_H_ 
00117 
00118 /**********************************************************************
00119  * $Log$
00120  * Revision 1.4  2006/05/24 15:32:11  strk
00121  * * source/headers/geos/simplify/TaggedLinesSimplifier.h: added LineSegmentIndex.h include so that every use of the templated simplify() function get all the required definitions.
00122  *
00123  * Revision 1.3  2006/05/24 11:41:23  strk
00124  *         * source/headers/geos/simplify/TaggedLinesSimplifier.h,
00125  *         source/simplify/TaggedLinesSimplifier.cpp,
00126  *         source/simplify/TopologyPreservingSimplifier.cpp:
00127  *         fixed bug in TopologyPreservingSimplifier failing to
00128  *         detect intersections, refactored TaggedLinesSimplifier
00129  *         class to more closely match JTS and use templated
00130  *         functions.
00131  *
00132  * Revision 1.2  2006/04/13 14:25:17  strk
00133  * TopologyPreservingSimplifier initial port
00134  *
00135  * Revision 1.1  2006/04/13 10:39:12  strk
00136  * Initial implementation of TaggedLinesSimplifier class
00137  *
00138  **********************************************************************/

Generated on Fri Mar 27 04:53:03 2009 for GEOS by  doxygen 1.5.4