1. removed dependency on boost_serialization ( we don't really need it) at this time.
2. coord and envelope operator<< to use 16 digit precision. 3. added 'inside polygon' method impl.
This commit is contained in:
parent
0bb121a747
commit
72fae1daa1
11 changed files with 516 additions and 595 deletions
|
@ -76,11 +76,6 @@ C_LIBSHEADERS = [
|
|||
BOOST_LIBSHEADERS = [
|
||||
['thread', 'boost/thread/mutex.hpp', True],
|
||||
['filesystem', 'boost/filesystem/operations.hpp', True],
|
||||
['serialization', ['boost/archive/text_oarchive.hpp',
|
||||
'boost/archive/text_iarchive.hpp',
|
||||
'boost/archive/xml_oarchive.hpp',
|
||||
'boost/archive/xml_iarchive.hpp'], True
|
||||
],
|
||||
['regex', 'boost/regex.hpp', True],
|
||||
['program_options', 'boost/program_options.hpp', False]
|
||||
]
|
||||
|
|
|
@ -26,6 +26,7 @@
|
|||
#define COORD_HPP
|
||||
|
||||
#include <iostream>
|
||||
#include <iomanip>
|
||||
#include <sstream>
|
||||
|
||||
namespace mapnik
|
||||
|
@ -113,7 +114,8 @@ namespace mapnik
|
|||
std::basic_ostringstream<charT,traits> s;
|
||||
s.copyfmt(out);
|
||||
s.width(0);
|
||||
s<<"coord2("<<c.x<<","<<c.y<<")";
|
||||
s << "coord2(" << std::setprecision(16)
|
||||
<< c.x << "," << c.y<< ")";
|
||||
out << s.str();
|
||||
return out;
|
||||
}
|
||||
|
@ -126,7 +128,8 @@ namespace mapnik
|
|||
std::basic_ostringstream<charT,traits> s;
|
||||
s.copyfmt(out);
|
||||
s.width(0);
|
||||
s<<"coord3("<<c.x<<","<<c.y<<","<<c.z<<")";
|
||||
s << "coord3(" << std::setprecision(16)
|
||||
<< c.x << "," << c.y<< "," << c.z<<")";
|
||||
out << s.str();
|
||||
return out;
|
||||
}
|
||||
|
|
|
@ -26,6 +26,7 @@
|
|||
#define ENVELOPE_HPP
|
||||
|
||||
#include "config.hpp"
|
||||
#include <iomanip>
|
||||
#include "coord.hpp"
|
||||
|
||||
namespace mapnik
|
||||
|
@ -77,7 +78,9 @@ namespace mapnik
|
|||
std::basic_ostringstream<charT,traits> s;
|
||||
s.copyfmt(out);
|
||||
s.width(0);
|
||||
s<<"Envelope("<<e.minx()<<","<<e.miny()<<","<<e.maxx()<<","<<e.maxy()<<")";
|
||||
s <<"Envelope(" << std::setprecision(16)
|
||||
<< e.minx() << "," << e.miny() <<","
|
||||
<< e.maxx() << "," << e.maxy() <<")";
|
||||
out << s.str();
|
||||
return out;
|
||||
}
|
||||
|
|
|
@ -87,19 +87,21 @@ namespace mapnik
|
|||
inline bool point_inside_path(double x,double y,Iter start,Iter end)
|
||||
{
|
||||
bool inside=false;
|
||||
double x0=start->x;
|
||||
double y0=start->y;
|
||||
double x0=boost::get<0>(*start);
|
||||
double y0=boost::get<1>(*start);
|
||||
|
||||
double x1,y1;
|
||||
while (++start!=end)
|
||||
{
|
||||
if (start->cmd == SEG_MOVETO)
|
||||
if ( boost::get<2>(*start) == SEG_MOVETO)
|
||||
{
|
||||
x0=start->x;
|
||||
y0=start->y;
|
||||
x0 = boost::get<0>(*start);
|
||||
y0 = boost::get<1>(*start);
|
||||
continue;
|
||||
}
|
||||
x1=start->x;
|
||||
y1=start->y;
|
||||
x1=boost::get<0>(*start);
|
||||
y1=boost::get<1>(*start);
|
||||
|
||||
if ((((y1 <= y) && (y < y0)) ||
|
||||
((y0 <= y) && (y < y1))) &&
|
||||
( x < (x0 - x1) * (y - y1)/ (y0 - y1) + x1))
|
||||
|
@ -112,11 +114,11 @@ namespace mapnik
|
|||
|
||||
#define TOL 0.00001
|
||||
|
||||
/*
|
||||
/*
|
||||
(Ay-Cy)(Bx-Ax)-(Ax-Cx)(By-Ay)
|
||||
s = -----------------------------
|
||||
L^2
|
||||
*/
|
||||
*/
|
||||
|
||||
inline bool point_in_circle(double x,double y,double cx,double cy,double r)
|
||||
{
|
||||
|
|
|
@ -149,7 +149,7 @@ namespace mapnik
|
|||
virtual ~point() {}
|
||||
};
|
||||
|
||||
template <typename T, template <typename> class Container=vertex_vector>
|
||||
template <typename T, template <typename> class Container=vertex_vector2>
|
||||
class polygon : public geometry<T>
|
||||
{
|
||||
typedef geometry<T> geometry_base;
|
||||
|
@ -246,8 +246,9 @@ namespace mapnik
|
|||
|
||||
bool hit_test(value_type x,value_type y) const
|
||||
{
|
||||
return false;
|
||||
return point_inside_path(x,y,cont_.begin(),cont_.end());
|
||||
}
|
||||
|
||||
void set_capacity(size_t size)
|
||||
{
|
||||
cont_.set_capacity(size);
|
||||
|
|
|
@ -15,10 +15,11 @@
|
|||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*
|
||||
*****************************************************************************/
|
||||
* #include <boost/serialization/serialization.hpp>
|
||||
License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*
|
||||
*****************************************************************************/
|
||||
//$Id: layer.hpp 39 2005-04-10 20:39:53Z pavlenko $
|
||||
|
||||
#ifndef LAYER_HPP
|
||||
|
@ -28,27 +29,11 @@
|
|||
#include "feature.hpp"
|
||||
#include "datasource.hpp"
|
||||
#include <boost/shared_ptr.hpp>
|
||||
#include <boost/serialization/serialization.hpp>
|
||||
|
||||
namespace mapnik
|
||||
{
|
||||
class MAPNIK_DECL Layer
|
||||
{
|
||||
friend class boost::serialization::access;
|
||||
template <typename Archive>
|
||||
void serialize(Archive & ar, const unsigned int /*version*/)
|
||||
{
|
||||
ar & boost::serialization::make_nvp("name",name_)
|
||||
& boost::serialization::make_nvp("title",title_)
|
||||
& boost::serialization::make_nvp("abstract",abstract_)
|
||||
& boost::serialization::make_nvp("params",params_)
|
||||
& boost::serialization::make_nvp("min_zoom",minZoom_)
|
||||
& boost::serialization::make_nvp("max_zoom",maxZoom_)
|
||||
& boost::serialization::make_nvp("active",active_)
|
||||
& boost::serialization::make_nvp("selectable",selectable_)
|
||||
& boost::serialization::make_nvp("styles",styles_)
|
||||
;
|
||||
}
|
||||
parameters params_;
|
||||
std::string name_;
|
||||
std::string title_;
|
||||
|
@ -102,10 +87,4 @@ namespace mapnik
|
|||
};
|
||||
}
|
||||
|
||||
BOOST_CLASS_IMPLEMENTATION(std::vector<std::string>, boost::serialization::object_serializable)
|
||||
BOOST_CLASS_TRACKING(std::vector<std::string>, boost::serialization::track_never)
|
||||
|
||||
BOOST_CLASS_IMPLEMENTATION(mapnik::Layer, boost::serialization::object_serializable)
|
||||
BOOST_CLASS_TRACKING(mapnik::Layer, boost::serialization::track_never)
|
||||
|
||||
#endif //LAYER_HPP
|
||||
|
|
|
@ -24,8 +24,6 @@
|
|||
#ifndef MAP_HPP
|
||||
#define MAP_HPP
|
||||
|
||||
#include <boost/serialization/serialization.hpp>
|
||||
#include <boost/serialization/vector.hpp>
|
||||
#include "feature_type_style.hpp"
|
||||
|
||||
namespace mapnik
|
||||
|
@ -34,16 +32,6 @@ namespace mapnik
|
|||
|
||||
class MAPNIK_DECL Map
|
||||
{
|
||||
friend class boost::serialization::access;
|
||||
template <typename Archive>
|
||||
void serialize(Archive & ar, const unsigned int /*version*/)
|
||||
{
|
||||
ar & boost::serialization::make_nvp("width",width_)
|
||||
& boost::serialization::make_nvp("height",height_)
|
||||
& boost::serialization::make_nvp("srid",srid_)
|
||||
& boost::serialization::make_nvp("layers",layers_);
|
||||
}
|
||||
|
||||
static const unsigned MIN_MAPSIZE=16;
|
||||
static const unsigned MAX_MAPSIZE=2048;
|
||||
unsigned width_;
|
||||
|
@ -94,10 +82,4 @@ namespace mapnik
|
|||
};
|
||||
}
|
||||
|
||||
BOOST_CLASS_IMPLEMENTATION(std::vector<mapnik::Layer>, boost::serialization::object_serializable)
|
||||
BOOST_CLASS_TRACKING(std::vector<mapnik::Layer>, boost::serialization::track_never)
|
||||
|
||||
BOOST_CLASS_IMPLEMENTATION(mapnik::Map, boost::serialization::object_serializable)
|
||||
BOOST_CLASS_TRACKING(mapnik::Map, boost::serialization::track_never)
|
||||
|
||||
#endif //MAP_HPP
|
||||
|
|
|
@ -79,8 +79,6 @@
|
|||
|
||||
namespace mapnik
|
||||
{
|
||||
void MAPNIK_DECL save_to_xml(Map const& map,const char* filename);
|
||||
void MAPNIK_DECL load_from_xml(Map & map, const char * filename);
|
||||
}
|
||||
|
||||
#endif //MAPNIK_HPP
|
||||
|
|
|
@ -44,36 +44,6 @@ namespace mapnik
|
|||
|
||||
class parameters : public param_map
|
||||
{
|
||||
friend class boost::serialization::access;
|
||||
|
||||
template <typename Archive>
|
||||
void save(Archive & ar, const unsigned int /*version*/) const
|
||||
{
|
||||
const size_t size = param_map::size();
|
||||
ar & boost::serialization::make_nvp("count",size);
|
||||
param_map::const_iterator itr;
|
||||
for (itr=param_map::begin();itr!=param_map::end();++itr)
|
||||
{
|
||||
ar & boost::serialization::make_nvp("name",itr->first);
|
||||
ar & boost::serialization::make_nvp("value",itr->second);
|
||||
}
|
||||
}
|
||||
|
||||
template <typename Archive>
|
||||
void load(Archive & ar, const unsigned int /*version*/)
|
||||
{
|
||||
size_t size;
|
||||
ar & boost::serialization::make_nvp("size",size);
|
||||
for (size_t i=0;i<size;++i)
|
||||
{
|
||||
std::string name;
|
||||
std::string value;
|
||||
ar & boost::serialization::make_nvp("name",name);
|
||||
ar & boost::serialization::make_nvp("value",value);
|
||||
param_map::insert(make_pair(name,value));
|
||||
}
|
||||
}
|
||||
BOOST_SERIALIZATION_SPLIT_MEMBER()
|
||||
public:
|
||||
|
||||
parameters() {}
|
||||
|
@ -89,10 +59,4 @@ namespace mapnik
|
|||
};
|
||||
}
|
||||
|
||||
BOOST_CLASS_IMPLEMENTATION(mapnik::parameter, boost::serialization::object_serializable)
|
||||
BOOST_CLASS_TRACKING(mapnik::parameter, boost::serialization::track_never)
|
||||
|
||||
BOOST_CLASS_IMPLEMENTATION(mapnik::parameters, boost::serialization::object_serializable)
|
||||
BOOST_CLASS_TRACKING(mapnik::parameters, boost::serialization::track_never)
|
||||
|
||||
#endif //PARAMS_HPP
|
||||
|
|
|
@ -150,6 +150,7 @@ namespace mapnik
|
|||
{
|
||||
typedef typename T::type value_type;
|
||||
typedef boost::tuple<value_type,value_type,char> vertex_type;
|
||||
typedef typename std::vector<vertex_type>::const_iterator const_iterator;
|
||||
vertex_vector2() {}
|
||||
unsigned size() const
|
||||
{
|
||||
|
@ -169,6 +170,16 @@ namespace mapnik
|
|||
return boost::get<2>(c);
|
||||
}
|
||||
|
||||
const_iterator begin() const
|
||||
{
|
||||
return cont_.begin();
|
||||
}
|
||||
|
||||
const_iterator end() const
|
||||
{
|
||||
return cont_.end();
|
||||
}
|
||||
|
||||
void transform_at(unsigned pos,const CoordTransform& t)
|
||||
{
|
||||
if (pos >= cont_.size()) return;
|
||||
|
|
|
@ -23,27 +23,10 @@
|
|||
//$Id$
|
||||
|
||||
#include <fstream>
|
||||
#include <boost/archive/xml_iarchive.hpp>
|
||||
#include <boost/archive/xml_oarchive.hpp>
|
||||
#include "mapnik.hpp"
|
||||
|
||||
namespace mapnik
|
||||
{
|
||||
void save_to_xml(Map const& m,const char* filename)
|
||||
{
|
||||
std::ofstream ofs(filename);
|
||||
assert(ofs.good());
|
||||
boost::archive::xml_oarchive oa(ofs);
|
||||
oa << boost::serialization::make_nvp("map",m);
|
||||
}
|
||||
|
||||
void load_from_xml(Map & m,const char* filename)
|
||||
{
|
||||
std::ifstream ifs(filename);
|
||||
assert(ifs.good());
|
||||
boost::archive::xml_iarchive ia(ifs);
|
||||
ia >> boost::serialization::make_nvp("map",m);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
Loading…
Reference in a new issue