From e0d243dcec774e4136b33df61c2847479ab0b559 Mon Sep 17 00:00:00 2001 From: Artem Pavlenko Date: Fri, 16 Mar 2007 10:11:37 +0000 Subject: [PATCH] 1.Added support for building on Darwin (Xcode 2.4.1, gcc4.0.1). Mainly taming gcc4.0.1 (anonymous enum bug) 2.Input plug-ins now have .input extension on all platforms --- SConstruct | 67 +++++++++--------- bindings/python/SConscript | 9 ++- include/mapnik/color.hpp | 8 +-- include/mapnik/datasource.hpp | 2 +- include/mapnik/feature_layer_desc.hpp | 2 +- include/mapnik/filter_parser_ast.hpp | 2 +- include/mapnik/font_engine_freetype.hpp | 6 +- include/mapnik/geometry.hpp | 13 ++-- include/mapnik/global.hpp | 4 +- include/mapnik/unicode.hpp | 10 ++- include/mapnik/value.hpp | 16 ++--- include/mapnik/vertex.hpp | 2 +- include/mapnik/vertex_vector.hpp | 2 +- plugins/input/postgis/SConscript | 8 ++- plugins/input/postgis/connection.hpp | 3 - plugins/input/postgis/connection_manager.hpp | 5 +- plugins/input/postgis/postgis.cpp | 3 + plugins/input/postgis/postgis.hpp | 17 +++-- plugins/input/postgis/postgisfs.cpp | 8 ++- plugins/input/raster/SConscript | 6 +- plugins/input/raster/raster_datasource.cpp | 7 ++ plugins/input/raster/raster_datasource.hpp | 44 ++++++------ plugins/input/raster/raster_featureset.cpp | 70 +++++++++++-------- plugins/input/raster/raster_featureset.hpp | 24 +++---- plugins/input/shape/SConscript | 7 +- plugins/input/shape/dbffile.hpp | 5 +- plugins/input/shape/shape.cpp | 18 +++-- plugins/input/shape/shape.hpp | 7 +- plugins/input/shape/shape_featureset.cpp | 6 +- plugins/input/shape/shape_featureset.hpp | 4 +- .../input/shape/shape_index_featureset.cpp | 10 +-- plugins/input/shape/shape_io.cpp | 9 ++- plugins/input/shape/shapefile.hpp | 2 +- plugins/input/shape/shp_index.cpp | 4 +- plugins/input/shape/shp_index.hpp | 3 +- src/SConscript | 5 +- src/datasource_cache.cpp | 4 +- src/tiff_reader.cpp | 2 +- utils/shapeindex/quadtree.hpp | 57 +++++++-------- 39 files changed, 286 insertions(+), 195 deletions(-) diff --git a/SConstruct b/SConstruct index 7e8d9ef4b..7717f39de 100644 --- a/SConstruct +++ b/SConstruct @@ -33,7 +33,7 @@ opts.Add(PathOption('BOOST_INCLUDES', 'Search path for boost include files', '/u opts.Add(PathOption('BOOST_LIBS', 'Search path for boost library files', '/usr/' + LIBDIR_SCHEMA)) opts.Add('BOOST_TOOLKIT','Specify boost toolkit e.g. gcc41.','',False) -opts.Add(PathOption('FREETYPE_CONFIG', 'The path to the freetype-config executable.', '/usr/bin/freetype-config')) +opts.Add(PathOption('FREETYPE_CONFIG', 'The path to the freetype-config executable.', '/usr/local/bin/freetype-config')) opts.Add(PathOption('FRIBIDI_INCLUDES', 'Search path for fribidi include files', '/usr/include')) opts.Add(PathOption('FRIBIDI_LIBS','Search path for fribidi include files','/usr/' + LIBDIR_SCHEMA)) opts.Add(PathOption('PNG_INCLUDES', 'Search path for libpng include files', '/usr/include')) @@ -55,7 +55,8 @@ opts.Add('BIDI', 'BIDI support', '') env = Environment(ENV=os.environ, options=opts) env['LIBDIR_SCHEMA'] = LIBDIR_SCHEMA - +env['PLATFORM'] = platform.uname()[0] +print "Building on %s ..." % env['PLATFORM'] Help(opts.GenerateHelpText(env)) conf = Configure(env) @@ -107,7 +108,7 @@ if env['BIDI'] : C_LIBSHEADERS.append(['fribidi','fribidi/fribidi.h',True]) BOOST_LIBSHEADERS = [ ['thread', 'boost/thread/mutex.hpp', True], - #['system', 'boost/system/system_error.hpp', True], + ['system', 'boost/system/system_error.hpp', True], ['filesystem', 'boost/filesystem/operations.hpp', True], ['regex', 'boost/regex.hpp', True], ['program_options', 'boost/program_options.hpp', False] @@ -121,10 +122,10 @@ for libinfo in C_LIBSHEADERS: env['BOOST_APPEND'] = '' if len(env['BOOST_TOOLKIT']): toolkit = env['BOOST_TOOLKIT'] -else: toolkit = env['CC'] +else: toolkit = '' #toolkit = env['CC'] for count, libinfo in enumerate(BOOST_LIBSHEADERS): - if not conf.CheckLibWithHeader('boost_%s%s' % (libinfo[0], env['BOOST_APPEND']), libinfo[1], 'C++'): + if not conf.CheckLibWithHeader('boost_%s%s-mt' % (libinfo[0], env['BOOST_APPEND']), libinfo[1], 'C++'): if not conf.CheckLibWithHeader('boost_%s-%s-mt' % (libinfo[0], toolkit), libinfo[1], 'C++') and libinfo[2] and count == 0: print 'Could not find header or shared library for boost %s, exiting!' % libinfo[0] Exit(1) @@ -137,6 +138,33 @@ inputplugins = [ driver.strip() for driver in Split(env['INPUT_PLUGINS'])] bindings = [ binding.strip() for binding in Split(env['BINDINGS'])] + +# Build agg first, doesn't need anything special + +SConscript('agg/SConscript') + +# Build the core library + +SConscript('src/SConscript') + +# Build shapeindex and remove its dependency from the LIBS + +if 'boost_program_options%s-mt' % env['BOOST_APPEND'] in env['LIBS']: + SConscript('utils/shapeindex/SConscript') + env['LIBS'].remove('boost_program_options%s-mt' % env['BOOST_APPEND']) + +# Build the input plug-ins + +if 'postgis' in inputplugins and 'pq' in env['LIBS']: + SConscript('plugins/input/postgis/SConscript') + env['LIBS'].remove('pq') + +if 'shape' in inputplugins: + SConscript('plugins/input/shape/SConscript') + +if 'raster' in inputplugins: + SConscript('plugins/input/raster/SConscript') + # Check out the Python situation if 'python' in env['BINDINGS']: @@ -165,35 +193,10 @@ env = conf.Finish() # Setup the c++ args for our own codebase if env['DEBUG']: - env.Append(CXXFLAGS = '-ansi -Wall -ftemplate-depth-100 -O0 -fno-inline -g -pthread -DDEBUG -DMAPNIK_DEBUG -DBOOST_PROPERTY_TREE_XML_PARSER_TINYXML -DTIXML_USE_STL') + env.Append(CXXFLAGS = '-ansi -Wall -ftemplate-depth-100 -O0 -fno-inline -g -DDEBUG -DMAPNIK_DEBUG -D%s -DBOOST_PROPERTY_TREE_XML_PARSER_TINYXML -DTIXML_USE_STL' % env['PLATFORM'].upper() ) else: - env.Append(CXXFLAGS = '-ansi -Wall -ftemplate-depth-100 -O3 -finline-functions -Wno-inline -pthread -DNDEBUG -DBOOST_PROPERTY_TREE_XML_PARSER_TINYXML -DTIXML_USE_STL') + env.Append(CXXFLAGS = '-ansi -Wall -ftemplate-depth-100 -O3 -finline-functions -Wno-inline -DNDEBUG -D%s -DBOOST_PROPERTY_TREE_XML_PARSER_TINYXML -DTIXML_USE_STL' % env['PLATFORM'].upper()) -# Build agg first, doesn't need anything special - -SConscript('agg/SConscript') - -# Build shapeindex and remove its dependency from the LIBS - -if 'boost_program_options%s' % env['BOOST_APPEND'] in env['LIBS']: - SConscript('utils/shapeindex/SConscript') - env['LIBS'].remove('boost_program_options%s' % env['BOOST_APPEND']) - -# Build the input plug-ins - -if 'postgis' in inputplugins and 'pq' in env['LIBS']: - SConscript('plugins/input/postgis/SConscript') - env['LIBS'].remove('pq') - -if 'shape' in inputplugins: - SConscript('plugins/input/shape/SConscript') - -if 'raster' in inputplugins: - SConscript('plugins/input/raster/SConscript') - -# Build the core library - -SConscript('src/SConscript') # Install some free default fonts diff --git a/bindings/python/SConscript b/bindings/python/SConscript index 39a73c4d9..108dc6228 100644 --- a/bindings/python/SConscript +++ b/bindings/python/SConscript @@ -27,9 +27,16 @@ prefix = env['PYTHON_PREFIX'] + '/'+ 'lib' + '/python' + env['PYTHON_VERSION'] + install_prefix = env['DESTDIR'] + '/' + prefix libraries = ['mapnik', 'boost_python%s' % env['BOOST_APPEND']] + +if env['PLATFORM'] == 'Darwin': + libraries.append('boost_regex%s' % env['BOOST_APPEND']) + linkflags = '-F/ -framework Python' +else : + linkflags = '' + headers = [env['PYTHON_PREFIX'] + '/include/python' + env['PYTHON_VERSION']] + env['CPPPATH'] -_mapnik = env.SharedLibrary('_mapnik', glob.glob('*.cpp'), LIBS=libraries, SHLIBPREFIX='', CPPPATH=headers) +_mapnik = env.SharedLibrary('_mapnik', glob.glob('*.cpp'), LIBS=libraries, SHLIBPREFIX='', SHLIBSUFFIX='.so', CPPPATH=headers,LINKFLAGS=linkflags) paths = """ mapniklibpath = '%s' diff --git a/include/mapnik/color.hpp b/include/mapnik/color.hpp index 0af3cfb23..4bef0e314 100644 --- a/include/mapnik/color.hpp +++ b/include/mapnik/color.hpp @@ -117,10 +117,10 @@ namespace mapnik { inline std::string to_hex_string() const { - return (boost::format("#%1$02x%2$02x%3$02x") - % red() - % green() - % blue() ).str(); + return (boost::format("#%1$02x%2$02x%3$02x") + % red() + % green() + % blue() ).str(); } }; } diff --git a/include/mapnik/datasource.hpp b/include/mapnik/datasource.hpp index 9ee41f81b..be84dcfbb 100644 --- a/include/mapnik/datasource.hpp +++ b/include/mapnik/datasource.hpp @@ -67,7 +67,7 @@ namespace mapnik { class MAPNIK_DECL datasource : private boost::noncopyable { public: - enum { + enum datasource_t { Vector, Raster }; diff --git a/include/mapnik/feature_layer_desc.hpp b/include/mapnik/feature_layer_desc.hpp index 165572c5e..9ffa72a48 100644 --- a/include/mapnik/feature_layer_desc.hpp +++ b/include/mapnik/feature_layer_desc.hpp @@ -36,7 +36,7 @@ namespace mapnik using std::vector; using std::clog; - enum { + enum eAttributeType { Integer=1, Float =2, Double =3, diff --git a/include/mapnik/filter_parser_ast.hpp b/include/mapnik/filter_parser_ast.hpp index 97aee4f64..d92eff590 100644 --- a/include/mapnik/filter_parser_ast.hpp +++ b/include/mapnik/filter_parser_ast.hpp @@ -126,7 +126,7 @@ namespace mapnik class node_data { public: - enum { + enum node_e { Unknown=0, Integer=1, Real =2, diff --git a/include/mapnik/font_engine_freetype.hpp b/include/mapnik/font_engine_freetype.hpp index b08523b81..d2e57602e 100644 --- a/include/mapnik/font_engine_freetype.hpp +++ b/include/mapnik/font_engine_freetype.hpp @@ -328,9 +328,9 @@ namespace mapnik FT_Vector start; unsigned height = pixmap_.height(); - start.x = unsigned(x0 * (1 << 6)); - start.y = unsigned((height - y0) * (1 << 6)); - + start.x = x0 * (1 << 6); + start.y = (height - y0) * (1 << 6); + // std::clog << "Render text at: " << x0 << "," << y0 << " " << start.x << "," << start.y << std::endl; // now render transformed glyphs diff --git a/include/mapnik/geometry.hpp b/include/mapnik/geometry.hpp index 6e1802662..047437525 100644 --- a/include/mapnik/geometry.hpp +++ b/include/mapnik/geometry.hpp @@ -35,7 +35,7 @@ #include namespace mapnik { - enum { + enum GeomType { Point = 1, LineString = 2, Polygon = 3 @@ -62,7 +62,7 @@ namespace mapnik { { Envelope result; double x,y; - rewind(0); + rewind(0); for (unsigned i=0;i(input.data()); + const char * in = input.data(); size_t outleft = buf.size(); char * out = const_cast(buf.data()); @@ -207,11 +210,12 @@ namespace mapnik { } #endif return unicode; + */ } ~transcoder() { - iconv_close(desc_); + //iconv_close(desc_); } private: diff --git a/include/mapnik/value.hpp b/include/mapnik/value.hpp index 0219c0ba2..7c00b49e3 100644 --- a/include/mapnik/value.hpp +++ b/include/mapnik/value.hpp @@ -527,14 +527,14 @@ namespace mapnik { return value(boost::apply_visitor(impl::div(),p1.base_, p2.base_)); } - template - inline std::basic_ostream& - operator << (std::basic_ostream& out, - value const& v) - { - out << v.to_string(); - return out; - } + template + inline std::basic_ostream& + operator << (std::basic_ostream& out, + value const& v) + { + out << v.to_string(); + return out; + } } #endif //VALUE_HPP diff --git a/include/mapnik/vertex.hpp b/include/mapnik/vertex.hpp index a8fdacdec..aa4a2fa57 100644 --- a/include/mapnik/vertex.hpp +++ b/include/mapnik/vertex.hpp @@ -29,7 +29,7 @@ namespace mapnik { - enum { + enum CommandType { SEG_END =0, SEG_MOVETO=1, SEG_LINETO=2, diff --git a/include/mapnik/vertex_vector.hpp b/include/mapnik/vertex_vector.hpp index 4e3bb2185..673577f1f 100644 --- a/include/mapnik/vertex_vector.hpp +++ b/include/mapnik/vertex_vector.hpp @@ -45,7 +45,7 @@ namespace mapnik { typedef typename T::type value_type; typedef vertex vertex_type; - enum { + enum block_e { block_shift = 8, block_size = 1< #include -using namespace mapnik; +using mapnik::Pool; +using mapnik::singleton; +using mapnik::CreateStatic; using std::string; +using boost::mutex; template class ConnectionCreator diff --git a/plugins/input/postgis/postgis.cpp b/plugins/input/postgis/postgis.cpp index fea1591b0..f6ca56245 100644 --- a/plugins/input/postgis/postgis.cpp +++ b/plugins/input/postgis/postgis.cpp @@ -43,6 +43,9 @@ using boost::lexical_cast; using boost::bad_lexical_cast; using boost::shared_ptr; +using mapnik::PoolGuard; +using mapnik::attribute_descriptor; + postgis_datasource::postgis_datasource(parameters const& params) : datasource (params), table_(params.get("table")), diff --git a/plugins/input/postgis/postgis.hpp b/plugins/input/postgis/postgis.hpp index 93d261eff..08fb5c28e 100644 --- a/plugins/input/postgis/postgis.hpp +++ b/plugins/input/postgis/postgis.hpp @@ -29,15 +29,24 @@ #include #include #include - +#include #include #include #include #include "connection_manager.hpp" -using namespace mapnik; -class mapnik::transcoder; +using mapnik::transcoder; +using mapnik::datasource; +using mapnik::Envelope; +using mapnik::layer_descriptor; +using mapnik::featureset_ptr; +using mapnik::feature_ptr; +using mapnik::query; +using mapnik::parameters; +using mapnik::coord2d; + +class transcoder; class postgis_datasource : public datasource { static const std::string GEOMETRY_COLUMNS; @@ -69,7 +78,7 @@ class postgis_datasource : public datasource postgis_datasource& operator=(const postgis_datasource&); }; -class postgis_featureset : public Featureset +class postgis_featureset : public mapnik::Featureset { private: boost::shared_ptr rs_; diff --git a/plugins/input/postgis/postgisfs.cpp b/plugins/input/postgis/postgisfs.cpp index 520d965cb..e40ce3265 100644 --- a/plugins/input/postgis/postgisfs.cpp +++ b/plugins/input/postgis/postgisfs.cpp @@ -32,6 +32,10 @@ using boost::lexical_cast; using boost::bad_lexical_cast; using boost::trim; using std::string; +using mapnik::Feature; +using mapnik::geometry_ptr; +using mapnik::byte; +using mapnik::geometry_utils; postgis_featureset::postgis_featureset(boost::shared_ptr const& rs, std::string const& encoding, @@ -48,8 +52,8 @@ feature_ptr postgis_featureset::next() { feature_ptr feature(new Feature(count_)); int size=rs_->getFieldLength(0); - const char *data=rs_->getValue(0); - geometry_ptr geom=geometry_utils::from_wkb(data,size,-1); + const char *data = rs_->getValue(0); + geometry_ptr geom = geometry_utils::from_wkb(data,size,-1); totalGeomSize_+=size; if (geom) diff --git a/plugins/input/raster/SConscript b/plugins/input/raster/SConscript index ea3d89627..edfe47f80 100644 --- a/plugins/input/raster/SConscript +++ b/plugins/input/raster/SConscript @@ -32,7 +32,11 @@ raster_src = Split( """ ) -raster_inputdriver = env.SharedLibrary('raster', source=raster_src, SHLIBPREFIX='', LIBS=[]) +libraries = [] +if env['PLATFORM'] == 'Darwin': + libraries.append('mapnik') + +raster_inputdriver = env.SharedLibrary('raster', source=raster_src, SHLIBPREFIX='', SHLIBSUFFIX='.input', LIBS=libraries) env.Install(install_prefix + '/' + env['LIBDIR_SCHEMA'] + '/mapnik/input', raster_inputdriver) env.Alias('install', install_prefix + '/' + env['LIBDIR_SCHEMA'] + '/mapnik/input') diff --git a/plugins/input/raster/raster_datasource.cpp b/plugins/input/raster/raster_datasource.cpp index 36421466b..883c27034 100644 --- a/plugins/input/raster/raster_datasource.cpp +++ b/plugins/input/raster/raster_datasource.cpp @@ -30,12 +30,19 @@ #include "raster_datasource.hpp" +using mapnik::datasource; +using mapnik::parameters; + DATASOURCE_PLUGIN(raster_datasource) using std::clog; using std::endl; using boost::lexical_cast; using boost::bad_lexical_cast; +using mapnik::layer_descriptor; +using mapnik::featureset_ptr; +using mapnik::query; +using mapnik::coord2d; raster_datasource::raster_datasource(const parameters& params) : datasource (params), diff --git a/plugins/input/raster/raster_datasource.hpp b/plugins/input/raster/raster_datasource.hpp index c991f2271..1cd5ba1c4 100644 --- a/plugins/input/raster/raster_datasource.hpp +++ b/plugins/input/raster/raster_datasource.hpp @@ -28,30 +28,28 @@ #include #include -using namespace mapnik; - -class raster_datasource : public datasource +class raster_datasource : public mapnik::datasource { -private: - std::string filename_; - std::string format_; - mapnik::Envelope extent_; - layer_descriptor desc_; - static std::string name_; -public: - raster_datasource(const parameters& params); - virtual ~raster_datasource(); - int type() const; - static std::string name(); - featureset_ptr features(const query& q) const; - featureset_ptr features_at_point(coord2d const& pt) const; - mapnik::Envelope envelope() const; - layer_descriptor get_descriptor() const; -private: - //no copying - raster_datasource(const raster_datasource&); - raster_datasource& operator=(const raster_datasource&); - // + private: + std::string filename_; + std::string format_; + mapnik::Envelope extent_; + mapnik::layer_descriptor desc_; + static std::string name_; + public: + raster_datasource(const mapnik::parameters& params); + virtual ~raster_datasource(); + int type() const; + static std::string name(); + mapnik::featureset_ptr features(const mapnik::query& q) const; + mapnik::featureset_ptr features_at_point(mapnik::coord2d const& pt) const; + mapnik::Envelope envelope() const; + mapnik::layer_descriptor get_descriptor() const; + private: + //no copying + raster_datasource(const raster_datasource&); + raster_datasource& operator=(const raster_datasource&); + // }; #endif //RASTER_DATASOURCE_H diff --git a/plugins/input/raster/raster_featureset.cpp b/plugins/input/raster/raster_featureset.cpp index b7621bc9c..a3617c565 100644 --- a/plugins/input/raster/raster_featureset.cpp +++ b/plugins/input/raster/raster_featureset.cpp @@ -25,14 +25,22 @@ #include "raster_featureset.hpp" +using mapnik::query; +using mapnik::CoordTransform; +using mapnik::ImageReader; +using mapnik::Feature; +using mapnik::feature_ptr; +using mapnik::ImageData32; +using mapnik::raster; + template raster_featureset::raster_featureset(LookupPolicy const& policy, query const& q) - : policy_(policy), - id_(1), - extent_(q.get_bbox()), - curIter_(policy_.query(extent_)), - endIter_(policy_.end()) + : policy_(policy), + id_(1), + extent_(q.get_bbox()), + curIter_(policy_.query(extent_)), + endIter_(policy_.end()) {} template @@ -41,35 +49,35 @@ raster_featureset::~raster_featureset() {} template feature_ptr raster_featureset::next() { - if (curIter_!=endIter_) - { - feature_ptr feature(new Feature(+id_)); - try - { - std::auto_ptr reader(get_image_reader(curIter_->format(),curIter_->file())); - if (reader.get()) + if (curIter_!=endIter_) + { + feature_ptr feature(new Feature(+id_)); + try + { + std::auto_ptr reader(mapnik::get_image_reader(curIter_->format(),curIter_->file())); + if (reader.get()) + { + int image_width=reader->width(); + int image_height=reader->height(); + if (image_width>0 && image_height>0) { - int image_width=reader->width(); - int image_height=reader->height(); - if (image_width>0 && image_height>0) - { - CoordTransform t(image_width,image_height,curIter_->envelope(),0,0); - Envelope intersect=extent_.intersect(curIter_->envelope()); - Envelope ext=t.forward(intersect); + CoordTransform t(image_width,image_height,curIter_->envelope(),0,0); + Envelope intersect=extent_.intersect(curIter_->envelope()); + Envelope ext=t.forward(intersect); - ImageData32 image((int)ext.width(),(int)ext.height()); - reader->read((int)ext.minx(),(int)ext.miny(),image); - feature->set_raster(raster_ptr(new raster(intersect,image))); - } + ImageData32 image((int)ext.width(),(int)ext.height()); + reader->read((int)ext.minx(),(int)ext.miny(),image); + feature->set_raster(mapnik::raster_ptr(new raster(intersect,image))); } - } - catch (...) - { - } - ++curIter_; - return feature; - } - return feature_ptr(); + } + } + catch (...) + { + } + ++curIter_; + return feature; + } + return feature_ptr(); } template class raster_featureset; diff --git a/plugins/input/raster/raster_featureset.hpp b/plugins/input/raster/raster_featureset.hpp index f917ddee3..333dfe62f 100644 --- a/plugins/input/raster/raster_featureset.hpp +++ b/plugins/input/raster/raster_featureset.hpp @@ -27,15 +27,13 @@ #include "raster_datasource.hpp" #include "raster_info.hpp" -using std::vector; - class single_file_policy { raster_info info_; public: class const_iterator { - enum {start,end}; + enum iterator_e {start,end}; bool status_; const single_file_policy* p_; public: @@ -96,18 +94,18 @@ public: }; template -class raster_featureset : public Featureset +class raster_featureset : public mapnik::Featureset { - typedef typename LookupPolicy::const_iterator iterator_type; - LookupPolicy policy_; - size_t id_; - Envelope extent_; - iterator_type curIter_; - iterator_type endIter_; + typedef typename LookupPolicy::const_iterator iterator_type; + LookupPolicy policy_; + size_t id_; + mapnik::Envelope extent_; + iterator_type curIter_; + iterator_type endIter_; public: - raster_featureset(LookupPolicy const& policy,query const& q); - virtual ~raster_featureset(); - feature_ptr next(); + raster_featureset(LookupPolicy const& policy,mapnik::query const& q); + virtual ~raster_featureset(); + mapnik::feature_ptr next(); }; #endif //RASTER_FEATURESET_HH diff --git a/plugins/input/shape/SConscript b/plugins/input/shape/SConscript index c718109a3..e61b218f9 100644 --- a/plugins/input/shape/SConscript +++ b/plugins/input/shape/SConscript @@ -37,7 +37,12 @@ shape_src = Split( """ ) -shape_inputdriver = env.SharedLibrary('shape', source=shape_src, SHLIBPREFIX='', LIBS=[]) +libraries = [] +if env['PLATFORM'] == 'Darwin': + libraries.append('mapnik') + libraries.append('iconv') + +shape_inputdriver = env.SharedLibrary('shape', SHLIBSUFFIX='.input', source=shape_src, SHLIBPREFIX='', LIBS = libraries) env.Install(install_prefix + '/' + env['LIBDIR_SCHEMA'] + '/mapnik/input', shape_inputdriver) env.Alias('install', install_prefix + '/' + env['LIBDIR_SCHEMA'] + '/mapnik/input') diff --git a/plugins/input/shape/dbffile.hpp b/plugins/input/shape/dbffile.hpp index 81dfbfdab..e460ac2d1 100644 --- a/plugins/input/shape/dbffile.hpp +++ b/plugins/input/shape/dbffile.hpp @@ -30,9 +30,10 @@ #include -using namespace mapnik; - +using mapnik::transcoder; +using mapnik::Feature; class mapnik::transcoder; + struct field_descriptor { int index_; diff --git a/plugins/input/shape/shape.cpp b/plugins/input/shape/shape.cpp index 5fb46b8ec..5580f2be2 100644 --- a/plugins/input/shape/shape.cpp +++ b/plugins/input/shape/shape.cpp @@ -26,11 +26,18 @@ #include #include "shape_featureset.hpp" #include "shape_index_featureset.hpp" - #include "shape.hpp" DATASOURCE_PLUGIN(shape_datasource) +using mapnik::String; +using mapnik::Double; +using mapnik::Integer; +using mapnik::datasource_exception; +using mapnik::filter_in_box; +using mapnik::filter_at_point; +using mapnik::attribute_descriptor; + shape_datasource::shape_datasource(const parameters ¶ms) : datasource (params) , shape_name_(params.get("file")), @@ -55,18 +62,18 @@ shape_datasource::shape_datasource(const parameters ¶ms) case 'D': case 'M': case 'L': - desc_.add_descriptor(attribute_descriptor(fld_name,mapnik::String)); + //desc_.add_descriptor(attribute_descriptor(fld_name, String)); break; case 'N': case 'F': { if (fd.dec_>0) { - desc_.add_descriptor(attribute_descriptor(fld_name,mapnik::Double,false,8)); + //desc_.add_descriptor(attribute_descriptor(fld_name,Double,false,8)); } else { - desc_.add_descriptor(attribute_descriptor(fld_name,mapnik::Integer,false,4)); + //desc_.add_descriptor(attribute_descriptor(fld_name,Integer,false,4)); } break; } @@ -114,6 +121,7 @@ void shape_datasource::init(shape_io& shape) #else shape.shp().skip(4); #endif + shape.shp().read_envelope(extent_); shape.shp().skip(4*8); @@ -125,7 +133,7 @@ void shape_datasource::init(shape_io& shape) indexed_=true; file.close(); } - + #ifdef MAPNIK_DEBUG std::clog << extent_ << std::endl; std::clog << "file_length=" << file_length_ << std::endl; diff --git a/plugins/input/shape/shape.hpp b/plugins/input/shape/shape.hpp index bfb9bebcf..cd5e19d29 100644 --- a/plugins/input/shape/shape.hpp +++ b/plugins/input/shape/shape.hpp @@ -30,7 +30,12 @@ #include "shape_io.hpp" -using namespace mapnik; +using mapnik::datasource; +using mapnik::parameters; +using mapnik::query; +using mapnik::featureset_ptr; +using mapnik::layer_descriptor; +using mapnik::coord2d; class shape_datasource : public datasource { diff --git a/plugins/input/shape/shape_featureset.cpp b/plugins/input/shape/shape_featureset.cpp index 4d7a119b2..9f78bc30e 100644 --- a/plugins/input/shape/shape_featureset.cpp +++ b/plugins/input/shape/shape_featureset.cpp @@ -58,6 +58,8 @@ shape_featureset::shape_featureset(const filterT& filter, template feature_ptr shape_featureset::next() { + + using mapnik::point_impl; std::streampos pos=shape_.shp().pos(); if (pos < std::streampos(file_length_ * 2)) @@ -194,7 +196,7 @@ feature_ptr shape_featureset::next() template shape_featureset::~shape_featureset() {} -template class shape_featureset; -template class shape_featureset; +template class shape_featureset; +template class shape_featureset; diff --git a/plugins/input/shape/shape_featureset.hpp b/plugins/input/shape/shape_featureset.hpp index 90b96bf1b..f416b53fd 100644 --- a/plugins/input/shape/shape_featureset.hpp +++ b/plugins/input/shape/shape_featureset.hpp @@ -27,7 +27,9 @@ #include #include "shape.hpp" -using namespace mapnik; +using mapnik::Featureset; +using mapnik::Envelope; +using mapnik::feature_ptr; template class shape_featureset : public Featureset diff --git a/plugins/input/shape/shape_index_featureset.cpp b/plugins/input/shape/shape_index_featureset.cpp index 8742cdd24..fd9f66b53 100644 --- a/plugins/input/shape/shape_index_featureset.cpp +++ b/plugins/input/shape/shape_index_featureset.cpp @@ -71,12 +71,14 @@ shape_index_featureset::shape_index_featureset(const filterT& filter, template feature_ptr shape_index_featureset::next() { - - if (itr_!=ids_.end()) + using mapnik::feature_factory; + using mapnik::point_impl; + if (itr_!=ids_.end()) { int pos=*itr_++; shape_.move_to(pos); int type=shape_.type(); + feature_ptr feature(feature_factory::create(shape_.id_)); if (type==shape_io::shape_point) @@ -198,6 +200,6 @@ feature_ptr shape_index_featureset::next() template shape_index_featureset::~shape_index_featureset() {} -template class shape_index_featureset; -template class shape_index_featureset; +template class shape_index_featureset; +template class shape_index_featureset; diff --git a/plugins/input/shape/shape_io.cpp b/plugins/input/shape/shape_io.cpp index 5574a686a..15c9a663b 100644 --- a/plugins/input/shape/shape_io.cpp +++ b/plugins/input/shape/shape_io.cpp @@ -26,6 +26,7 @@ #include "shape.hpp" +using mapnik::datasource_exception; const std::string shape_io::SHP = ".shp"; const std::string shape_io::DBF = ".dbf"; @@ -91,6 +92,7 @@ dbf_file& shape_io::dbf() geometry_ptr shape_io::read_polyline() { + using mapnik::line_string_impl; shape_record record(reclength_*2-36); shp_.read_record(record); int num_parts=record.read_ndr_integer(); @@ -145,6 +147,7 @@ geometry_ptr shape_io::read_polyline() geometry_ptr shape_io::read_polylinem() { + using mapnik::line_string_impl; shape_record record(reclength_*2-36); shp_.read_record(record); int num_parts=record.read_ndr_integer(); @@ -206,7 +209,8 @@ geometry_ptr shape_io::read_polylinem() } geometry_ptr shape_io::read_polylinez() -{ +{ + using mapnik::line_string_impl; shape_record record(reclength_*2-36); shp_.read_record(record); int num_parts=record.read_ndr_integer(); @@ -276,6 +280,7 @@ geometry_ptr shape_io::read_polylinez() geometry_ptr shape_io::read_polygon() { + using mapnik::polygon_impl; shape_record record(reclength_*2-36); shp_.read_record(record); int num_parts=record.read_ndr_integer(); @@ -316,6 +321,7 @@ geometry_ptr shape_io::read_polygon() geometry_ptr shape_io::read_polygonm() { + using mapnik::polygon_impl; shape_record record(reclength_*2-36); shp_.read_record(record); int num_parts=record.read_ndr_integer(); @@ -364,6 +370,7 @@ geometry_ptr shape_io::read_polygonm() geometry_ptr shape_io::read_polygonz() { + using mapnik::polygon_impl; shape_record record(reclength_*2-36); shp_.read_record(record); int num_parts=record.read_ndr_integer(); diff --git a/plugins/input/shape/shapefile.hpp b/plugins/input/shape/shapefile.hpp index 61148f34f..8dbc9a11c 100644 --- a/plugins/input/shape/shapefile.hpp +++ b/plugins/input/shape/shapefile.hpp @@ -29,7 +29,7 @@ #include -using namespace mapnik; +using mapnik::Envelope; struct shape_record { diff --git a/plugins/input/shape/shp_index.cpp b/plugins/input/shape/shp_index.cpp index b6d6b55ff..1d26307b1 100644 --- a/plugins/input/shape/shp_index.cpp +++ b/plugins/input/shape/shp_index.cpp @@ -76,5 +76,5 @@ void shp_index::read_envelope(std::ifstream& file,Envelope& env file.read(reinterpret_cast(&envelope),sizeof(envelope)); } -template class shp_index; -template class shp_index; +template class shp_index; +template class shp_index; diff --git a/plugins/input/shape/shp_index.hpp b/plugins/input/shape/shp_index.hpp index 1b5328016..c4411a07b 100644 --- a/plugins/input/shape/shp_index.hpp +++ b/plugins/input/shape/shp_index.hpp @@ -30,7 +30,8 @@ #include #include -using namespace mapnik; +using mapnik::Envelope; +using mapnik::query; template class shp_index diff --git a/src/SConscript b/src/SConscript index 33276974b..3678793e0 100644 --- a/src/SConscript +++ b/src/SConscript @@ -29,7 +29,10 @@ install_prefix = env['DESTDIR'] + '/' + prefix libraries = ['agg'] + env['LIBS'] -linkflags = '-Wl,-rpath-link,. -Wl,-soname,libmapnik.so' +if env['PLATFORM'] == 'Darwin': + linkflags = ' ' +else: # Linux and others + linkflags = '-Wl,-rpath-link,. -Wl,-soname,libmapnik.so' source = Split( """ diff --git a/src/datasource_cache.cpp b/src/datasource_cache.cpp index 67abd92c7..a13582011 100644 --- a/src/datasource_cache.cpp +++ b/src/datasource_cache.cpp @@ -47,7 +47,7 @@ namespace mapnik std::map > datasource_cache::plugins_; bool datasource_cache::registered_=false; - + datasource_ptr datasource_cache::create(const parameters& params) { datasource_ptr ds; @@ -108,7 +108,7 @@ namespace mapnik { if (!is_directory( *itr ) && itr->leaf()[0]!='.') { - lt_dlhandle module=lt_dlopenext(itr->string().c_str()); + lt_dlhandle module=lt_dlopen(itr->string().c_str()); if (module) { datasource_name* ds_name = diff --git a/src/tiff_reader.cpp b/src/tiff_reader.cpp index f3b6b6e3e..7290ef9ab 100644 --- a/src/tiff_reader.cpp +++ b/src/tiff_reader.cpp @@ -49,7 +49,7 @@ namespace mapnik int tile_width_; int tile_height_; public: - enum { + enum TiffType { generic=1, stripped, tiled diff --git a/utils/shapeindex/quadtree.hpp b/utils/shapeindex/quadtree.hpp index b2fe52f5c..efc93944f 100644 --- a/utils/shapeindex/quadtree.hpp +++ b/utils/shapeindex/quadtree.hpp @@ -21,51 +21,52 @@ *****************************************************************************/ //$Id: quadtree.hh 17 2005-03-08 23:58:43Z pavlenko $ -#ifndef QUADTREE_HH -#define QUADTREE_HH +#ifndef QUADTREE_HPP +#define QUADTREE_HPP // stl #include #include // mapnik #include -using namespace mapnik; +using mapnik::Envelope; +using mapnik::coord2d; template struct quadtree_node { - Envelope ext_; - std::vector data_; - quadtree_node* children_[4]; - quadtree_node(const Envelope& ext) - : ext_(ext),data_() - { - memset(children_,0,sizeof(quadtree_node*)*4); - } + Envelope ext_; + std::vector data_; + quadtree_node* children_[4]; + quadtree_node(const Envelope& ext) + : ext_(ext),data_() + { + memset(children_,0,sizeof(quadtree_node*)*4); + } - ~quadtree_node() - { - for (int i=0;i<4;++i) - { + ~quadtree_node() + { + for (int i=0;i<4;++i) + { if (children_[i]) { - delete children_[i],children_[i]=0; + delete children_[i],children_[i]=0; } - } - } + } + } - int num_subnodes() const - { - int count=0; - for (int i=0;i<4;++i) - { + int num_subnodes() const + { + int count=0; + for (int i=0;i<4;++i) + { if (children_[i]) { - ++count; + ++count; } - } - return count; - } + } + return count; + } }; template @@ -294,4 +295,4 @@ private: } } }; -#endif //QUADTREE_HH +#endif //QUADTREE_HPP