From bd1407b7c512006509fd9aa09627cef4108decf8 Mon Sep 17 00:00:00 2001 From: Dane Springmeyer Date: Sun, 24 May 2009 05:45:07 +0000 Subject: [PATCH] +add pickle support for pattern symbolizers - see #345 --- .../python/mapnik_line_pattern_symbolizer.cpp | 13 +++++++++++++ .../mapnik_polygon_pattern_symbolizer.cpp | 17 +++++++++++++++-- 2 files changed, 28 insertions(+), 2 deletions(-) diff --git a/bindings/python/mapnik_line_pattern_symbolizer.cpp b/bindings/python/mapnik_line_pattern_symbolizer.cpp index f0de960c2..3e0265834 100644 --- a/bindings/python/mapnik_line_pattern_symbolizer.cpp +++ b/bindings/python/mapnik_line_pattern_symbolizer.cpp @@ -22,10 +22,22 @@ //$Id$ #include +#include #include using mapnik::line_pattern_symbolizer; +struct line_pattern_symbolizer_pickle_suite : boost::python::pickle_suite +{ + static boost::python::tuple + getinitargs(const line_pattern_symbolizer& l) + { + boost::shared_ptr img = l.get_image(); + const std::string & filename = l.get_filename(); + return boost::python::make_tuple(filename,mapnik::guess_type(filename),img->width(),img->height()); + } +}; + void export_line_pattern_symbolizer() { using namespace boost::python; @@ -33,5 +45,6 @@ void export_line_pattern_symbolizer() class_("LinePatternSymbolizer", init("TODO")) + .def_pickle(line_pattern_symbolizer_pickle_suite()) ; } diff --git a/bindings/python/mapnik_polygon_pattern_symbolizer.cpp b/bindings/python/mapnik_polygon_pattern_symbolizer.cpp index e76081b54..0d731a4c7 100644 --- a/bindings/python/mapnik_polygon_pattern_symbolizer.cpp +++ b/bindings/python/mapnik_polygon_pattern_symbolizer.cpp @@ -22,16 +22,29 @@ //$Id$ #include +#include #include +using mapnik::polygon_pattern_symbolizer; + +struct polygon_pattern_symbolizer_pickle_suite : boost::python::pickle_suite +{ + static boost::python::tuple + getinitargs(const polygon_pattern_symbolizer& p) + { + boost::shared_ptr img = p.get_image(); + const std::string & filename = p.get_filename(); + return boost::python::make_tuple(filename,mapnik::guess_type(filename),img->width(),img->height()); + } +}; + void export_polygon_pattern_symbolizer() { using namespace boost::python; - using mapnik::polygon_pattern_symbolizer; class_("PolygonPatternSymbolizer", init("TODO")) - ; + .def_pickle(polygon_pattern_symbolizer_pickle_suite()) ; }