Changeset 1342
- Timestamp:
- 10/19/09 10:22:11 (9 months ago)
- Location:
- trunk/bindings/python
- Files:
-
- 1 added
- 3 modified
-
mapnik/__init__.py (modified) (1 diff)
-
mapnik_python.cpp (modified) (3 diffs)
-
mapnik_rule.cpp (modified) (5 diffs)
-
mapnik_symbolizer.cpp (added)
Legend:
- Unmodified
- Added
- Removed
-
trunk/bindings/python/mapnik/__init__.py
r1319 r1342 241 241 attr[prop[0]] = prop[1] 242 242 return attr 243 244 class _Symbolizer(Symbolizer,_injector): 245 def symbol(self): 246 return getattr(self,self.type())() 243 247 244 248 #class _Filter(Filter,_injector): -
trunk/bindings/python/mapnik_python.cpp
r1278 r1342 47 47 void export_datasource(); 48 48 void export_datasource_cache(); 49 void export_symbolizer(); 49 50 void export_point_symbolizer(); 50 51 void export_line_symbolizer(); … … 295 296 export_stroke(); 296 297 export_datasource_cache(); 298 export_symbolizer(); 297 299 export_point_symbolizer(); 298 300 export_line_symbolizer(); … … 471 473 def("has_cairo", &has_cairo, "Get cairo library status"); 472 474 def("has_pycairo", &has_pycairo, "Get pycairo module status"); 473 474 using mapnik::symbolizer; 475 class_<symbolizer>("Symbolizer",no_init) 476 ; 477 475 478 476 register_ptr_to_python<mapnik::filter_ptr>(); 479 477 } -
trunk/bindings/python/mapnik_rule.cpp
r997 r1342 44 44 using mapnik::text_symbolizer; 45 45 using mapnik::building_symbolizer; 46 using mapnik::markers_symbolizer; 46 47 using mapnik::symbolizer; 47 48 using mapnik::symbolizers; 49 50 struct pickle_symbolizer : public boost::static_visitor<> 51 { 52 public: 53 pickle_symbolizer( boost::python::list syms): 54 syms_(syms) {} 55 56 void operator () ( const point_symbolizer & sym ) 57 { 58 syms_.append(sym); 59 } 60 61 void operator () ( const line_symbolizer & sym ) 62 { 63 syms_.append(sym); 64 } 65 66 void operator () ( const line_pattern_symbolizer & sym ) 67 { 68 syms_.append(sym); 69 } 70 71 void operator () ( const polygon_symbolizer & sym ) 72 { 73 syms_.append(sym); 74 } 75 76 void operator () ( const polygon_pattern_symbolizer & sym ) 77 { 78 syms_.append(sym); 79 } 80 81 void operator () ( const raster_symbolizer & sym ) 82 { 83 syms_.append(sym); 84 } 85 86 void operator () ( const shield_symbolizer & sym ) 87 { 88 syms_.append(sym); 89 } 90 91 void operator () ( const text_symbolizer & sym ) 92 { 93 syms_.append(sym); 94 } 95 96 void operator () ( const building_symbolizer & sym ) 97 { 98 syms_.append(sym); 99 } 100 101 void operator () ( markers_symbolizer const& ) 102 { 103 //TODO 104 } 105 106 private: 107 boost::python::list syms_; 108 109 }; 110 111 struct extract_symbolizer : public boost::static_visitor<> 112 { 113 public: 114 extract_symbolizer( rule_type& r): 115 r_(r) {} 116 117 void operator () ( const point_symbolizer & sym ) 118 { 119 120 r_.append(sym); 121 } 122 123 void operator () ( const line_symbolizer & sym ) 124 { 125 r_.append(sym); 126 } 127 128 void operator () ( const line_pattern_symbolizer & sym ) 129 { 130 r_.append(sym); 131 } 132 133 void operator () ( const polygon_symbolizer & sym ) 134 { 135 r_.append(sym); 136 } 137 138 void operator () ( const polygon_pattern_symbolizer & sym ) 139 { 140 r_.append(sym); 141 } 142 143 void operator () ( const raster_symbolizer & sym ) 144 { 145 r_.append(sym); 146 } 147 148 void operator () ( const shield_symbolizer & sym ) 149 { 150 r_.append(sym); 151 } 152 153 void operator () ( const text_symbolizer & sym ) 154 { 155 r_.append(sym); 156 } 157 158 void operator () ( const building_symbolizer & sym ) 159 { 160 r_.append(sym); 161 } 162 163 void operator () ( markers_symbolizer const& ) 164 { 165 //TODO 166 } 167 168 private: 169 rule_type& r_; 170 171 }; 48 172 49 173 struct rule_pickle_suite : boost::python::pickle_suite … … 59 183 { 60 184 boost::python::list syms; 61 symbolizers::const_iterator it = r.begin(); 62 symbolizers::const_iterator end = r.end(); 63 for (; it != end; ++it) 64 { 65 syms.append( *it ); 66 } 185 186 symbolizers::const_iterator begin = r.get_symbolizers().begin(); 187 symbolizers::const_iterator end = r.get_symbolizers().end(); 188 pickle_symbolizer serializer( syms ); 189 std::for_each( begin, end , boost::apply_visitor( serializer )); 67 190 68 191 // Here the filter string is used rather than the actual Filter object … … 92 215 if (state[1]) 93 216 { 94 std::string filter_expr=extract<std::string>(state[1]); 95 r.set_filter(mapnik::create_filter(filter_expr,"utf8")); 217 rule_type dfl; 218 std::string filter = extract<std::string>(state[1]); 219 std::string default_filter = dfl.get_filter()->to_string(); 220 if ( filter != default_filter) 221 { 222 r.set_filter(mapnik::create_filter(filter,"utf8")); 223 } 96 224 } 97 225 … … 102 230 103 231 boost::python::list syms=extract<boost::python::list>(state[3]); 232 extract_symbolizer serializer( r ); 104 233 for (int i=0;i<len(syms);++i) 105 234 { 106 r.append(extract<symbolizer>(syms[i]));107 }108 235 symbolizer symbol = extract<symbolizer>(syms[i]); 236 boost::apply_visitor( serializer, symbol ); 237 } 109 238 } 110 239 … … 131 260 .def(init<std::string const&, 132 261 boost::python::optional<std::string const&,double,double> >()) 133 .def_pickle(rule_pickle_suite() 134 ) 262 .def_pickle(rule_pickle_suite()) 135 263 .add_property("name",make_function 136 264 (&rule_type::get_name,
