From a27b95558beee8e9f0427df27502a0bde3503c31 Mon Sep 17 00:00:00 2001 From: Dane Springmeyer Date: Wed, 3 Oct 2012 13:48:05 -0700 Subject: [PATCH 01/45] remove uneeded includes --- src/agg/process_shield_symbolizer.cpp | 3 --- src/grid/process_shield_symbolizer.cpp | 3 --- 2 files changed, 6 deletions(-) diff --git a/src/agg/process_shield_symbolizer.cpp b/src/agg/process_shield_symbolizer.cpp index 61f3c9fee..da2da46a0 100644 --- a/src/agg/process_shield_symbolizer.cpp +++ b/src/agg/process_shield_symbolizer.cpp @@ -24,9 +24,6 @@ #include #include #include -#include -#include -#include #include // boost diff --git a/src/grid/process_shield_symbolizer.cpp b/src/grid/process_shield_symbolizer.cpp index 4fe455bdb..533507b80 100644 --- a/src/grid/process_shield_symbolizer.cpp +++ b/src/grid/process_shield_symbolizer.cpp @@ -27,9 +27,6 @@ #include #include #include -#include -#include -#include // agg #include "agg_trans_affine.h" From 7d5642640d91c2d472fc17d904dd1aad63116282 Mon Sep 17 00:00:00 2001 From: Dane Springmeyer Date: Wed, 3 Oct 2012 13:49:06 -0700 Subject: [PATCH 02/45] use the proper premultiplied pixel type for render_marker --- src/agg/agg_renderer.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/agg/agg_renderer.cpp b/src/agg/agg_renderer.cpp index cac9710a6..6fc29f91f 100644 --- a/src/agg/agg_renderer.cpp +++ b/src/agg/agg_renderer.cpp @@ -300,6 +300,7 @@ void agg_renderer::render_marker(pixel_position const& pos, marker const& mar typedef agg::pixfmt_custom_blend_rgba pixfmt_comp_type; typedef agg::renderer_base renderer_base; typedef agg::renderer_scanline_aa_solid renderer_type; + typedef agg::pod_bvector svg_attribute_type; ras_ptr->reset(); ras_ptr->gamma(agg::gamma_power()); @@ -324,9 +325,9 @@ void agg_renderer::render_marker(pixel_position const& pos, marker const& mar vertex_stl_adapter stl_storage((*marker.get_vector_data())->source()); svg_path_adapter svg_path(stl_storage); svg_renderer_agg, + svg_attribute_type, renderer_type, - agg::pixfmt_rgba32> svg_renderer(svg_path, + pixfmt_comp_type> svg_renderer(svg_path, (*marker.get_vector_data())->attributes()); svg_renderer.render(*ras_ptr, sl, renb, mtx, opacity, bbox); From 3de5c4fab7c5438d7104f98eb3bab0c45505600b Mon Sep 17 00:00:00 2001 From: Dane Springmeyer Date: Wed, 3 Oct 2012 13:49:56 -0700 Subject: [PATCH 03/45] remove test target for travis for now --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index e592c4870..557c1a5f4 100644 --- a/.travis.yml +++ b/.travis.yml @@ -10,4 +10,4 @@ before_install: - sudo apt-get update -qq - sudo apt-get install -qq libboost-dev libboost-filesystem-dev libboost-program-options-dev libboost-python-dev libboost-regex-dev libboost-system-dev libboost-thread-dev python-nose libicu-dev libpng-dev libjpeg-dev libtiff-dev libz-dev libfreetype6-dev libxml2-dev libproj-dev libpq-dev libgdal-dev libcairomm-1.0-dev python-cairo-dev libsqlite3-dev -script: scons configure JOBS=2 FAST=True CXX="$CXX $CXX_SCONS" WARNING_CXXFLAGS=$WARNING_CXXFLAGS && sudo make install && make test || echo "Overall Test Exit Code: $?" +script: scons configure JOBS=2 FAST=True CXX="$CXX $CXX_SCONS" WARNING_CXXFLAGS=$WARNING_CXXFLAGS && sudo make install From 5da14ef9e96feda820fdf0a325832285b8b129c6 Mon Sep 17 00:00:00 2001 From: Dane Springmeyer Date: Wed, 3 Oct 2012 14:00:48 -0700 Subject: [PATCH 04/45] handle demultiplying the png before saving - solves gray halo reported in #1312 (when testing with svg2png utility) --- utils/svg2png/svg2png.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/utils/svg2png/svg2png.cpp b/utils/svg2png/svg2png.cpp index 96cc1d3bf..40cc8fa25 100644 --- a/utils/svg2png/svg2png.cpp +++ b/utils/svg2png/svg2png.cpp @@ -142,7 +142,7 @@ int main (int argc,char** argv) continue; } - typedef agg::pixfmt_rgba32_plain pixfmt; + typedef agg::pixfmt_rgba32_pre pixfmt; typedef agg::renderer_base renderer_base; typedef agg::renderer_scanline_aa_solid renderer_solid; agg::rasterizer_scanline_aa<> ras_ptr; @@ -173,12 +173,13 @@ int main (int argc,char** argv) mapnik::svg::svg_renderer_agg, renderer_solid, - agg::pixfmt_rgba32_plain > svg_renderer_this(svg_path, + agg::pixfmt_rgba32_pre > svg_renderer_this(svg_path, (*marker.get_vector_data())->attributes()); svg_renderer_this.render(ras_ptr, sl, renb, mtx, opacity, bbox); boost::algorithm::ireplace_last(svg_name,".svg",".png"); + im.demultiply(); mapnik::save_to_file(im.data(),svg_name,"png"); if (auto_open) { From 24adb813900800df202d5e4d7f21f40107c1ba67 Mon Sep 17 00:00:00 2001 From: Dane Springmeyer Date: Wed, 3 Oct 2012 14:58:12 -0700 Subject: [PATCH 05/45] c++ style --- include/mapnik/feature.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/mapnik/feature.hpp b/include/mapnik/feature.hpp index e4799a811..a86aa768b 100644 --- a/include/mapnik/feature.hpp +++ b/include/mapnik/feature.hpp @@ -257,7 +257,7 @@ public: return result; } - const raster_ptr& get_raster() const + raster_ptr const& get_raster() const { return raster_; } From f4ead94c37c24be3ad193c3284e7873e1256afc8 Mon Sep 17 00:00:00 2001 From: Dane Springmeyer Date: Wed, 3 Oct 2012 15:40:43 -0700 Subject: [PATCH 06/45] make raster non-copyable --- include/mapnik/raster.hpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/include/mapnik/raster.hpp b/include/mapnik/raster.hpp index 5a5c7c59a..1337139cc 100644 --- a/include/mapnik/raster.hpp +++ b/include/mapnik/raster.hpp @@ -27,9 +27,13 @@ #include #include +// boost +#include + namespace mapnik { -struct raster +class raster : private boost::noncopyable { +public: box2d ext_; image_data_32 data_; bool premultiplied_alpha_; From 4bc6b0c800fd29bc4181888bf30fc3f137acc346 Mon Sep 17 00:00:00 2001 From: Dane Springmeyer Date: Wed, 3 Oct 2012 15:53:41 -0700 Subject: [PATCH 07/45] avoid copy of image data by using new, more efficient mapnik::raster constructor - closes #1516 --- CHANGELOG.md | 2 ++ plugins/input/gdal/gdal_featureset.cpp | 5 +++-- plugins/input/raster/raster_featureset.cpp | 7 ++++--- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8bc068f55..3e725d030 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,8 @@ For a complete change history, see the git log. ## Future +- Faster rendering of rasters by reducing memory allocation of temporary buffers (#1516) + - Added ability to pass a pre-created collision detector to the cairo renderer (#1444) - Tolerance parameter is now supported for querying datasources at a given point (#503/#1499) diff --git a/plugins/input/gdal/gdal_featureset.cpp b/plugins/input/gdal/gdal_featureset.cpp index 3beaa60a9..0addfc8aa 100644 --- a/plugins/input/gdal/gdal_featureset.cpp +++ b/plugins/input/gdal/gdal_featureset.cpp @@ -223,7 +223,8 @@ feature_ptr gdal_featureset::get_feature(mapnik::query const& q) if (im_width > 0 && im_height > 0) { - mapnik::image_data_32 image(im_width, im_height); + mapnik::raster_ptr raster = boost::make_shared(intersect, im_width, im_height); + mapnik::image_data_32 & image = raster->data_; image.set(0xffffffff); MAPNIK_LOG_DEBUG(gdal) << "gdal_featureset: Image Size=(" << im_width << "," << im_height << ")"; @@ -489,7 +490,7 @@ feature_ptr gdal_featureset::get_feature(mapnik::query const& q) image.width(), image.height(), GDT_Byte, 4, 4 * image.width()); } - feature->set_raster(boost::make_shared(intersect, image)); + feature->set_raster(raster); } return feature; } diff --git a/plugins/input/raster/raster_featureset.cpp b/plugins/input/raster/raster_featureset.cpp index 9d7c0b4d1..ea4942bd8 100644 --- a/plugins/input/raster/raster_featureset.cpp +++ b/plugins/input/raster/raster_featureset.cpp @@ -111,9 +111,10 @@ feature_ptr raster_featureset::next() rem.maxy() + y_off + height); intersect = t.backward(feature_raster_extent); - image_data_32 image(width,height); - reader->read(x_off, y_off, image); - feature->set_raster(boost::make_shared(intersect, image,reader->premultiplied_alpha())); + mapnik::raster_ptr raster = boost::make_shared(intersect, width, height); + reader->read(x_off, y_off, raster->data_); + raster->premultiplied_alpha_ = reader->premultiplied_alpha(); + feature->set_raster(raster); } } } From c27530ec7bfa810c34160e89aa82877840c95199 Mon Sep 17 00:00:00 2001 From: Dane Springmeyer Date: Wed, 3 Oct 2012 18:22:18 -0700 Subject: [PATCH 08/45] remove inefficient and no longer used mapnik::raster constructor - refs #1516 --- include/mapnik/raster.hpp | 6 ------ plugins/input/gdal/gdal_featureset.cpp | 6 +----- 2 files changed, 1 insertion(+), 11 deletions(-) diff --git a/include/mapnik/raster.hpp b/include/mapnik/raster.hpp index 1337139cc..e4b4ec288 100644 --- a/include/mapnik/raster.hpp +++ b/include/mapnik/raster.hpp @@ -42,12 +42,6 @@ public: data_(width,height), premultiplied_alpha_(premultiplied_alpha) {} - raster(box2d const& ext,image_data_32 const& data, bool premultiplied_alpha = false) - : ext_(ext), - data_(data), - premultiplied_alpha_(premultiplied_alpha) - {} - }; } diff --git a/plugins/input/gdal/gdal_featureset.cpp b/plugins/input/gdal/gdal_featureset.cpp index 0addfc8aa..08fef0f6b 100644 --- a/plugins/input/gdal/gdal_featureset.cpp +++ b/plugins/input/gdal/gdal_featureset.cpp @@ -224,14 +224,13 @@ feature_ptr gdal_featureset::get_feature(mapnik::query const& q) if (im_width > 0 && im_height > 0) { mapnik::raster_ptr raster = boost::make_shared(intersect, im_width, im_height); + feature->set_raster(raster); mapnik::image_data_32 & image = raster->data_; image.set(0xffffffff); MAPNIK_LOG_DEBUG(gdal) << "gdal_featureset: Image Size=(" << im_width << "," << im_height << ")"; MAPNIK_LOG_DEBUG(gdal) << "gdal_featureset: Reading band=" << band_; - typedef std::vector pallete; - if (band_ > 0) // we are querying a single band { if (band_ > nbands_) @@ -256,7 +255,6 @@ feature_ptr gdal_featureset::get_feature(mapnik::query const& q) imageData, image.width(), image.height(), GDT_Float32, 0, 0); - feature->set_raster(boost::make_shared(intersect,image)); if (hasNoData) { feature->put("NODATA",nodata); @@ -489,8 +487,6 @@ feature_ptr gdal_featureset::get_feature(mapnik::query const& q) alpha->RasterIO(GF_Read, x_off, y_off, width, height, image.getBytes() + 3, image.width(), image.height(), GDT_Byte, 4, 4 * image.width()); } - - feature->set_raster(raster); } return feature; } From c0fd6802ed133b9e9108ed00b11c8256b997ee0e Mon Sep 17 00:00:00 2001 From: Dane Springmeyer Date: Wed, 3 Oct 2012 18:23:07 -0700 Subject: [PATCH 09/45] pattern source is only used by line_pattern_symbolizer so move it to that cpp --- src/agg/agg_renderer.cpp | 26 --------------- src/agg/process_line_pattern_symbolizer.cpp | 37 +++++++++++++++++++-- 2 files changed, 35 insertions(+), 28 deletions(-) diff --git a/src/agg/agg_renderer.cpp b/src/agg/agg_renderer.cpp index 6fc29f91f..93e866ce0 100644 --- a/src/agg/agg_renderer.cpp +++ b/src/agg/agg_renderer.cpp @@ -62,32 +62,6 @@ namespace mapnik { -class pattern_source : private boost::noncopyable -{ -public: - pattern_source(image_data_32 const& pattern) - : pattern_(pattern) {} - - unsigned int width() const - { - return pattern_.width(); - } - unsigned int height() const - { - return pattern_.height(); - } - agg::rgba8 pixel(int x, int y) const - { - unsigned c = pattern_(x,y); - return agg::rgba8(c & 0xff, - (c >> 8) & 0xff, - (c >> 16) & 0xff, - (c >> 24) & 0xff); - } -private: - image_data_32 const& pattern_; -}; - template agg_renderer::agg_renderer(Map const& m, T & pixmap, double scale_factor, unsigned offset_x, unsigned offset_y) diff --git a/src/agg/process_line_pattern_symbolizer.cpp b/src/agg/process_line_pattern_symbolizer.cpp index e0177527e..e0b621f7a 100644 --- a/src/agg/process_line_pattern_symbolizer.cpp +++ b/src/agg/process_line_pattern_symbolizer.cpp @@ -20,8 +20,6 @@ * *****************************************************************************/ -// boost -#include // mapnik #include #include @@ -33,6 +31,7 @@ #include #include #include + // agg #include "agg_basics.h" #include "agg_rendering_buffer.h" @@ -47,6 +46,40 @@ #include "agg_renderer_outline_image.h" #include "agg_conv_clip_polyline.h" +// boost +#include +#include + +namespace { + +class pattern_source : private boost::noncopyable +{ +public: + pattern_source(mapnik::image_data_32 const& pattern) + : pattern_(pattern) {} + + unsigned int width() const + { + return pattern_.width(); + } + unsigned int height() const + { + return pattern_.height(); + } + agg::rgba8 pixel(int x, int y) const + { + unsigned c = pattern_(x,y); + return agg::rgba8(c & 0xff, + (c >> 8) & 0xff, + (c >> 16) & 0xff, + (c >> 24) & 0xff); + } +private: + mapnik::image_data_32 const& pattern_; +}; + +} + namespace mapnik { template From 43280f17c4aa73ae91402393dcb3e3b5bc93f930 Mon Sep 17 00:00:00 2001 From: Dane Springmeyer Date: Wed, 3 Oct 2012 18:53:23 -0700 Subject: [PATCH 10/45] allow the pure white test to pass if its nearly white --- tests/python_tests/raster_symbolizer_test.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/python_tests/raster_symbolizer_test.py b/tests/python_tests/raster_symbolizer_test.py index d5e9bc687..c592dbb8b 100644 --- a/tests/python_tests/raster_symbolizer_test.py +++ b/tests/python_tests/raster_symbolizer_test.py @@ -151,7 +151,7 @@ def test_raster_with_alpha_blends_correctly_with_background(): mapnik.render(map, mim) imdata = mim.tostring() # All white is expected - eq_(contains_word('\xff\xff\xff\xff', imdata),True,'Image expected to contain true white, instead found %s' % get_unique_colors(mim)) + eq_(get_unique_colors(mim),['rgba(254,254,254,255)']) def test_raster_warping(): lyrSrs = "+init=epsg:32630" From eaf6049909e3d89e3627be57b46642f631f7d9ce Mon Sep 17 00:00:00 2001 From: artemp Date: Thu, 4 Oct 2012 12:15:51 +0100 Subject: [PATCH 11/45] + template on geometry/path concept --- include/mapnik/util/geometry_to_wkb.hpp | 396 ++++++++++++------------ 1 file changed, 199 insertions(+), 197 deletions(-) diff --git a/include/mapnik/util/geometry_to_wkb.hpp b/include/mapnik/util/geometry_to_wkb.hpp index ee3686568..10572ec12 100644 --- a/include/mapnik/util/geometry_to_wkb.hpp +++ b/include/mapnik/util/geometry_to_wkb.hpp @@ -39,241 +39,243 @@ namespace mapnik { namespace util { - std::string to_hex(const char* blob, unsigned size) +std::string to_hex(const char* blob, unsigned size) +{ + std::string buf; + buf.reserve(size*2); + std::ostringstream s(buf); + s.seekp(0); + char hex[3]; + std::memset(hex,0,3); + for ( unsigned pos=0; pos < size; ++pos) { - std::string buf; - buf.reserve(size*2); - std::ostringstream s(buf); - s.seekp(0); - char hex[3]; - std::memset(hex,0,3); - for ( unsigned pos=0; pos < size; ++pos) - { - std::sprintf (hex, "%02x", int(blob[pos]) & 0xff); - s << hex; - } - return s.str(); + std::sprintf (hex, "%02x", int(blob[pos]) & 0xff); + s << hex; } + return s.str(); +} - enum wkbByteOrder { - wkbXDR=0, - wkbNDR=1 - }; +enum wkbByteOrder { + wkbXDR=0, + wkbNDR=1 +}; - inline void reverse_bytes(char size, char *address) +inline void reverse_bytes(char size, char *address) +{ + char * first = address; + char * last = first + size - 1; + for(;first < last;++first, --last) { - char * first = address; - char * last = first + size - 1; - for(;first < last;++first, --last) - { - char x = *last; - *last = *first; - *first = x; - } + char x = *last; + *last = *first; + *first = x; } +} - template - inline void write (S & stream, T val, std::size_t size, wkbByteOrder byte_order) - { +template +inline void write (S & stream, T val, std::size_t size, wkbByteOrder byte_order) +{ #ifdef MAPNIK_BIG_ENDIAN - bool need_swap = byte_order ? wkbNDR : wkbXDR; + bool need_swap = byte_order ? wkbNDR : wkbXDR; #else - bool need_swap = byte_order ? wkbXDR : wkbNDR; + bool need_swap = byte_order ? wkbXDR : wkbNDR; #endif - char* buf = reinterpret_cast(&val); - if (need_swap) - { - reverse_bytes(size,buf); - } - stream.write(buf,size); + char* buf = reinterpret_cast(&val); + if (need_swap) + { + reverse_bytes(size,buf); + } + stream.write(buf,size); +} + +struct wkb_buffer +{ + wkb_buffer(std::size_t size) + : size_(size), + data_( (size_!=0) ? static_cast(::operator new (size_)):0) + {} + + ~wkb_buffer() + { + ::operator delete(data_); } - struct wkb_buffer + inline std::size_t size() const { - wkb_buffer(std::size_t size) - : size_(size), - data_( (size_!=0) ? static_cast(::operator new (size_)):0) - {} + return size_; + } - ~wkb_buffer() - { - ::operator delete(data_); - } - - inline std::size_t size() const - { - return size_; - } - - inline char* buffer() - { - return data_; - } - - std::size_t size_; - char * data_; - }; - - typedef boost::shared_ptr wkb_buffer_ptr; - - wkb_buffer_ptr to_point_wkb( geometry_type const& g, wkbByteOrder byte_order) + inline char* buffer() { - assert(g.size() == 1); - std::size_t size = 1 + 4 + 8*2 ; // byteOrder + wkbType + Point - wkb_buffer_ptr wkb = boost::make_shared(size); - boost::interprocess::bufferstream ss(wkb->buffer(), wkb->size(), std::ios::out | std::ios::binary); - ss.write(reinterpret_cast(&byte_order),1); - int type = static_cast(mapnik::Point); - write(ss,type,4,byte_order); - double x = 0; - double y = 0; - g.vertex(0,&x,&y); + return data_; + } + + std::size_t size_; + char * data_; +}; + +typedef boost::shared_ptr wkb_buffer_ptr; + +template +wkb_buffer_ptr to_point_wkb( GeometryType const& g, wkbByteOrder byte_order) +{ + assert(g.size() == 1); + std::size_t size = 1 + 4 + 8*2 ; // byteOrder + wkbType + Point + wkb_buffer_ptr wkb = boost::make_shared(size); + boost::interprocess::bufferstream ss(wkb->buffer(), wkb->size(), std::ios::out | std::ios::binary); + ss.write(reinterpret_cast(&byte_order),1); + int type = static_cast(mapnik::Point); + write(ss,type,4,byte_order); + double x = 0; + double y = 0; + g.vertex(0,&x,&y); + write(ss,x,8,byte_order); + write(ss,y,8,byte_order); + assert(ss.good()); + return wkb; +} + +template +wkb_buffer_ptr to_line_string_wkb( GeometryType const& g, wkbByteOrder byte_order) +{ + unsigned num_points = g.size(); + assert(num_points > 1); + std::size_t size = 1 + 4 + 4 + 8*2*num_points ; // byteOrder + wkbType + numPoints + Point*numPoints + wkb_buffer_ptr wkb = boost::make_shared(size); + boost::interprocess::bufferstream ss(wkb->buffer(), wkb->size(), std::ios::out | std::ios::binary); + ss.write(reinterpret_cast(&byte_order),1); + int type = static_cast(mapnik::LineString); + write(ss,type,4,byte_order); + write(ss,num_points,4,byte_order); + double x = 0; + double y = 0; + for (unsigned i=0; i< num_points; ++i) + { + g.vertex(i,&x,&y); write(ss,x,8,byte_order); write(ss,y,8,byte_order); - assert(ss.good()); - return wkb; } + assert(ss.good()); + return wkb; +} - wkb_buffer_ptr to_line_string_wkb( geometry_type const& g, wkbByteOrder byte_order) +template +wkb_buffer_ptr to_polygon_wkb( GeometryType const& g, wkbByteOrder byte_order) +{ + unsigned num_points = g.size(); + assert(num_points > 1); + + typedef std::pair point_type; + typedef std::vector linear_ring; + boost::ptr_vector rings; + + double x = 0; + double y = 0; + std::size_t size = 1 + 4 + 4 ; // byteOrder + wkbType + numRings + for (unsigned i=0; i< num_points; ++i) { - unsigned num_points = g.size(); - assert(num_points > 1); - std::size_t size = 1 + 4 + 4 + 8*2*num_points ; // byteOrder + wkbType + numPoints + Point*numPoints - wkb_buffer_ptr wkb = boost::make_shared(size); - boost::interprocess::bufferstream ss(wkb->buffer(), wkb->size(), std::ios::out | std::ios::binary); - ss.write(reinterpret_cast(&byte_order),1); - int type = static_cast(mapnik::LineString); - write(ss,type,4,byte_order); - write(ss,num_points,4,byte_order); - double x = 0; - double y = 0; - for (unsigned i=0; i< num_points; ++i) + unsigned command = g.vertex(i,&x,&y); + if (command == SEG_MOVETO) { - g.vertex(i,&x,&y); + rings.push_back(new linear_ring); // start new loop + size += 4; // num_points + } + rings.back().push_back(std::make_pair(x,y)); + size += 2 * 8; // point + } + unsigned num_rings = rings.size(); + wkb_buffer_ptr wkb = boost::make_shared(size); + boost::interprocess::bufferstream ss(wkb->buffer(), wkb->size(), std::ios::out | std::ios::binary); + + ss.write(reinterpret_cast(&byte_order),1); + int type = static_cast(mapnik::Polygon); + write(ss,type,4,byte_order); + write(ss,num_rings,4,byte_order); + + BOOST_FOREACH ( linear_ring const& ring, rings) + { + unsigned num_points = ring.size(); + write(ss,num_points,4,byte_order); + BOOST_FOREACH ( point_type const& pt, ring) + { + double x = pt.first; + double y = pt.second; write(ss,x,8,byte_order); write(ss,y,8,byte_order); } - assert(ss.good()); - return wkb; } - wkb_buffer_ptr to_polygon_wkb( geometry_type const& g, wkbByteOrder byte_order) + assert(ss.good()); + return wkb; +} + +template +wkb_buffer_ptr to_wkb(GeometryType const& g, wkbByteOrder byte_order ) +{ + wkb_buffer_ptr wkb; + + switch (g.type()) { - unsigned num_points = g.size(); - assert(num_points > 1); + case mapnik::Point: + wkb = to_point_wkb(g, byte_order); + break; + case mapnik::LineString: + wkb = to_line_string_wkb(g, byte_order); + break; + case mapnik::Polygon: + wkb = to_polygon_wkb(g, byte_order); + break; + default: + break; + } + return wkb; +} - typedef std::pair point_type; - typedef std::vector linear_ring; - boost::ptr_vector rings; +wkb_buffer_ptr to_wkb(geometry_container const& paths, wkbByteOrder byte_order ) +{ + if (paths.size() == 1) + { + // single geometry + return to_wkb(paths.front(), byte_order); + } - double x = 0; - double y = 0; - std::size_t size = 1 + 4 + 4 ; // byteOrder + wkbType + numRings - for (unsigned i=0; i< num_points; ++i) + if (paths.size() > 1) + { + // multi geometry or geometry collection + std::vector wkb_cont; + bool collection = false; + int multi_type = 0; + size_t multi_size = 1 + 4 + 4; + geometry_container::const_iterator itr = paths.begin(); + geometry_container::const_iterator end = paths.end(); + for ( ; itr!=end; ++itr) { - unsigned command = g.vertex(i,&x,&y); - if (command == SEG_MOVETO) - { - rings.push_back(new linear_ring); // start new loop - size += 4; // num_points - } - rings.back().push_back(std::make_pair(x,y)); - size += 2 * 8; // point + wkb_buffer_ptr wkb = to_wkb(*itr,byte_order); + multi_size += wkb->size(); + int type = static_cast(itr->type()); + if (multi_type > 0 && multi_type != itr->type()) + collection = true; + multi_type = type; + wkb_cont.push_back(wkb); } - unsigned num_rings = rings.size(); - wkb_buffer_ptr wkb = boost::make_shared(size); - boost::interprocess::bufferstream ss(wkb->buffer(), wkb->size(), std::ios::out | std::ios::binary); + wkb_buffer_ptr multi_wkb = boost::make_shared(multi_size); + boost::interprocess::bufferstream ss(multi_wkb->buffer(), multi_wkb->size(), std::ios::out | std::ios::binary); ss.write(reinterpret_cast(&byte_order),1); - int type = static_cast(mapnik::Polygon); - write(ss,type,4,byte_order); - write(ss,num_rings,4,byte_order); + multi_type = collection ? 7 : multi_type + 3; + write(ss,multi_type, 4, byte_order); + write(ss,paths.size(),4,byte_order); - BOOST_FOREACH ( linear_ring const& ring, rings) + BOOST_FOREACH ( wkb_buffer_ptr const& wkb, wkb_cont) { - unsigned num_points = ring.size(); - write(ss,num_points,4,byte_order); - BOOST_FOREACH ( point_type const& pt, ring) - { - double x = pt.first; - double y = pt.second; - write(ss,x,8,byte_order); - write(ss,y,8,byte_order); - } + ss.write(wkb->buffer(),wkb->size()); } - - assert(ss.good()); - return wkb; + return multi_wkb; } - wkb_buffer_ptr to_wkb(geometry_type const& g, wkbByteOrder byte_order ) - { - wkb_buffer_ptr wkb; - - switch (g.type()) - { - case mapnik::Point: - wkb = to_point_wkb(g, byte_order); - break; - case mapnik::LineString: - wkb = to_line_string_wkb(g, byte_order); - break; - case mapnik::Polygon: - wkb = to_polygon_wkb(g, byte_order); - break; - default: - break; - } - return wkb; - } - - wkb_buffer_ptr to_wkb(geometry_container const& paths, wkbByteOrder byte_order ) - { - if (paths.size() == 1) - { - // single geometry - return to_wkb(paths.front(), byte_order); - } - - if (paths.size() > 1) - { - // multi geometry or geometry collection - std::vector wkb_cont; - bool collection = false; - int multi_type = 0; - size_t multi_size = 1 + 4 + 4; - geometry_container::const_iterator itr = paths.begin(); - geometry_container::const_iterator end = paths.end(); - for ( ; itr!=end; ++itr) - { - wkb_buffer_ptr wkb = to_wkb(*itr,byte_order); - multi_size += wkb->size(); - int type = static_cast(itr->type()); - if (multi_type > 0 && multi_type != itr->type()) - collection = true; - multi_type = type; - wkb_cont.push_back(wkb); - } - - wkb_buffer_ptr multi_wkb = boost::make_shared(multi_size); - boost::interprocess::bufferstream ss(multi_wkb->buffer(), multi_wkb->size(), std::ios::out | std::ios::binary); - ss.write(reinterpret_cast(&byte_order),1); - multi_type = collection ? 7 : multi_type + 3; - write(ss,multi_type, 4, byte_order); - write(ss,paths.size(),4,byte_order); - - BOOST_FOREACH ( wkb_buffer_ptr const& wkb, wkb_cont) - { - ss.write(wkb->buffer(),wkb->size()); - } - return multi_wkb; - } - - return wkb_buffer_ptr(); - } - - }} - + return wkb_buffer_ptr(); +} +}} #endif // MAPNIK_GEOMETRY_TO_WKB_HPP From 10a28145b4215b1b426c69321417766a0edeec3c Mon Sep 17 00:00:00 2001 From: artemp Date: Thu, 4 Oct 2012 12:36:07 +0100 Subject: [PATCH 12/45] + sqlite: load extension --- plugins/input/sqlite/sqlite_connection.hpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/plugins/input/sqlite/sqlite_connection.hpp b/plugins/input/sqlite/sqlite_connection.hpp index 8e604705d..11a8dc2f9 100644 --- a/plugins/input/sqlite/sqlite_connection.hpp +++ b/plugins/input/sqlite/sqlite_connection.hpp @@ -163,6 +163,12 @@ public: return db_; } + bool load_extension(std::string const& ext_path) + { + sqlite3_enable_load_extension(db_, 1); + int result = sqlite3_load_extension(db_, ext_path.c_str(), 0 , 0); + return (result == SQLITE_OK)? true : false; + } private: From 72793fe9b681889bcdd5da4746bf47a19acdf38b Mon Sep 17 00:00:00 2001 From: Dane Springmeyer Date: Thu, 4 Oct 2012 12:03:40 -0700 Subject: [PATCH 13/45] explicitly include deque - thanks @lightmare - should fix gcc compile --- src/agg/process_building_symbolizer.cpp | 3 +++ src/cairo_renderer.cpp | 4 ++++ src/grid/process_building_symbolizer.cpp | 3 +++ 3 files changed, 10 insertions(+) diff --git a/src/agg/process_building_symbolizer.cpp b/src/agg/process_building_symbolizer.cpp index 4c8916df6..6cb43d813 100644 --- a/src/agg/process_building_symbolizer.cpp +++ b/src/agg/process_building_symbolizer.cpp @@ -30,6 +30,9 @@ // boost #include +// stl +#include + // agg #include "agg_basics.h" #include "agg_rendering_buffer.h" diff --git a/src/cairo_renderer.cpp b/src/cairo_renderer.cpp index 8d06129e1..417e41f46 100644 --- a/src/cairo_renderer.cpp +++ b/src/cairo_renderer.cpp @@ -44,6 +44,7 @@ #include #include #include + // cairo #include #include @@ -65,6 +66,9 @@ #include "agg_path_storage.h" #include "agg_ellipse.h" +// stl +#include + namespace mapnik { class cairo_pattern : private boost::noncopyable diff --git a/src/grid/process_building_symbolizer.cpp b/src/grid/process_building_symbolizer.cpp index d89898d37..74ef402f9 100644 --- a/src/grid/process_building_symbolizer.cpp +++ b/src/grid/process_building_symbolizer.cpp @@ -32,6 +32,9 @@ // boost #include +// stl +#include + // agg #include "agg_rasterizer_scanline_aa.h" #include "agg_renderer_scanline.h" From a6129e9a80f403d6ef023dc37f514888358bc6a1 Mon Sep 17 00:00:00 2001 From: Dane Springmeyer Date: Thu, 4 Oct 2012 13:53:58 -0700 Subject: [PATCH 14/45] add premultiply/demultiply methods for mapnik::color - refs #1519 --- include/mapnik/color.hpp | 2 ++ src/color.cpp | 22 ++++++++++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/include/mapnik/color.hpp b/include/mapnik/color.hpp index 6640086f8..ff84ecbfe 100644 --- a/include/mapnik/color.hpp +++ b/include/mapnik/color.hpp @@ -71,6 +71,8 @@ public: std::string to_string() const; std::string to_hex_string() const; + void premultiply(); + void demultiply(); color& operator=(color const& rhs) { diff --git a/src/color.cpp b/src/color.cpp index d2db57384..d22b02d9e 100644 --- a/src/color.cpp +++ b/src/color.cpp @@ -25,6 +25,9 @@ #include #include +// agg +#include "agg_color_rgba.h" + // boost #include @@ -78,5 +81,24 @@ std::string color::to_hex_string() const } } +void color::premultiply() +{ + agg::rgba8 pre_c = agg::rgba8(red_,green_,blue_,alpha_); + pre_c.premultiply(); + red_ = pre_c.r; + green_ = pre_c.g; + blue_ = pre_c.b; +} + +void color::demultiply() +{ + // note: this darkens too much: https://github.com/mapnik/mapnik/issues/1519 + agg::rgba8 pre_c = agg::rgba8(red_,green_,blue_,alpha_); + pre_c.demultiply(); + red_ = pre_c.r; + green_ = pre_c.g; + blue_ = pre_c.b; +} + } From 9b053f493b80e6faa8a2ee43ddd7a5df931fc785 Mon Sep 17 00:00:00 2001 From: Dane Springmeyer Date: Thu, 4 Oct 2012 14:19:36 -0700 Subject: [PATCH 15/45] make src_over the default compositing operation (and an optional kwarg) for im.composite() --- bindings/python/mapnik_image.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bindings/python/mapnik_image.cpp b/bindings/python/mapnik_image.cpp index 375e47326..ca370eb8a 100644 --- a/bindings/python/mapnik_image.cpp +++ b/bindings/python/mapnik_image.cpp @@ -228,7 +228,7 @@ void export_image() .def("composite",&composite, ( arg("self"), arg("image"), - arg("mode"), + arg("mode")=mapnik::src_over, arg("opacity")=1.0f )) .def("premultiply",&image_32::premultiply) From 357e7113123fa164c2d095cee05c89d90bc03574 Mon Sep 17 00:00:00 2001 From: Dane Springmeyer Date: Thu, 4 Oct 2012 14:24:29 -0700 Subject: [PATCH 16/45] -avoid potentially premultiplying colors more than once in agg_renderer::setup - closes #1515 --- src/agg/agg_renderer.cpp | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/src/agg/agg_renderer.cpp b/src/agg/agg_renderer.cpp index 93e866ce0..b7642a7b3 100644 --- a/src/agg/agg_renderer.cpp +++ b/src/agg/agg_renderer.cpp @@ -106,11 +106,24 @@ template void agg_renderer::setup(Map const &m) { boost::optional const& bg = m.background(); - if (bg) pixmap_.set_background(*bg); + if (bg) + { + if (bg->alpha() < 255) + { + mapnik::color bg_color = *bg; + bg_color.premultiply(); + pixmap_.set_background(bg_color); + } + else + { + pixmap_.set_background(*bg); + } + } boost::optional const& image_filename = m.background_image(); if (image_filename) { + // NOTE: marker_cache returns premultiplied image, if needed boost::optional bg_marker = mapnik::marker_cache::instance().find(*image_filename,true); if (bg_marker && (*bg_marker)->is_bitmap()) { @@ -126,17 +139,12 @@ void agg_renderer::setup(Map const &m) { for (unsigned y=0;yput("name",ustr); + mapnik::geometry_type * pt = new mapnik::geometry_type(mapnik::Point); + pt->move_to(128,128); + feature->add_geometry(pt); + mapnik::datasource_ptr memory_ds = boost::make_shared(); + mapnik::memory_datasource *cache = dynamic_cast(memory_ds.get()); + cache->push(feature); + mapnik::Map m(256,256); + mapnik::font_set fontset("fontset"); + // NOTE: this is a valid font, but will fail because none are registered + fontset.add_face_name("DejaVu Sans Book"); + m.insert_fontset("fontset", fontset); + mapnik::layer lyr("layer"); + lyr.set_datasource(memory_ds); + lyr.add_style("style"); + m.addLayer(lyr); + mapnik::feature_type_style the_style; + mapnik::rule the_rule; + mapnik::text_symbolizer text_sym(mapnik::parse_expression("[name]"),10,mapnik::color(0,0,0)); + text_sym.set_fontset(fontset); + the_rule.append(text_sym); + the_style.add_rule(the_rule); + m.insert_style("style",the_style ); + m.zoom_to_box(mapnik::box2d(-256,-256, + 256,256)); + mapnik::image_32 buf(m.width(),m.height()); + mapnik::agg_renderer ren(m,buf); + try { + ren.apply(); + } catch (std::exception const& ex) { + BOOST_TEST_EQ(std::string(ex.what()),std::string("No valid font face could be loaded for font set: 'fontset'")); + } + if (!::boost::detail::test_errors()) { + std::clog << "C++ fontset runtime: \x1b[1;32m✓ \x1b[0m\n"; +#if BOOST_VERSION >= 104600 + ::boost::detail::report_errors_remind().called_report_errors_function = true; +#endif + } else { + return ::boost::report_errors(); + } +} From df501a2fa3e5a80f40e6e11de1fe202a8d64f04a Mon Sep 17 00:00:00 2001 From: Dane Springmeyer Date: Thu, 4 Oct 2012 16:39:00 -0700 Subject: [PATCH 19/45] update tests after #1515 - many are not ideal due to #1519 --- tests/data/images/yellow_half_trans.png | Bin 0 -> 77 bytes tests/python_tests/compositing_test.py | 92 ++++++++++++++---- .../support/mapnik-marker-ellipse-render1.png | Bin 16226 -> 16160 bytes .../support/mapnik-marker-ellipse-render2.png | Bin 14333 -> 14269 bytes tests/python_tests/raster_symbolizer_test.py | 18 +--- tests/python_tests/utilities.py | 20 ++++ 6 files changed, 93 insertions(+), 37 deletions(-) create mode 100644 tests/data/images/yellow_half_trans.png diff --git a/tests/data/images/yellow_half_trans.png b/tests/data/images/yellow_half_trans.png new file mode 100644 index 0000000000000000000000000000000000000000..48d7ae39952d9deeab8bdcf3587efce65e3b97e6 GIT binary patch literal 77 zcmeAS@N?(olHy`uVBq!ia0vp^AT}2V8<6ZZI=>f4iFmp=hDc0J{_%hQ!g&&B3|39p a$HjR1>W{0QTGH2m@(iA?elF{r5}E+AQ5HY| literal 0 HcmV?d00001 diff --git a/tests/python_tests/compositing_test.py b/tests/python_tests/compositing_test.py index a6c048d31..e4874bf69 100644 --- a/tests/python_tests/compositing_test.py +++ b/tests/python_tests/compositing_test.py @@ -2,8 +2,7 @@ from nose.tools import * import os,sys -from utilities import execution_path -from utilities import Todo +from utilities import execution_path, Todo, get_unique_colors, pixel2channels import mapnik def setup(): @@ -18,10 +17,7 @@ def debug_image(image,step=2): for x in range(0,image.width(),step): for y in range(0,image.height(),step): pixel = image.get_pixel(x,y) - alpha = (pixel >> 24) & 0xff - red = pixel & 0xff - green = (pixel >> 8) & 0xff - blue = (pixel >> 16) & 0xff + red,green,blue,alpha = pixel2channels(pixel) print "rgba(%s,%s,%s,%s) at %s,%s" % (red,green,blue,alpha,x,y) # note: it is impossible to know for all pixel colors @@ -33,14 +29,11 @@ def validate_pixels_are_not_premultiplied(image): for x in range(0,image.width(),2): for y in range(0,image.height(),2): pixel = image.get_pixel(x,y) - alpha = (pixel >> 24) & 0xff + red,green,blue,alpha = pixel2channels(pixel) if alpha > 0: transparent = False if alpha < 255: fully_opaque = False - red = pixel & 0xff - green = (pixel >> 8) & 0xff - blue = (pixel >> 16) & 0xff color_max = max(red,green,blue) if color_max > alpha: over_alpha = True @@ -51,12 +44,9 @@ def validate_pixels_are_not_premultiplied2(image): for x in range(0,image.width(),2): for y in range(0,image.height(),2): pixel = image.get_pixel(x,y) - alpha = (pixel >> 24) & 0xff + red,green,blue,alpha = pixel2channels(pixel) #each value of the color channels will never be bigger than that of the alpha channel. if alpha > 0: - red = pixel & 0xff - green = (pixel >> 8) & 0xff - blue = (pixel >> 16) & 0xff if red > 0 and red > alpha: print 'red: %s, a: %s' % (red,alpha) looks_not_multiplied = True @@ -67,12 +57,9 @@ def validate_pixels_are_premultiplied(image): for x in range(0,image.width(),2): for y in range(0,image.height(),2): pixel = image.get_pixel(x,y) - alpha = (pixel >> 24) & 0xff + red,green,blue,alpha = pixel2channels(pixel) if alpha > 0: pixel = image.get_pixel(x,y) - red = pixel & 0xff - green = (pixel >> 8) & 0xff - blue = (pixel >> 16) & 0xff is_valid = ((0 <= red <= alpha) and is_pre(red,alpha)) \ and ((0 <= green <= alpha) and is_pre(green,alpha)) \ and ((0 <= blue <= alpha) and is_pre(blue,alpha)) \ @@ -96,10 +83,10 @@ def test_compare_images(): expected = 'images/composited/' + name + '.png' valid = validate_pixels_are_premultiplied(a) if not valid[0]: - print '%s not validly pre-:\n\t%s pixels (%s)' % (name,len(valid[1]),valid[1][0]) + fails.append('%s not validly premultiplied!:\n\t %s pixels (%s)' % (name,len(valid[1]),valid[1][0])) a.demultiply() if not validate_pixels_are_not_premultiplied(a): - print '%s not validly demultiplied' % (name) + fails.append('%s not validly demultiplied' % (name)) a.save(actual) if not os.path.exists(expected): print 'generating expected test image: %s' % expected @@ -167,6 +154,71 @@ def test_style_level_opacity(): expected_im = mapnik.Image.open(expected) eq_(im.tostring(),expected_im.tostring(), 'failed comparing actual (%s) and expected (%s)' % (actual,'tests/python_tests/'+ expected)) +def test_rounding_and_color_expectations(): + m = mapnik.Map(1,1) + m.background = mapnik.Color('rgba(255,255,255,.4999999)') + im = mapnik.Image(m.width,m.height) + mapnik.render(m,im) + # ugh 252, see: https://github.com/mapnik/mapnik/issues/1519 + eq_(get_unique_colors(im),['rgba(252,252,252,127)']) + m = mapnik.Map(1,1) + m.background = mapnik.Color('rgba(255,255,255,.5)') + im = mapnik.Image(m.width,m.height) + mapnik.render(m,im) + eq_(get_unique_colors(im),['rgba(253,253,253,128)']) + im_file = mapnik.Image.open('../data/images/stripes_pattern.png') + eq_(get_unique_colors(im_file),['rgba(0,0,0,0)', 'rgba(74,74,74,255)']) + # should have no effect + im_file.premultiply() + eq_(get_unique_colors(im_file),['rgba(0,0,0,0)', 'rgba(74,74,74,255)']) + im_file.set_alpha(.5) + # should have effect now that image has transparency + im_file.premultiply() + eq_(get_unique_colors(im_file),['rgba(0,0,0,0)', 'rgba(37,37,37,127)']) + # should restore to original nonpremultiplied colors + im_file.demultiply() + eq_(get_unique_colors(im_file),['rgba(0,0,0,0)', 'rgba(74,74,74,127)']) + + +def test_background_image_and_background_color(): + m = mapnik.Map(8,8) + m.background = mapnik.Color('rgba(255,255,255,.5)') + m.background_image = '../data/images/stripes_pattern.png' + im = mapnik.Image(m.width,m.height) + mapnik.render(m,im) + # note: data loss due to rounding as per https://github.com/mapnik/mapnik/issues/1519 + # means that background will roundtrip to 253 not 255 + #eq_(get_unique_colors(im),['rgba(255,255,255,128)', 'rgba(74,74,74,255)']) + eq_(get_unique_colors(im),['rgba(253,253,253,128)', 'rgba(74,74,74,255)']) + +def test_background_image_with_alpha_and_background_color(): + m = mapnik.Map(10,10) + m.background = mapnik.Color('rgba(255,255,255,.5)') + m.background_image = '../data/images/yellow_half_trans.png' + im = mapnik.Image(m.width,m.height) + mapnik.render(m,im) + eq_(get_unique_colors(im),['rgba(255,255,85,191)']) + +def test_background_image_with_alpha_and_background_color_against_composited_control(): + m = mapnik.Map(10,10) + m.background = mapnik.Color('rgba(255,255,255,.5)') + m.background_image = '../data/images/yellow_half_trans.png' + im = mapnik.Image(m.width,m.height) + mapnik.render(m,im) + # create and composite the expected result + im1 = mapnik.Image(10,10) + im1.background = mapnik.Color('rgba(255,255,255,.5)') + im1.premultiply() + im2 = mapnik.Image(10,10) + im2.background = mapnik.Color('rgba(255,255,0,.5)') + im2.premultiply() + im1.composite(im2) + im1.demultiply() + # compare image rendered (compositing in `agg_renderer::setup`) + # vs image composited via python bindings + raise Todo("looks like we need to investigate PNG rounding when saving") + eq_(get_unique_colors(im),get_unique_colors(im1)) + if __name__ == "__main__": setup() [eval(run)() for run in dir() if 'test_' in run] diff --git a/tests/python_tests/images/support/mapnik-marker-ellipse-render1.png b/tests/python_tests/images/support/mapnik-marker-ellipse-render1.png index 8bd27df2aca52efbc9188f98131f8606f51524a8..b6563ebd11ceadf2f959042618f8bc73b4e1e6e8 100644 GIT binary patch literal 16160 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 Dl(rZK literal 14333 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 O2WZ~cQ!Bq`8}@&n1PgZn diff --git a/tests/python_tests/raster_symbolizer_test.py b/tests/python_tests/raster_symbolizer_test.py index c592dbb8b..21e2b26f3 100644 --- a/tests/python_tests/raster_symbolizer_test.py +++ b/tests/python_tests/raster_symbolizer_test.py @@ -1,7 +1,7 @@ #!/usr/bin/env python from nose.tools import * -from utilities import execution_path, contains_word +from utilities import execution_path, contains_word, get_unique_colors import os, mapnik @@ -103,22 +103,6 @@ def test_load_save_map(): if not 'Could not create datasource' in str(e): raise RuntimeError(str(e)) -def pixel2rgba(pixel): - alpha = (pixel >> 24) & 0xff - red = pixel & 0xff - green = (pixel >> 8) & 0xff - blue = (pixel >> 16) & 0xff - return 'rgba(%s,%s,%s,%s)' % (red,green,blue,alpha) - -def get_unique_colors(im): - pixels = [] - for x in range(im.width()): - for y in range(im.height()): - pixel = im.get_pixel(x,y) - if pixel not in pixels: - pixels.append(pixel) - return map(pixel2rgba,pixels) - def test_raster_with_alpha_blends_correctly_with_background(): WIDTH = 500 HEIGHT = 500 diff --git a/tests/python_tests/utilities.py b/tests/python_tests/utilities.py index b47df7be4..0a48dc0fc 100644 --- a/tests/python_tests/utilities.py +++ b/tests/python_tests/utilities.py @@ -35,3 +35,23 @@ def contains_word(word, bytestring_): assert len(bytestring_)%n == 0, "len(bytestring_) not multiple of len(word)" chunks = [bytestring_[i:i+n] for i in xrange(0, len(bytestring_), n)] return word in chunks + +def pixel2channels(pixel): + alpha = (pixel >> 24) & 0xff + red = pixel & 0xff + green = (pixel >> 8) & 0xff + blue = (pixel >> 16) & 0xff + return red,green,blue,alpha + +def pixel2rgba(pixel): + return 'rgba(%s,%s,%s,%s)' % pixel2channels(pixel) + +def get_unique_colors(im): + pixels = [] + for x in range(im.width()): + for y in range(im.height()): + pixel = im.get_pixel(x,y) + if pixel not in pixels: + pixels.append(pixel) + pixels = sorted(pixels) + return map(pixel2rgba,pixels) From fb10f58357fe6869c671dc20cd8359a6f3cad68f Mon Sep 17 00:00:00 2001 From: Dane Springmeyer Date: Thu, 4 Oct 2012 17:59:34 -0700 Subject: [PATCH 20/45] shuffle color function --- include/mapnik/css_color_grammar.hpp | 34 ++++++++++++++++------------ 1 file changed, 19 insertions(+), 15 deletions(-) diff --git a/include/mapnik/css_color_grammar.hpp b/include/mapnik/css_color_grammar.hpp index e969fa3fe..d1bd30aae 100644 --- a/include/mapnik/css_color_grammar.hpp +++ b/include/mapnik/css_color_grammar.hpp @@ -40,6 +40,25 @@ // stl #include +namespace mapnik { + +// http://www.w3.org/TR/css3-color/#hsl-color +inline double hue_to_rgb( double m1, double m2, double h) +{ + if (h < 0.0) h = h + 1.0; + else if (h > 1) h = h - 1.0; + + if (h * 6 < 1.0) + return m1 + (m2 - m1) * h * 6.0; + if (h * 2 < 1.0) + return m2; + if (h * 3 < 2.0) + return m1 + (m2 - m1)* (2.0/3.0 - h) * 6.0; + return m1; +} + +} // namespace mapnik + // boost #include #if BOOST_VERSION >= 104500 @@ -105,21 +124,6 @@ struct alpha_conv_impl } }; -// http://www.w3.org/TR/css3-color/#hsl-color -inline double hue_to_rgb( double m1, double m2, double h) -{ - if (h < 0.0) h = h + 1.0; - else if (h > 1) h = h - 1.0; - - if (h * 6 < 1.0) - return m1 + (m2 - m1) * h * 6.0; - if (h * 2 < 1.0) - return m2; - if (h * 3 < 2.0) - return m1 + (m2 - m1)* (2.0/3.0 - h) * 6.0; - return m1; -} - struct hsl_conv_impl { template From 7efb37adb757bc7a49bdab93ad2bd0ec34f69285 Mon Sep 17 00:00:00 2001 From: Dane Springmeyer Date: Thu, 4 Oct 2012 17:59:43 -0700 Subject: [PATCH 21/45] formatting --- plugins/input/csv/csv_datasource.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/plugins/input/csv/csv_datasource.cpp b/plugins/input/csv/csv_datasource.cpp index a7490f6ea..1101108ae 100644 --- a/plugins/input/csv/csv_datasource.cpp +++ b/plugins/input/csv/csv_datasource.cpp @@ -247,7 +247,8 @@ void csv_datasource::parse_csv(T & stream, std::string quo = boost::trim_copy(quote); if (quo.empty()) quo = "\""; - MAPNIK_LOG_DEBUG(csv) << "csv_datasource: csv grammer: sep: '" << sep << "' quo: '" << quo << "' esc: '" << esc; + MAPNIK_LOG_DEBUG(csv) << "csv_datasource: csv grammar: sep: '" << sep + << "' quo: '" << quo << "' esc: '" << esc << "'"; boost::escaped_list_separator grammer; try From 8b73d8527fea127285347300dcafb3c86a73d0f0 Mon Sep 17 00:00:00 2001 From: Dane Springmeyer Date: Fri, 5 Oct 2012 13:49:29 -0700 Subject: [PATCH 22/45] ogr.input: continue past null features or geometries rather than aborting rendering --- plugins/input/ogr/ogr_featureset.cpp | 3 +- plugins/input/ogr/ogr_index_featureset.cpp | 146 +++++++++++---------- 2 files changed, 76 insertions(+), 73 deletions(-) diff --git a/plugins/input/ogr/ogr_featureset.cpp b/plugins/input/ogr/ogr_featureset.cpp index e40225776..a35a12ccc 100644 --- a/plugins/input/ogr/ogr_featureset.cpp +++ b/plugins/input/ogr/ogr_featureset.cpp @@ -86,7 +86,7 @@ feature_ptr ogr_featureset::next() { ogr_feature_ptr feat (layer_.GetNextFeature()); - if ((*feat) != NULL) + while ((*feat) != NULL) { // ogr feature ids start at 0, so add one to stay // consistent with other mapnik datasources that start at 1 @@ -101,6 +101,7 @@ feature_ptr ogr_featureset::next() else { MAPNIK_LOG_DEBUG(ogr) << "ogr_featureset: Feature with null geometry=" << (*feat)->GetFID(); + continue; } ++count_; diff --git a/plugins/input/ogr/ogr_index_featureset.cpp b/plugins/input/ogr/ogr_index_featureset.cpp index 5441593f2..fac071b94 100644 --- a/plugins/input/ogr/ogr_index_featureset.cpp +++ b/plugins/input/ogr/ogr_index_featureset.cpp @@ -87,85 +87,87 @@ ogr_index_featureset::~ogr_index_featureset() {} template feature_ptr ogr_index_featureset::next() { - if (itr_ != ids_.end()) + while (itr_ != ids_.end()) { int pos = *itr_++; layer_.SetNextByIndex (pos); ogr_feature_ptr feat (layer_.GetNextFeature()); - if ((*feat) != NULL) + if ((*feat) == NULL) { - // ogr feature ids start at 0, so add one to stay - // consistent with other mapnik datasources that start at 1 - int feature_id = ((*feat)->GetFID() + 1); - feature_ptr feature(feature_factory::create(ctx_,feature_id)); - - OGRGeometry* geom=(*feat)->GetGeometryRef(); - if (geom && !geom->IsEmpty()) - { - ogr_converter::convert_geometry (geom, feature); - } - else - { - MAPNIK_LOG_DEBUG(ogr) << "ogr_index_featureset: Feature with null geometry=" << (*feat)->GetFID(); - } - - int fld_count = layerdef_->GetFieldCount(); - for (int i = 0; i < fld_count; i++) - { - OGRFieldDefn* fld = layerdef_->GetFieldDefn (i); - OGRFieldType type_oid = fld->GetType (); - std::string fld_name = fld->GetNameRef (); - - switch (type_oid) - { - case OFTInteger: - { - feature->put(fld_name,(*feat)->GetFieldAsInteger (i)); - break; - } - - case OFTReal: - { - feature->put(fld_name,(*feat)->GetFieldAsDouble (i)); - break; - } - - case OFTString: - case OFTWideString: // deprecated ! - { - UnicodeString ustr = tr_->transcode((*feat)->GetFieldAsString (i)); - feature->put(fld_name,ustr); - break; - } - - case OFTIntegerList: - case OFTRealList: - case OFTStringList: - case OFTWideStringList: // deprecated ! - { - MAPNIK_LOG_WARN(ogr) << "ogr_index_featureset: Unhandled type_oid=" << type_oid; - break; - } - - case OFTBinary: - { - MAPNIK_LOG_WARN(ogr) << "ogr_index_featureset: Unhandled type_oid=" << type_oid; - //feature->put(name,feat->GetFieldAsBinary (i, size)); - break; - } - - case OFTDate: - case OFTTime: - case OFTDateTime: // unhandled ! - { - MAPNIK_LOG_WARN(ogr) << "ogr_index_featureset: Unhandled type_oid=" << type_oid; - break; - } - } - } - return feature; + continue; } + // ogr feature ids start at 0, so add one to stay + // consistent with other mapnik datasources that start at 1 + int feature_id = ((*feat)->GetFID() + 1); + feature_ptr feature(feature_factory::create(ctx_,feature_id)); + + OGRGeometry* geom=(*feat)->GetGeometryRef(); + if (geom && !geom->IsEmpty()) + { + ogr_converter::convert_geometry (geom, feature); + } + else + { + MAPNIK_LOG_DEBUG(ogr) << "ogr_index_featureset: Feature with null geometry=" << (*feat)->GetFID(); + continue; + } + + int fld_count = layerdef_->GetFieldCount(); + for (int i = 0; i < fld_count; i++) + { + OGRFieldDefn* fld = layerdef_->GetFieldDefn (i); + OGRFieldType type_oid = fld->GetType (); + std::string fld_name = fld->GetNameRef (); + + switch (type_oid) + { + case OFTInteger: + { + feature->put(fld_name,(*feat)->GetFieldAsInteger (i)); + break; + } + + case OFTReal: + { + feature->put(fld_name,(*feat)->GetFieldAsDouble (i)); + break; + } + + case OFTString: + case OFTWideString: // deprecated ! + { + UnicodeString ustr = tr_->transcode((*feat)->GetFieldAsString (i)); + feature->put(fld_name,ustr); + break; + } + + case OFTIntegerList: + case OFTRealList: + case OFTStringList: + case OFTWideStringList: // deprecated ! + { + MAPNIK_LOG_WARN(ogr) << "ogr_index_featureset: Unhandled type_oid=" << type_oid; + break; + } + + case OFTBinary: + { + MAPNIK_LOG_WARN(ogr) << "ogr_index_featureset: Unhandled type_oid=" << type_oid; + //feature->put(name,feat->GetFieldAsBinary (i, size)); + break; + } + + case OFTDate: + case OFTTime: + case OFTDateTime: // unhandled ! + { + MAPNIK_LOG_WARN(ogr) << "ogr_index_featureset: Unhandled type_oid=" << type_oid; + break; + } + } + } + return feature; } return feature_ptr(); From 65b19680e02b2fdf1c58d1308453eb947c25f8f3 Mon Sep 17 00:00:00 2001 From: Dane Springmeyer Date: Fri, 5 Oct 2012 14:49:12 -0700 Subject: [PATCH 23/45] followup to 69fb17cd3cab66faf2fff1c - make sure to report literal in descriptor --- plugins/input/postgis/postgis_datasource.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/plugins/input/postgis/postgis_datasource.cpp b/plugins/input/postgis/postgis_datasource.cpp index 8a2e56764..280f49673 100644 --- a/plugins/input/postgis/postgis_datasource.cpp +++ b/plugins/input/postgis/postgis_datasource.cpp @@ -389,6 +389,7 @@ void postgis_datasource::bind() const case 1042: // bpchar case 1043: // varchar case 25: // text + case 705: // literal desc_.add_descriptor(attribute_descriptor(fld_name, mapnik::String)); break; default: // should not get here From c5e69022cdd648f04d029b2b9741134c62f49380 Mon Sep 17 00:00:00 2001 From: Hermann Kraus Date: Sat, 6 Oct 2012 00:20:58 +0200 Subject: [PATCH 24/45] Fix wrap_before in python. Closes #1505. --- bindings/python/mapnik/__init__.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bindings/python/mapnik/__init__.py b/bindings/python/mapnik/__init__.py index bba3cb6c5..59970e9af 100644 --- a/bindings/python/mapnik/__init__.py +++ b/bindings/python/mapnik/__init__.py @@ -783,11 +783,11 @@ class _TextSymbolizer(TextSymbolizer,_injector): @property def wrap_before(self): - return self.properties.wrap_before + return self.format.wrap_before @wrap_before.setter def wrap_before(self, wrap_before): - self.properties.wrap_before = wrap_before + self.format.wrap_before = wrap_before @property From c739dc2133de745a7cf85e830f066ac7f2b8e813 Mon Sep 17 00:00:00 2001 From: Hermann Kraus Date: Sat, 6 Oct 2012 00:40:54 +0200 Subject: [PATCH 25/45] Fix reference to old data file. Closes #1513. --- tests/visual_tests/test_python.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/visual_tests/test_python.py b/tests/visual_tests/test_python.py index 9648a8626..00857fbd1 100755 --- a/tests/visual_tests/test_python.py +++ b/tests/visual_tests/test_python.py @@ -71,7 +71,7 @@ m.append_style('Style', style) layer = mapnik.Layer('Layer') -layer.datasource = mapnik.Shapefile(file=os.path.join(dirname,"data/points.shp")) +layer.datasource = mapnik.Osm(file=os.path.join(dirname,"data/points.osm")) layer.styles.append('Style') m.layers.append(layer) From 1449190c4111c6c5b30a9b67899f7fb3bfec2e87 Mon Sep 17 00:00:00 2001 From: Dane Springmeyer Date: Mon, 8 Oct 2012 10:45:03 -0700 Subject: [PATCH 26/45] scons makefile wrapper - also remove config.py when running distclean/reset - closes #1525 and closes #1524 --- Makefile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 58b999acc..8ee5d6595 100755 --- a/Makefile +++ b/Makefile @@ -14,6 +14,7 @@ distclean: if test -e ".sconf_temp/"; then rm -r ".sconf_temp/"; fi if test -e ".sconsign.dblite"; then rm ".sconsign.dblite"; fi if test -e "config.cache"; then rm "config.cache"; fi + if test -e "config.py"; then rm "config.py"; fi reset: distclean @@ -50,4 +51,4 @@ render: nik2img.py $${FILE} /tmp/$$(basename $${FILE}).png; \ done -.PHONY: clean reset uninstall test install demo +.PHONY: install mapnik clean distclean reset uninstall test demo pep8 grind render From baa2880dad9c241bd5f90a713a5acd94bebecf8b Mon Sep 17 00:00:00 2001 From: Dane Springmeyer Date: Tue, 9 Oct 2012 13:47:24 -0700 Subject: [PATCH 27/45] nicer error formatting of ogr layer names --- plugins/input/ogr/ogr_datasource.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/plugins/input/ogr/ogr_datasource.cpp b/plugins/input/ogr/ogr_datasource.cpp index 50fb633e3..1ab493eec 100644 --- a/plugins/input/ogr/ogr_datasource.cpp +++ b/plugins/input/ogr/ogr_datasource.cpp @@ -203,6 +203,7 @@ void ogr_datasource::bind() const unsigned num_layers = dataset_->GetLayerCount(); bool layer_found = false; + std::vector layer_names; for (unsigned i = 0; i < num_layers; ++i ) { OGRLayer* ogr_layer = dataset_->GetLayer(i); @@ -210,7 +211,7 @@ void ogr_datasource::bind() const if (ogr_layer_def != 0) { layer_found = true; - s << " '" << ogr_layer_def->GetName() << "' "; + layer_names.push_back(std::string("'") + ogr_layer_def->GetName() + std::string("'")); } } @@ -218,6 +219,10 @@ void ogr_datasource::bind() const { s << "None (no layers were found in dataset)"; } + else + { + s << boost::algorithm::join(layer_names,", "); + } throw datasource_exception(s.str()); } From 989b9f0301d54865ceca5d118b4913137c30352a Mon Sep 17 00:00:00 2001 From: Dane Springmeyer Date: Wed, 10 Oct 2012 09:26:55 -0700 Subject: [PATCH 28/45] move config.py rather than removing --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 8ee5d6595..c5ae8cc5d 100755 --- a/Makefile +++ b/Makefile @@ -14,7 +14,7 @@ distclean: if test -e ".sconf_temp/"; then rm -r ".sconf_temp/"; fi if test -e ".sconsign.dblite"; then rm ".sconsign.dblite"; fi if test -e "config.cache"; then rm "config.cache"; fi - if test -e "config.py"; then rm "config.py"; fi + if test -e "config.py"; then mv "config.py" "config.py.backup"; fi reset: distclean From bf5ffd04f442b1b14d4366b5bda9a626d4626e37 Mon Sep 17 00:00:00 2001 From: Dane Springmeyer Date: Wed, 10 Oct 2012 09:32:29 -0700 Subject: [PATCH 29/45] move symbolizers typedef out of rule and be explicit about including config.hpp for MAPNIK_DECL - refs #1527 --- include/mapnik/building_symbolizer.hpp | 1 + include/mapnik/debug_symbolizer.hpp | 2 +- include/mapnik/line_pattern_symbolizer.hpp | 2 +- include/mapnik/line_symbolizer.hpp | 1 + include/mapnik/markers_symbolizer.hpp | 1 + include/mapnik/point_symbolizer.hpp | 1 + include/mapnik/polygon_pattern_symbolizer.hpp | 1 + include/mapnik/polygon_symbolizer.hpp | 1 + include/mapnik/raster_symbolizer.hpp | 1 + include/mapnik/rule.hpp | 24 ++++++------------- include/mapnik/shield_symbolizer.hpp | 1 + include/mapnik/symbolizer.hpp | 1 + include/mapnik/text_symbolizer.hpp | 1 + src/rule.cpp | 24 ++++++++++++++----- 14 files changed, 37 insertions(+), 25 deletions(-) diff --git a/include/mapnik/building_symbolizer.hpp b/include/mapnik/building_symbolizer.hpp index ad77d0aeb..25c0c44d6 100644 --- a/include/mapnik/building_symbolizer.hpp +++ b/include/mapnik/building_symbolizer.hpp @@ -27,6 +27,7 @@ #include #include #include +#include // for MAPNIK_DECL namespace mapnik { diff --git a/include/mapnik/debug_symbolizer.hpp b/include/mapnik/debug_symbolizer.hpp index d25c5c701..d566004e1 100644 --- a/include/mapnik/debug_symbolizer.hpp +++ b/include/mapnik/debug_symbolizer.hpp @@ -23,7 +23,7 @@ #ifndef MAPNIK_DEBUG_SYMBOLIZER_HPP #define MAPNIK_DEBUG_SYMBOLIZER_HPP -#include +#include // for MAPNIK_DECL #include namespace mapnik diff --git a/include/mapnik/line_pattern_symbolizer.hpp b/include/mapnik/line_pattern_symbolizer.hpp index 1143c37c2..617970b52 100644 --- a/include/mapnik/line_pattern_symbolizer.hpp +++ b/include/mapnik/line_pattern_symbolizer.hpp @@ -25,7 +25,7 @@ // mapnik #include -//#include +#include // for MAPNIK_DECL namespace mapnik { diff --git a/include/mapnik/line_symbolizer.hpp b/include/mapnik/line_symbolizer.hpp index f0cd81d36..6ac3666b3 100644 --- a/include/mapnik/line_symbolizer.hpp +++ b/include/mapnik/line_symbolizer.hpp @@ -27,6 +27,7 @@ #include #include #include +#include // for MAPNIK_DECL namespace mapnik { diff --git a/include/mapnik/markers_symbolizer.hpp b/include/mapnik/markers_symbolizer.hpp index 1dd832de6..7ad3b1ddd 100644 --- a/include/mapnik/markers_symbolizer.hpp +++ b/include/mapnik/markers_symbolizer.hpp @@ -30,6 +30,7 @@ #include #include #include +#include // for MAPNIK_DECL // boost #include diff --git a/include/mapnik/point_symbolizer.hpp b/include/mapnik/point_symbolizer.hpp index d97876032..f5a006ac0 100644 --- a/include/mapnik/point_symbolizer.hpp +++ b/include/mapnik/point_symbolizer.hpp @@ -26,6 +26,7 @@ // mapnik #include #include +#include // for MAPNIK_DECL namespace mapnik { diff --git a/include/mapnik/polygon_pattern_symbolizer.hpp b/include/mapnik/polygon_pattern_symbolizer.hpp index 3c13d2268..621175aa0 100644 --- a/include/mapnik/polygon_pattern_symbolizer.hpp +++ b/include/mapnik/polygon_pattern_symbolizer.hpp @@ -27,6 +27,7 @@ #include #include #include +#include // for MAPNIK_DECL namespace mapnik { diff --git a/include/mapnik/polygon_symbolizer.hpp b/include/mapnik/polygon_symbolizer.hpp index b88debf9c..aca873d05 100644 --- a/include/mapnik/polygon_symbolizer.hpp +++ b/include/mapnik/polygon_symbolizer.hpp @@ -28,6 +28,7 @@ #include #include #include +#include // for MAPNIK_DECL namespace mapnik { diff --git a/include/mapnik/raster_symbolizer.hpp b/include/mapnik/raster_symbolizer.hpp index 657c3fbd2..0c33638bd 100644 --- a/include/mapnik/raster_symbolizer.hpp +++ b/include/mapnik/raster_symbolizer.hpp @@ -27,6 +27,7 @@ #include #include #include +#include // for MAPNIK_DECL // boost #include diff --git a/include/mapnik/rule.hpp b/include/mapnik/rule.hpp index 2356ddd02..c13c815ce 100644 --- a/include/mapnik/rule.hpp +++ b/include/mapnik/rule.hpp @@ -38,6 +38,7 @@ #include #include #include +#include // for MAPNIK_DECL // boost #include @@ -127,12 +128,11 @@ typedef boost::variant symbolizer; -class rule -{ -public: - typedef std::vector symbolizers; -private: +typedef MAPNIK_DECL std::vector symbolizers; +class MAPNIK_DECL rule +{ +private: std::string name_; double min_scale_; double max_scale_; @@ -158,7 +158,7 @@ public: std::string const& get_name() const; void append(symbolizer const& sym); void remove_at(size_t index); - const symbolizers& get_symbolizers() const; + symbolizers const& get_symbolizers() const; symbolizers::const_iterator begin() const; symbolizers::const_iterator end() const; symbolizers::iterator begin(); @@ -172,17 +172,7 @@ public: bool active(double scale) const; private: - - void swap(rule& rhs) throw() - { - name_=rhs.name_; - min_scale_=rhs.min_scale_; - max_scale_=rhs.max_scale_; - syms_=rhs.syms_; - filter_=rhs.filter_; - else_filter_=rhs.else_filter_; - also_filter_=rhs.also_filter_; - } + void swap(rule& rhs) throw(); }; } diff --git a/include/mapnik/shield_symbolizer.hpp b/include/mapnik/shield_symbolizer.hpp index 85322f48e..75198ab1c 100644 --- a/include/mapnik/shield_symbolizer.hpp +++ b/include/mapnik/shield_symbolizer.hpp @@ -26,6 +26,7 @@ // mapnik #include #include +#include // for MAPNIK_DECL // boost #include diff --git a/include/mapnik/symbolizer.hpp b/include/mapnik/symbolizer.hpp index a4a051a27..4d75dfaae 100644 --- a/include/mapnik/symbolizer.hpp +++ b/include/mapnik/symbolizer.hpp @@ -29,6 +29,7 @@ #include #include #include +#include // for MAPNIK_DECL // boost #include diff --git a/include/mapnik/text_symbolizer.hpp b/include/mapnik/text_symbolizer.hpp index 3e8fb06f1..fbf97cc14 100644 --- a/include/mapnik/text_symbolizer.hpp +++ b/include/mapnik/text_symbolizer.hpp @@ -29,6 +29,7 @@ #include #include #include +#include // for MAPNIK_DECL // boost #include diff --git a/src/rule.cpp b/src/rule.cpp index 1a45501b4..0270aca8e 100644 --- a/src/rule.cpp +++ b/src/rule.cpp @@ -98,7 +98,7 @@ rule::rule(std::string const& name, else_filter_(false), also_filter_(false) {} -rule::rule(const rule& rhs, bool deep_copy) +rule::rule(rule const& rhs, bool deep_copy) : name_(rhs.name_), min_scale_(rhs.min_scale_), max_scale_(rhs.max_scale_), @@ -176,27 +176,27 @@ void rule::remove_at(size_t index) } } -rule::symbolizers const& rule::get_symbolizers() const +symbolizers const& rule::get_symbolizers() const { return syms_; } -rule::symbolizers::const_iterator rule::begin() const +symbolizers::const_iterator rule::begin() const { return syms_.begin(); } -rule::symbolizers::const_iterator rule::end() const +symbolizers::const_iterator rule::end() const { return syms_.end(); } -rule::symbolizers::iterator rule::begin() +symbolizers::iterator rule::begin() { return syms_.begin(); } -rule::symbolizers::iterator rule::end() +symbolizers::iterator rule::end() { return syms_.end(); } @@ -236,4 +236,16 @@ bool rule::active(double scale) const return ( scale >= min_scale_ - 1e-6 && scale < max_scale_ + 1e-6); } +void rule::swap(rule& rhs) throw() +{ + name_=rhs.name_; + min_scale_=rhs.min_scale_; + max_scale_=rhs.max_scale_; + syms_=rhs.syms_; + filter_=rhs.filter_; + else_filter_=rhs.else_filter_; + also_filter_=rhs.also_filter_; +} + + } From 20a317860d06b9148345ceed78785ca4f9808381 Mon Sep 17 00:00:00 2001 From: Dane Springmeyer Date: Wed, 10 Oct 2012 10:02:45 -0700 Subject: [PATCH 30/45] finish moving symbolizers out of rule --- bindings/python/mapnik_rule.cpp | 5 +++-- demo/viewer/styles_model.cpp | 2 +- include/mapnik/agg_renderer.hpp | 2 +- include/mapnik/attribute_collector.hpp | 4 ++-- include/mapnik/cairo_renderer.hpp | 2 +- include/mapnik/feature_style_processor_impl.hpp | 12 ++++++------ include/mapnik/grid/grid_renderer.hpp | 2 +- include/mapnik/svg/output/svg_renderer.hpp | 2 +- src/save_map.cpp | 4 ++-- src/svg/output/process_symbolizers.cpp | 4 ++-- 10 files changed, 20 insertions(+), 19 deletions(-) diff --git a/bindings/python/mapnik_rule.cpp b/bindings/python/mapnik_rule.cpp index 86d5d3522..fd42f46f5 100644 --- a/bindings/python/mapnik_rule.cpp +++ b/bindings/python/mapnik_rule.cpp @@ -32,6 +32,7 @@ #include using mapnik::rule; +using mapnik::symbolizers; using mapnik::expr_node; using mapnik::expression_ptr; using mapnik::Feature; @@ -62,8 +63,8 @@ void export_rule() implicitly_convertible(); implicitly_convertible(); - class_("Symbolizers",init<>("TODO")) - .def(vector_indexing_suite()) + class_("Symbolizers",init<>("TODO")) + .def(vector_indexing_suite()) ; class_("Rule",init<>("default constructor")) diff --git a/demo/viewer/styles_model.cpp b/demo/viewer/styles_model.cpp index 3468de005..931f54566 100644 --- a/demo/viewer/styles_model.cpp +++ b/demo/viewer/styles_model.cpp @@ -323,7 +323,7 @@ StyleModel::StyleModel(boost::shared_ptr map, QObject * parent) for ( ; itr2 != rules.end();++itr2) { node* rule_n = style_n->add_child(new node(rule_node(QString("Rule"),*itr2),style_n)); - mapnik::rule::symbolizers::const_iterator itr3 = (*itr2).begin(); + mapnik::symbolizers::const_iterator itr3 = (*itr2).begin(); for ( ; itr3 !=itr2->end();++itr3) { rule_n->add_child(new node(symbolizer_node(*itr3),rule_n)); diff --git a/include/mapnik/agg_renderer.hpp b/include/mapnik/agg_renderer.hpp index 9ace3429a..a43f3bcd4 100644 --- a/include/mapnik/agg_renderer.hpp +++ b/include/mapnik/agg_renderer.hpp @@ -110,7 +110,7 @@ public: feature_impl & feature, proj_transform const& prj_trans); - inline bool process(rule::symbolizers const& /*syms*/, + inline bool process(symbolizers const& /*syms*/, mapnik::feature_impl & /*feature*/, proj_transform const& /*prj_trans*/) { diff --git a/include/mapnik/attribute_collector.hpp b/include/mapnik/attribute_collector.hpp index 9ad579c5f..b0cf0993c 100644 --- a/include/mapnik/attribute_collector.hpp +++ b/include/mapnik/attribute_collector.hpp @@ -220,8 +220,8 @@ public: template void operator() (RuleType const& r) { - typename RuleType::symbolizers const& symbols = r.get_symbolizers(); - typename RuleType::symbolizers::const_iterator symIter=symbols.begin(); + symbolizers const& symbols = r.get_symbolizers(); + symbolizers::const_iterator symIter=symbols.begin(); symbolizer_attributes s_attr(names_); while (symIter != symbols.end()) { diff --git a/include/mapnik/cairo_renderer.hpp b/include/mapnik/cairo_renderer.hpp index 5adba78da..c4afc20b8 100644 --- a/include/mapnik/cairo_renderer.hpp +++ b/include/mapnik/cairo_renderer.hpp @@ -111,7 +111,7 @@ public: void process(markers_symbolizer const& sym, mapnik::feature_impl & feature, proj_transform const& prj_trans); - inline bool process(rule::symbolizers const& /*syms*/, + inline bool process(symbolizers const& /*syms*/, mapnik::feature_impl & /*feature*/, proj_transform const& /*prj_trans*/) { diff --git a/include/mapnik/feature_style_processor_impl.hpp b/include/mapnik/feature_style_processor_impl.hpp index 7c9d63b19..9451747c5 100644 --- a/include/mapnik/feature_style_processor_impl.hpp +++ b/include/mapnik/feature_style_processor_impl.hpp @@ -398,9 +398,9 @@ void feature_style_processor::apply_to_layer(layer const& lay, Proces ds->type() == datasource::Raster && ds->params().get("filter_factor",0.0) == 0.0) { - rule::symbolizers const& symbols = r.get_symbolizers(); - rule::symbolizers::const_iterator symIter = symbols.begin(); - rule::symbolizers::const_iterator symEnd = symbols.end(); + symbolizers const& symbols = r.get_symbolizers(); + symbolizers::const_iterator symIter = symbols.begin(); + symbolizers::const_iterator symEnd = symbols.end(); while (symIter != symEnd) { // if multiple raster symbolizers, last will be respected @@ -548,7 +548,7 @@ void feature_style_processor::render_style( do_else=false; do_also=true; - rule::symbolizers const& symbols = r->get_symbolizers(); + symbolizers const& symbols = r->get_symbolizers(); // if the underlying renderer is not able to process the complete set of symbolizers, // process one by one. @@ -577,7 +577,7 @@ void feature_style_processor::render_style( p.painted(true); - rule::symbolizers const& symbols = r->get_symbolizers(); + symbolizers const& symbols = r->get_symbolizers(); // if the underlying renderer is not able to process the complete set of symbolizers, // process one by one. if(!p.process(symbols,*feature,prj_trans)) @@ -599,7 +599,7 @@ void feature_style_processor::render_style( p.painted(true); - rule::symbolizers const& symbols = r->get_symbolizers(); + symbolizers const& symbols = r->get_symbolizers(); // if the underlying renderer is not able to process the complete set of symbolizers, // process one by one. if(!p.process(symbols,*feature,prj_trans)) diff --git a/include/mapnik/grid/grid_renderer.hpp b/include/mapnik/grid/grid_renderer.hpp index d8d6af67a..caf3a2e10 100644 --- a/include/mapnik/grid/grid_renderer.hpp +++ b/include/mapnik/grid/grid_renderer.hpp @@ -98,7 +98,7 @@ public: void process(markers_symbolizer const& sym, mapnik::feature_impl & feature, proj_transform const& prj_trans); - inline bool process(rule::symbolizers const& /*syms*/, + inline bool process(symbolizers const& /*syms*/, mapnik::feature_impl & /*feature*/, proj_transform const& /*prj_trans*/) { diff --git a/include/mapnik/svg/output/svg_renderer.hpp b/include/mapnik/svg/output/svg_renderer.hpp index d44034048..4e8f69664 100644 --- a/include/mapnik/svg/output/svg_renderer.hpp +++ b/include/mapnik/svg/output/svg_renderer.hpp @@ -88,7 +88,7 @@ public: * @brief Overload that process the whole set of symbolizers of a rule. * @return true, meaning that this renderer can process multiple symbolizers. */ - bool process(rule::symbolizers const& syms, + bool process(symbolizers const& syms, Feature const& feature, proj_transform const& prj_trans); diff --git a/src/save_map.cpp b/src/save_map.cpp index 55996e471..eae90eedb 100644 --- a/src/save_map.cpp +++ b/src/save_map.cpp @@ -543,8 +543,8 @@ void serialize_rule( ptree & style_node, const rule & r, bool explicit_defaults) max_scale.put_value( r.get_max_scale() ); } - rule::symbolizers::const_iterator begin = r.get_symbolizers().begin(); - rule::symbolizers::const_iterator end = r.get_symbolizers().end(); + symbolizers::const_iterator begin = r.get_symbolizers().begin(); + symbolizers::const_iterator end = r.get_symbolizers().end(); serialize_symbolizer serializer( rule_node, explicit_defaults); std::for_each( begin, end , boost::apply_visitor( serializer )); } diff --git a/src/svg/output/process_symbolizers.cpp b/src/svg/output/process_symbolizers.cpp index 7ee1406ad..3bb16660e 100644 --- a/src/svg/output/process_symbolizers.cpp +++ b/src/svg/output/process_symbolizers.cpp @@ -26,7 +26,7 @@ namespace mapnik { template -bool svg_renderer::process(rule::symbolizers const& syms, +bool svg_renderer::process(symbolizers const& syms, Feature const& feature, proj_transform const& prj_trans) { @@ -60,7 +60,7 @@ bool svg_renderer::process(rule::symbolizers const& syms, return true; }; -template bool svg_renderer >::process(rule::symbolizers const& syms, +template bool svg_renderer >::process(symbolizers const& syms, Feature const& feature, proj_transform const& prj_trans); From a7f2eacd764cb5b9d533852f44f6242ca97638d9 Mon Sep 17 00:00:00 2001 From: Dane Springmeyer Date: Wed, 10 Oct 2012 10:19:24 -0700 Subject: [PATCH 31/45] scons: only depend on libagg if it will be built --- src/build.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/build.py b/src/build.py index 2f7cdadad..6069107e6 100644 --- a/src/build.py +++ b/src/build.py @@ -392,4 +392,5 @@ else: env['create_uninstall_target'](env, target1) env['create_uninstall_target'](env, target) -Depends(mapnik, env.subst('../deps/agg/libagg.a')) +if not env['RUNTIME_LINK'] == 'static': + Depends(mapnik, env.subst('../deps/agg/libagg.a')) From 858252323c99ca1497209c803c89c25a48e0bf62 Mon Sep 17 00:00:00 2001 From: Dane Springmeyer Date: Wed, 10 Oct 2012 10:23:04 -0700 Subject: [PATCH 32/45] only link to agg if needed --- tests/cpp_tests/build.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tests/cpp_tests/build.py b/tests/cpp_tests/build.py index 250233f91..93e7b25ca 100644 --- a/tests/cpp_tests/build.py +++ b/tests/cpp_tests/build.py @@ -20,7 +20,8 @@ for cpp_test in glob.glob('*_test.cpp'): agg_env = Environment(ENV=os.environ) agg_env['CXX'] = env['CXX'] agg_env['CXXFLAGS'] = env['CXXFLAGS'] - agg_env.AppendUnique(LIBS='agg') + if 'agg' in test_env['LIBS']: + agg_env.AppendUnique(LIBS='agg') agg_env.Append(CPPPATH = '#deps/agg/include') agg_env.Append(LIBPATH = '#deps/agg') agg_env['CPPPATH'] = ['#deps/agg/include',env['BOOST_INCLUDES']] From 1f11aeb95a1c7f799e3421ac3bf06c524ca8626e Mon Sep 17 00:00:00 2001 From: Dane Springmeyer Date: Wed, 10 Oct 2012 10:50:56 -0700 Subject: [PATCH 33/45] Revert "move symbolizers typedef out of rule and be explicit about including config.hpp for MAPNIK_DECL - refs #1527" This reverts commit bf5ffd04f442b1b14d4366b5bda9a626d4626e37. --- include/mapnik/building_symbolizer.hpp | 1 - include/mapnik/debug_symbolizer.hpp | 2 +- include/mapnik/line_pattern_symbolizer.hpp | 2 +- include/mapnik/line_symbolizer.hpp | 1 - include/mapnik/markers_symbolizer.hpp | 1 - include/mapnik/point_symbolizer.hpp | 1 - include/mapnik/polygon_pattern_symbolizer.hpp | 1 - include/mapnik/polygon_symbolizer.hpp | 1 - include/mapnik/raster_symbolizer.hpp | 1 - include/mapnik/rule.hpp | 22 ++++++++++++----- include/mapnik/shield_symbolizer.hpp | 1 - include/mapnik/symbolizer.hpp | 1 - include/mapnik/text_symbolizer.hpp | 1 - src/rule.cpp | 24 +++++-------------- 14 files changed, 24 insertions(+), 36 deletions(-) diff --git a/include/mapnik/building_symbolizer.hpp b/include/mapnik/building_symbolizer.hpp index 25c0c44d6..ad77d0aeb 100644 --- a/include/mapnik/building_symbolizer.hpp +++ b/include/mapnik/building_symbolizer.hpp @@ -27,7 +27,6 @@ #include #include #include -#include // for MAPNIK_DECL namespace mapnik { diff --git a/include/mapnik/debug_symbolizer.hpp b/include/mapnik/debug_symbolizer.hpp index d566004e1..d25c5c701 100644 --- a/include/mapnik/debug_symbolizer.hpp +++ b/include/mapnik/debug_symbolizer.hpp @@ -23,7 +23,7 @@ #ifndef MAPNIK_DEBUG_SYMBOLIZER_HPP #define MAPNIK_DEBUG_SYMBOLIZER_HPP -#include // for MAPNIK_DECL +#include #include namespace mapnik diff --git a/include/mapnik/line_pattern_symbolizer.hpp b/include/mapnik/line_pattern_symbolizer.hpp index 617970b52..1143c37c2 100644 --- a/include/mapnik/line_pattern_symbolizer.hpp +++ b/include/mapnik/line_pattern_symbolizer.hpp @@ -25,7 +25,7 @@ // mapnik #include -#include // for MAPNIK_DECL +//#include namespace mapnik { diff --git a/include/mapnik/line_symbolizer.hpp b/include/mapnik/line_symbolizer.hpp index 6ac3666b3..f0cd81d36 100644 --- a/include/mapnik/line_symbolizer.hpp +++ b/include/mapnik/line_symbolizer.hpp @@ -27,7 +27,6 @@ #include #include #include -#include // for MAPNIK_DECL namespace mapnik { diff --git a/include/mapnik/markers_symbolizer.hpp b/include/mapnik/markers_symbolizer.hpp index 7ad3b1ddd..1dd832de6 100644 --- a/include/mapnik/markers_symbolizer.hpp +++ b/include/mapnik/markers_symbolizer.hpp @@ -30,7 +30,6 @@ #include #include #include -#include // for MAPNIK_DECL // boost #include diff --git a/include/mapnik/point_symbolizer.hpp b/include/mapnik/point_symbolizer.hpp index f5a006ac0..d97876032 100644 --- a/include/mapnik/point_symbolizer.hpp +++ b/include/mapnik/point_symbolizer.hpp @@ -26,7 +26,6 @@ // mapnik #include #include -#include // for MAPNIK_DECL namespace mapnik { diff --git a/include/mapnik/polygon_pattern_symbolizer.hpp b/include/mapnik/polygon_pattern_symbolizer.hpp index 621175aa0..3c13d2268 100644 --- a/include/mapnik/polygon_pattern_symbolizer.hpp +++ b/include/mapnik/polygon_pattern_symbolizer.hpp @@ -27,7 +27,6 @@ #include #include #include -#include // for MAPNIK_DECL namespace mapnik { diff --git a/include/mapnik/polygon_symbolizer.hpp b/include/mapnik/polygon_symbolizer.hpp index aca873d05..b88debf9c 100644 --- a/include/mapnik/polygon_symbolizer.hpp +++ b/include/mapnik/polygon_symbolizer.hpp @@ -28,7 +28,6 @@ #include #include #include -#include // for MAPNIK_DECL namespace mapnik { diff --git a/include/mapnik/raster_symbolizer.hpp b/include/mapnik/raster_symbolizer.hpp index 0c33638bd..657c3fbd2 100644 --- a/include/mapnik/raster_symbolizer.hpp +++ b/include/mapnik/raster_symbolizer.hpp @@ -27,7 +27,6 @@ #include #include #include -#include // for MAPNIK_DECL // boost #include diff --git a/include/mapnik/rule.hpp b/include/mapnik/rule.hpp index c13c815ce..2356ddd02 100644 --- a/include/mapnik/rule.hpp +++ b/include/mapnik/rule.hpp @@ -38,7 +38,6 @@ #include #include #include -#include // for MAPNIK_DECL // boost #include @@ -128,11 +127,12 @@ typedef boost::variant symbolizer; -typedef MAPNIK_DECL std::vector symbolizers; - -class MAPNIK_DECL rule +class rule { +public: + typedef std::vector symbolizers; private: + std::string name_; double min_scale_; double max_scale_; @@ -158,7 +158,7 @@ public: std::string const& get_name() const; void append(symbolizer const& sym); void remove_at(size_t index); - symbolizers const& get_symbolizers() const; + const symbolizers& get_symbolizers() const; symbolizers::const_iterator begin() const; symbolizers::const_iterator end() const; symbolizers::iterator begin(); @@ -172,7 +172,17 @@ public: bool active(double scale) const; private: - void swap(rule& rhs) throw(); + + void swap(rule& rhs) throw() + { + name_=rhs.name_; + min_scale_=rhs.min_scale_; + max_scale_=rhs.max_scale_; + syms_=rhs.syms_; + filter_=rhs.filter_; + else_filter_=rhs.else_filter_; + also_filter_=rhs.also_filter_; + } }; } diff --git a/include/mapnik/shield_symbolizer.hpp b/include/mapnik/shield_symbolizer.hpp index 75198ab1c..85322f48e 100644 --- a/include/mapnik/shield_symbolizer.hpp +++ b/include/mapnik/shield_symbolizer.hpp @@ -26,7 +26,6 @@ // mapnik #include #include -#include // for MAPNIK_DECL // boost #include diff --git a/include/mapnik/symbolizer.hpp b/include/mapnik/symbolizer.hpp index 4d75dfaae..a4a051a27 100644 --- a/include/mapnik/symbolizer.hpp +++ b/include/mapnik/symbolizer.hpp @@ -29,7 +29,6 @@ #include #include #include -#include // for MAPNIK_DECL // boost #include diff --git a/include/mapnik/text_symbolizer.hpp b/include/mapnik/text_symbolizer.hpp index fbf97cc14..3e8fb06f1 100644 --- a/include/mapnik/text_symbolizer.hpp +++ b/include/mapnik/text_symbolizer.hpp @@ -29,7 +29,6 @@ #include #include #include -#include // for MAPNIK_DECL // boost #include diff --git a/src/rule.cpp b/src/rule.cpp index 0270aca8e..1a45501b4 100644 --- a/src/rule.cpp +++ b/src/rule.cpp @@ -98,7 +98,7 @@ rule::rule(std::string const& name, else_filter_(false), also_filter_(false) {} -rule::rule(rule const& rhs, bool deep_copy) +rule::rule(const rule& rhs, bool deep_copy) : name_(rhs.name_), min_scale_(rhs.min_scale_), max_scale_(rhs.max_scale_), @@ -176,27 +176,27 @@ void rule::remove_at(size_t index) } } -symbolizers const& rule::get_symbolizers() const +rule::symbolizers const& rule::get_symbolizers() const { return syms_; } -symbolizers::const_iterator rule::begin() const +rule::symbolizers::const_iterator rule::begin() const { return syms_.begin(); } -symbolizers::const_iterator rule::end() const +rule::symbolizers::const_iterator rule::end() const { return syms_.end(); } -symbolizers::iterator rule::begin() +rule::symbolizers::iterator rule::begin() { return syms_.begin(); } -symbolizers::iterator rule::end() +rule::symbolizers::iterator rule::end() { return syms_.end(); } @@ -236,16 +236,4 @@ bool rule::active(double scale) const return ( scale >= min_scale_ - 1e-6 && scale < max_scale_ + 1e-6); } -void rule::swap(rule& rhs) throw() -{ - name_=rhs.name_; - min_scale_=rhs.min_scale_; - max_scale_=rhs.max_scale_; - syms_=rhs.syms_; - filter_=rhs.filter_; - else_filter_=rhs.else_filter_; - also_filter_=rhs.also_filter_; -} - - } From ccda92fed13f7c99b5be7bde19783d8b5db9ce25 Mon Sep 17 00:00:00 2001 From: Dane Springmeyer Date: Wed, 10 Oct 2012 10:51:06 -0700 Subject: [PATCH 34/45] Revert "finish moving symbolizers out of rule" This reverts commit 20a317860d06b9148345ceed78785ca4f9808381. --- bindings/python/mapnik_rule.cpp | 5 ++--- demo/viewer/styles_model.cpp | 2 +- include/mapnik/agg_renderer.hpp | 2 +- include/mapnik/attribute_collector.hpp | 4 ++-- include/mapnik/cairo_renderer.hpp | 2 +- include/mapnik/feature_style_processor_impl.hpp | 12 ++++++------ include/mapnik/grid/grid_renderer.hpp | 2 +- include/mapnik/svg/output/svg_renderer.hpp | 2 +- src/save_map.cpp | 4 ++-- src/svg/output/process_symbolizers.cpp | 4 ++-- 10 files changed, 19 insertions(+), 20 deletions(-) diff --git a/bindings/python/mapnik_rule.cpp b/bindings/python/mapnik_rule.cpp index fd42f46f5..86d5d3522 100644 --- a/bindings/python/mapnik_rule.cpp +++ b/bindings/python/mapnik_rule.cpp @@ -32,7 +32,6 @@ #include using mapnik::rule; -using mapnik::symbolizers; using mapnik::expr_node; using mapnik::expression_ptr; using mapnik::Feature; @@ -63,8 +62,8 @@ void export_rule() implicitly_convertible(); implicitly_convertible(); - class_("Symbolizers",init<>("TODO")) - .def(vector_indexing_suite()) + class_("Symbolizers",init<>("TODO")) + .def(vector_indexing_suite()) ; class_("Rule",init<>("default constructor")) diff --git a/demo/viewer/styles_model.cpp b/demo/viewer/styles_model.cpp index 931f54566..3468de005 100644 --- a/demo/viewer/styles_model.cpp +++ b/demo/viewer/styles_model.cpp @@ -323,7 +323,7 @@ StyleModel::StyleModel(boost::shared_ptr map, QObject * parent) for ( ; itr2 != rules.end();++itr2) { node* rule_n = style_n->add_child(new node(rule_node(QString("Rule"),*itr2),style_n)); - mapnik::symbolizers::const_iterator itr3 = (*itr2).begin(); + mapnik::rule::symbolizers::const_iterator itr3 = (*itr2).begin(); for ( ; itr3 !=itr2->end();++itr3) { rule_n->add_child(new node(symbolizer_node(*itr3),rule_n)); diff --git a/include/mapnik/agg_renderer.hpp b/include/mapnik/agg_renderer.hpp index a43f3bcd4..9ace3429a 100644 --- a/include/mapnik/agg_renderer.hpp +++ b/include/mapnik/agg_renderer.hpp @@ -110,7 +110,7 @@ public: feature_impl & feature, proj_transform const& prj_trans); - inline bool process(symbolizers const& /*syms*/, + inline bool process(rule::symbolizers const& /*syms*/, mapnik::feature_impl & /*feature*/, proj_transform const& /*prj_trans*/) { diff --git a/include/mapnik/attribute_collector.hpp b/include/mapnik/attribute_collector.hpp index b0cf0993c..9ad579c5f 100644 --- a/include/mapnik/attribute_collector.hpp +++ b/include/mapnik/attribute_collector.hpp @@ -220,8 +220,8 @@ public: template void operator() (RuleType const& r) { - symbolizers const& symbols = r.get_symbolizers(); - symbolizers::const_iterator symIter=symbols.begin(); + typename RuleType::symbolizers const& symbols = r.get_symbolizers(); + typename RuleType::symbolizers::const_iterator symIter=symbols.begin(); symbolizer_attributes s_attr(names_); while (symIter != symbols.end()) { diff --git a/include/mapnik/cairo_renderer.hpp b/include/mapnik/cairo_renderer.hpp index c4afc20b8..5adba78da 100644 --- a/include/mapnik/cairo_renderer.hpp +++ b/include/mapnik/cairo_renderer.hpp @@ -111,7 +111,7 @@ public: void process(markers_symbolizer const& sym, mapnik::feature_impl & feature, proj_transform const& prj_trans); - inline bool process(symbolizers const& /*syms*/, + inline bool process(rule::symbolizers const& /*syms*/, mapnik::feature_impl & /*feature*/, proj_transform const& /*prj_trans*/) { diff --git a/include/mapnik/feature_style_processor_impl.hpp b/include/mapnik/feature_style_processor_impl.hpp index 9451747c5..7c9d63b19 100644 --- a/include/mapnik/feature_style_processor_impl.hpp +++ b/include/mapnik/feature_style_processor_impl.hpp @@ -398,9 +398,9 @@ void feature_style_processor::apply_to_layer(layer const& lay, Proces ds->type() == datasource::Raster && ds->params().get("filter_factor",0.0) == 0.0) { - symbolizers const& symbols = r.get_symbolizers(); - symbolizers::const_iterator symIter = symbols.begin(); - symbolizers::const_iterator symEnd = symbols.end(); + rule::symbolizers const& symbols = r.get_symbolizers(); + rule::symbolizers::const_iterator symIter = symbols.begin(); + rule::symbolizers::const_iterator symEnd = symbols.end(); while (symIter != symEnd) { // if multiple raster symbolizers, last will be respected @@ -548,7 +548,7 @@ void feature_style_processor::render_style( do_else=false; do_also=true; - symbolizers const& symbols = r->get_symbolizers(); + rule::symbolizers const& symbols = r->get_symbolizers(); // if the underlying renderer is not able to process the complete set of symbolizers, // process one by one. @@ -577,7 +577,7 @@ void feature_style_processor::render_style( p.painted(true); - symbolizers const& symbols = r->get_symbolizers(); + rule::symbolizers const& symbols = r->get_symbolizers(); // if the underlying renderer is not able to process the complete set of symbolizers, // process one by one. if(!p.process(symbols,*feature,prj_trans)) @@ -599,7 +599,7 @@ void feature_style_processor::render_style( p.painted(true); - symbolizers const& symbols = r->get_symbolizers(); + rule::symbolizers const& symbols = r->get_symbolizers(); // if the underlying renderer is not able to process the complete set of symbolizers, // process one by one. if(!p.process(symbols,*feature,prj_trans)) diff --git a/include/mapnik/grid/grid_renderer.hpp b/include/mapnik/grid/grid_renderer.hpp index caf3a2e10..d8d6af67a 100644 --- a/include/mapnik/grid/grid_renderer.hpp +++ b/include/mapnik/grid/grid_renderer.hpp @@ -98,7 +98,7 @@ public: void process(markers_symbolizer const& sym, mapnik::feature_impl & feature, proj_transform const& prj_trans); - inline bool process(symbolizers const& /*syms*/, + inline bool process(rule::symbolizers const& /*syms*/, mapnik::feature_impl & /*feature*/, proj_transform const& /*prj_trans*/) { diff --git a/include/mapnik/svg/output/svg_renderer.hpp b/include/mapnik/svg/output/svg_renderer.hpp index 4e8f69664..d44034048 100644 --- a/include/mapnik/svg/output/svg_renderer.hpp +++ b/include/mapnik/svg/output/svg_renderer.hpp @@ -88,7 +88,7 @@ public: * @brief Overload that process the whole set of symbolizers of a rule. * @return true, meaning that this renderer can process multiple symbolizers. */ - bool process(symbolizers const& syms, + bool process(rule::symbolizers const& syms, Feature const& feature, proj_transform const& prj_trans); diff --git a/src/save_map.cpp b/src/save_map.cpp index eae90eedb..55996e471 100644 --- a/src/save_map.cpp +++ b/src/save_map.cpp @@ -543,8 +543,8 @@ void serialize_rule( ptree & style_node, const rule & r, bool explicit_defaults) max_scale.put_value( r.get_max_scale() ); } - symbolizers::const_iterator begin = r.get_symbolizers().begin(); - symbolizers::const_iterator end = r.get_symbolizers().end(); + rule::symbolizers::const_iterator begin = r.get_symbolizers().begin(); + rule::symbolizers::const_iterator end = r.get_symbolizers().end(); serialize_symbolizer serializer( rule_node, explicit_defaults); std::for_each( begin, end , boost::apply_visitor( serializer )); } diff --git a/src/svg/output/process_symbolizers.cpp b/src/svg/output/process_symbolizers.cpp index 3bb16660e..7ee1406ad 100644 --- a/src/svg/output/process_symbolizers.cpp +++ b/src/svg/output/process_symbolizers.cpp @@ -26,7 +26,7 @@ namespace mapnik { template -bool svg_renderer::process(symbolizers const& syms, +bool svg_renderer::process(rule::symbolizers const& syms, Feature const& feature, proj_transform const& prj_trans) { @@ -60,7 +60,7 @@ bool svg_renderer::process(symbolizers const& syms, return true; }; -template bool svg_renderer >::process(symbolizers const& syms, +template bool svg_renderer >::process(rule::symbolizers const& syms, Feature const& feature, proj_transform const& prj_trans); From c53b6075eb8a1bc5b1ad466622480a559b3bc9c6 Mon Sep 17 00:00:00 2001 From: Dane Springmeyer Date: Wed, 10 Oct 2012 12:35:02 -0700 Subject: [PATCH 35/45] properly set MAPNIK_DECL for mapnik::rule - closes #1527 --- include/mapnik/rule.hpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/include/mapnik/rule.hpp b/include/mapnik/rule.hpp index 2356ddd02..f13a6dadc 100644 --- a/include/mapnik/rule.hpp +++ b/include/mapnik/rule.hpp @@ -38,6 +38,7 @@ #include #include #include +#include // MAPNIK_DECL // boost #include @@ -127,7 +128,7 @@ typedef boost::variant symbolizer; -class rule +class MAPNIK_DECL rule { public: typedef std::vector symbolizers; From 0cafbc946065f76205edb4275bd23a062b62219a Mon Sep 17 00:00:00 2001 From: Dane Springmeyer Date: Wed, 10 Oct 2012 14:33:56 -0700 Subject: [PATCH 36/45] warn if a Datasource template is not found --- src/load_map.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/load_map.cpp b/src/load_map.cpp index 06d78e94a..c900f2039 100644 --- a/src/load_map.cpp +++ b/src/load_map.cpp @@ -670,7 +670,14 @@ void map_parser::parse_layer(Map & map, xml_node const& node) { std::map::const_iterator base_itr = datasource_templates_.find(*base); if (base_itr!=datasource_templates_.end()) + { params = base_itr->second; + } + else + { + MAPNIK_LOG_ERROR(datasource) << "Datasource template '" << *base + << "' not found for layer '" << name << "'"; + } } xml_node::const_iterator paramIter = child->begin(); From 6947d17b448a4401ca6bd6fb47600dc18682fc01 Mon Sep 17 00:00:00 2001 From: Dane Springmeyer Date: Wed, 10 Oct 2012 14:35:46 -0700 Subject: [PATCH 37/45] add line offset example --- .../data/good_maps/line_symbolizer_offset.xml | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 tests/data/good_maps/line_symbolizer_offset.xml diff --git a/tests/data/good_maps/line_symbolizer_offset.xml b/tests/data/good_maps/line_symbolizer_offset.xml new file mode 100644 index 000000000..c796add74 --- /dev/null +++ b/tests/data/good_maps/line_symbolizer_offset.xml @@ -0,0 +1,18 @@ + + + + style + + csv + + wkt,name + "MULTILINESTRING ((10 10, 20 20, 10 40),(40 40, 30 30, 40 20, 30 10))",line + + + + \ No newline at end of file From 72124a9f8ae4018a1c150b17d751d0ef6682ba33 Mon Sep 17 00:00:00 2001 From: Dane Springmeyer Date: Mon, 15 Oct 2012 08:52:13 -0700 Subject: [PATCH 38/45] apply patch from @lightmare fixing image_filter getter - closes #1534 --- bindings/python/mapnik_style.cpp | 4 +++- tests/python_tests/image_filters_test.py | 15 +++++++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) create mode 100644 tests/python_tests/image_filters_test.py diff --git a/bindings/python/mapnik_style.cpp b/bindings/python/mapnik_style.cpp index ff41c84ea..9b1945fcd 100644 --- a/bindings/python/mapnik_style.cpp +++ b/bindings/python/mapnik_style.cpp @@ -49,14 +49,16 @@ void set_image_filters(feature_type_style & style, std::string const& filters) std::string::const_iterator end = filters.end(); mapnik::image_filter_grammar > filter_grammar; + std::vector new_filters; bool result = boost::spirit::qi::phrase_parse(itr,end, filter_grammar, boost::spirit::qi::ascii::space, - style.image_filters()); + new_filters); if (!result || itr!=end) { throw mapnik::value_error("failed to parse image-filters: '" + std::string(itr,end) + "'"); } + style.image_filters().swap(new_filters); } void export_style() diff --git a/tests/python_tests/image_filters_test.py b/tests/python_tests/image_filters_test.py new file mode 100644 index 000000000..8c8e5ac65 --- /dev/null +++ b/tests/python_tests/image_filters_test.py @@ -0,0 +1,15 @@ +#!/usr/bin/env python + +from nose.tools import * +import os, mapnik + +def test_append(): + s = mapnik.Style() + eq_(s.image_filters,'') + s.image_filters = 'gray' + eq_(s.image_filters,'gray') + s.image_filters = 'sharpen' + eq_(s.image_filters,'sharpen') + +if __name__ == "__main__": + [eval(run)() for run in dir() if 'test_' in run] From 17e97c595ae9b614db2974831ee1c9e57d266387 Mon Sep 17 00:00:00 2001 From: Dane Springmeyer Date: Mon, 15 Oct 2012 17:06:43 -0700 Subject: [PATCH 39/45] add a passing test that works around #1537 by manually setting key_field to string field --- tests/data/csv/long_lat.vrt | 8 ++++++++ tests/python_tests/sqlite_test.py | 26 ++++++++++++++++++++++++++ 2 files changed, 34 insertions(+) create mode 100644 tests/data/csv/long_lat.vrt diff --git a/tests/data/csv/long_lat.vrt b/tests/data/csv/long_lat.vrt new file mode 100644 index 000000000..45513c909 --- /dev/null +++ b/tests/data/csv/long_lat.vrt @@ -0,0 +1,8 @@ + + + long_lat.csv + wkbPoint + WGS84 + + + \ No newline at end of file diff --git a/tests/python_tests/sqlite_test.py b/tests/python_tests/sqlite_test.py index 9a0a148ad..233dd167c 100644 --- a/tests/python_tests/sqlite_test.py +++ b/tests/python_tests/sqlite_test.py @@ -334,6 +334,32 @@ if 'sqlite' in mapnik.DatasourceCache.plugin_names(): pass eq_(feature,None) + # https://github.com/mapnik/mapnik/issues/1537 + # this works because key_field is manually set + def test_db_with_one_text_column(): + # form up an in-memory test db + wkb = '010100000000000000000000000000000000000000' + ds = mapnik.SQLite(file=':memory:', + table='test1', + initdb=''' + create table test1 (alias TEXT,geometry BLOB); + insert into test1 values ("test",x'%s'); + ''' % wkb, + extent='-180,-60,180,60', + use_spatial_index=False, + key_field='alias' + ) + eq_(len(ds.fields()),1) + eq_(ds.fields(),['alias']) + eq_(ds.field_types(),['str']) + fs = ds.all_features() + eq_(len(fs),1) + feat = fs[0] + #eq_(feat.id(),1) + eq_(feat['alias'],'test') + eq_(len(feat.geometries()),1) + eq_(feat.geometries()[0].to_wkt(),'Point(0.0 0.0)') + if __name__ == "__main__": setup() [eval(run)() for run in dir() if 'test_' in run] From 465cf0aa211881e4f1f301d612233a5af0313fcf Mon Sep 17 00:00:00 2001 From: Mickey Rose Date: Tue, 16 Oct 2012 16:30:31 +0200 Subject: [PATCH 40/45] tests: utility function for separate python tests --- tests/python_tests/compositing_test.py | 5 +++-- tests/python_tests/utilities.py | 23 ++++++++++++++++++++++- 2 files changed, 25 insertions(+), 3 deletions(-) diff --git a/tests/python_tests/compositing_test.py b/tests/python_tests/compositing_test.py index e4874bf69..60e821b30 100644 --- a/tests/python_tests/compositing_test.py +++ b/tests/python_tests/compositing_test.py @@ -2,7 +2,8 @@ from nose.tools import * import os,sys -from utilities import execution_path, Todo, get_unique_colors, pixel2channels +from utilities import execution_path, run_tests, Todo +from utilities import get_unique_colors, pixel2channels import mapnik def setup(): @@ -221,4 +222,4 @@ def test_background_image_with_alpha_and_background_color_against_composited_con if __name__ == "__main__": setup() - [eval(run)() for run in dir() if 'test_' in run] + run_tests(eval(x) for x in dir() if x.startswith("test_")) diff --git a/tests/python_tests/utilities.py b/tests/python_tests/utilities.py index 0a48dc0fc..5de51c3b7 100644 --- a/tests/python_tests/utilities.py +++ b/tests/python_tests/utilities.py @@ -1,8 +1,9 @@ #!/usr/bin/env python +# -*- coding: utf-8 -*- from nose.plugins.errorclass import ErrorClass, ErrorClassPlugin -import os, sys, inspect +import os, sys, inspect, traceback def execution_path(filename): return os.path.join(os.path.dirname(sys._getframe(1).f_code.co_filename), filename) @@ -55,3 +56,23 @@ def get_unique_colors(im): pixels.append(pixel) pixels = sorted(pixels) return map(pixel2rgba,pixels) + +def run_tests(iterable): + failed = 0 + for test in iterable: + try: + test() + sys.stderr.write("\x1b[32m✓ \x1b[m" + test.__name__ + "\x1b[m\n") + except: + exc_type, exc_value, exc_tb = sys.exc_info() + failed += 1 + sys.stderr.write("\x1b[31m✘ \x1b[m" + test.__name__ + "\x1b[m\n") + for mline in traceback.format_exception_only(exc_type, exc_value): + for line in mline.rstrip().split("\n"): + sys.stderr.write(" \x1b[31m" + line + "\x1b[m\n") + sys.stderr.write(" Traceback:\n") + for mline in traceback.format_tb(exc_tb): + for line in mline.rstrip().split("\n"): + sys.stderr.write(" " + line + "\n") + sys.stderr.flush() + return failed From 9fdda8cf4a5a7291505c6e50ae824bebf72e5231 Mon Sep 17 00:00:00 2001 From: Mickey Rose Date: Tue, 16 Oct 2012 17:16:45 +0200 Subject: [PATCH 41/45] tests: save side-by-side reference/failed compositing images --- tests/python_tests/compositing_test.py | 4 +++- tests/python_tests/utilities.py | 9 +++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/tests/python_tests/compositing_test.py b/tests/python_tests/compositing_test.py index 60e821b30..cab135fbb 100644 --- a/tests/python_tests/compositing_test.py +++ b/tests/python_tests/compositing_test.py @@ -3,7 +3,7 @@ from nose.tools import * import os,sys from utilities import execution_path, run_tests, Todo -from utilities import get_unique_colors, pixel2channels +from utilities import get_unique_colors, pixel2channels, side_by_side_image import mapnik def setup(): @@ -98,6 +98,8 @@ def test_compare_images(): successes.append(name) else: fails.append('failed comparing actual (%s) and expected(%s)' % (actual,'tests/python_tests/'+ expected)) + fail_im = side_by_side_image(expected_im, a) + fail_im.save('/tmp/mapnik-comp-op-test-' + name + '.fail.png') eq_(len(successes),num_ops,'\n'+'\n'.join(fails)) b.demultiply() # b will be slightly modified by pre and then de multiplication rounding errors diff --git a/tests/python_tests/utilities.py b/tests/python_tests/utilities.py index 5de51c3b7..8bb51a67d 100644 --- a/tests/python_tests/utilities.py +++ b/tests/python_tests/utilities.py @@ -4,6 +4,7 @@ from nose.plugins.errorclass import ErrorClass, ErrorClassPlugin import os, sys, inspect, traceback +import mapnik def execution_path(filename): return os.path.join(os.path.dirname(sys._getframe(1).f_code.co_filename), filename) @@ -76,3 +77,11 @@ def run_tests(iterable): sys.stderr.write(" " + line + "\n") sys.stderr.flush() return failed + +def side_by_side_image(left_im, right_im): + width = left_im.width() + 1 + right_im.width() + height = max(left_im.height(), right_im.height()) + im = mapnik.Image(width, height) + im.blend(0, 0, left_im, 1.0) + im.blend(left_im.width() + 1, 0, right_im, 1.0) + return im From ccbfec8686dd7887bfc800dd0eca485396bfdc82 Mon Sep 17 00:00:00 2001 From: Mickey Rose Date: Tue, 16 Oct 2012 14:27:54 +0200 Subject: [PATCH 42/45] tests: add New Zealand shapefiles from Natural Earth --- tests/data/shp/new_zealand/ne_50m_land.dbf | Bin 0 -> 4018 bytes tests/data/shp/new_zealand/ne_50m_land.prj | 1 + tests/data/shp/new_zealand/ne_50m_land.shp | Bin 0 -> 11484 bytes tests/data/shp/new_zealand/ne_50m_land.shx | Bin 0 -> 156 bytes .../ne_50m_populated_places_simple.dbf | Bin 0 -> 15329 bytes .../ne_50m_populated_places_simple.prj | 1 + .../ne_50m_populated_places_simple.shp | Bin 0 -> 324 bytes .../ne_50m_populated_places_simple.shx | Bin 0 -> 164 bytes 8 files changed, 2 insertions(+) create mode 100644 tests/data/shp/new_zealand/ne_50m_land.dbf create mode 100644 tests/data/shp/new_zealand/ne_50m_land.prj create mode 100644 tests/data/shp/new_zealand/ne_50m_land.shp create mode 100644 tests/data/shp/new_zealand/ne_50m_land.shx create mode 100644 tests/data/shp/new_zealand/ne_50m_populated_places_simple.dbf create mode 100644 tests/data/shp/new_zealand/ne_50m_populated_places_simple.prj create mode 100644 tests/data/shp/new_zealand/ne_50m_populated_places_simple.shp create mode 100644 tests/data/shp/new_zealand/ne_50m_populated_places_simple.shx diff --git a/tests/data/shp/new_zealand/ne_50m_land.dbf b/tests/data/shp/new_zealand/ne_50m_land.dbf new file mode 100644 index 0000000000000000000000000000000000000000..8804b2209ca4890e1321e5c1f9ce7f54074c9064 GIT binary patch literal 4018 zcmZRMXP07UU|?9tpw0xOP(e5YLvV6pPHIqMUN!@RA4rl5RRx1vYGO%gQL1xJB7-wX zN&!vYFEKaO5F!Sa|A$512#-9k0vs6lB<7{Sd83Tc5WpG&qsatou#5_#hQMetK@E>l u9@Y>TO(s}_WmFI~1V)nyYIuzDu!g{BGQk=wqk^a*Fq%wI!()_(6aoO2xA{W= literal 0 HcmV?d00001 diff --git a/tests/data/shp/new_zealand/ne_50m_land.prj b/tests/data/shp/new_zealand/ne_50m_land.prj new file mode 100644 index 000000000..b13a71791 --- /dev/null +++ b/tests/data/shp/new_zealand/ne_50m_land.prj @@ -0,0 +1 @@ +GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.017453292519943295]] \ No newline at end of file diff --git a/tests/data/shp/new_zealand/ne_50m_land.shp b/tests/data/shp/new_zealand/ne_50m_land.shp new file mode 100644 index 0000000000000000000000000000000000000000..0820b202311cf8685b4e31b3eaa849fc5aaf431d GIT binary patch literal 11484 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 Gy!#5O%tN{W literal 0 HcmV?d00001 diff --git a/tests/data/shp/new_zealand/ne_50m_populated_places_simple.prj b/tests/data/shp/new_zealand/ne_50m_populated_places_simple.prj new file mode 100644 index 000000000..b13a71791 --- /dev/null +++ b/tests/data/shp/new_zealand/ne_50m_populated_places_simple.prj @@ -0,0 +1 @@ +GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.017453292519943295]] \ No newline at end of file diff --git a/tests/data/shp/new_zealand/ne_50m_populated_places_simple.shp b/tests/data/shp/new_zealand/ne_50m_populated_places_simple.shp new file mode 100644 index 0000000000000000000000000000000000000000..1df45a697267e6775f86d78814dfad63f725a7a8 GIT binary patch literal 324 zcmZQzQ0HR64i>#&W?*0h%B>0Yd=u@T>L9`N-fPhZw*vu=|K7UGraA2Jzf{(n<8%PK zb`(*NFwO!OT_2IN7~ppEF1f=mLno89CoK2i{3_ zh>&Y_|6dQblLaPcQ84Az%$KPSCq&mR?tcW9V};38I0m1{x{-?PRyLTNPLZLa<`kg5 mv`^2gkGLKHinGJy=Ij!Z*|ZNR$8_x7`a@uMa=_%!!vg@N6j3Mu literal 0 HcmV?d00001 diff --git a/tests/data/shp/new_zealand/ne_50m_populated_places_simple.shx b/tests/data/shp/new_zealand/ne_50m_populated_places_simple.shx new file mode 100644 index 0000000000000000000000000000000000000000..71979b387d87f5988a92161f1d05b6ece833fbd6 GIT binary patch literal 164 zcmZQzQ0HR64uW1VGcYg$<<^9HzKQlvb&z0s@3rWI+kpVbe{bDo(;RmAUn=X(aXNrq eJBp|gkO#8I0ZRKp=@=-T1*I#XbQ_eO0-^!ZfD{-2 literal 0 HcmV?d00001 From 2ee6c1e0e0739ae0f9c8bd7563993e537aad5c66 Mon Sep 17 00:00:00 2001 From: Mickey Rose Date: Tue, 16 Oct 2012 14:32:57 +0200 Subject: [PATCH 43/45] tests: add style_level_comp_op test --- tests/data/good_maps/style_level_comp_op.xml | 49 ++++++++++++++++++ tests/python_tests/compositing_test.py | 34 ++++++++++++ .../images/style-comp-op/clear.png | Bin 0 -> 334 bytes .../images/style-comp-op/color.png | Bin 0 -> 13964 bytes .../images/style-comp-op/color_burn.png | Bin 0 -> 14932 bytes .../images/style-comp-op/color_dodge.png | Bin 0 -> 14528 bytes .../images/style-comp-op/contrast.png | Bin 0 -> 14545 bytes .../images/style-comp-op/darken.png | Bin 0 -> 14367 bytes .../images/style-comp-op/difference.png | Bin 0 -> 14697 bytes .../python_tests/images/style-comp-op/dst.png | Bin 0 -> 11363 bytes .../images/style-comp-op/dst_atop.png | Bin 0 -> 7607 bytes .../images/style-comp-op/dst_in.png | Bin 0 -> 7607 bytes .../images/style-comp-op/dst_out.png | Bin 0 -> 14887 bytes .../images/style-comp-op/dst_over.png | Bin 0 -> 11363 bytes .../images/style-comp-op/exclusion.png | Bin 0 -> 14330 bytes .../images/style-comp-op/grain_extract.png | Bin 0 -> 7261 bytes .../images/style-comp-op/grain_merge.png | Bin 0 -> 14250 bytes .../images/style-comp-op/hard_light.png | Bin 0 -> 14883 bytes .../python_tests/images/style-comp-op/hue.png | Bin 0 -> 13000 bytes .../images/style-comp-op/invert.png | Bin 0 -> 13608 bytes .../images/style-comp-op/lighten.png | Bin 0 -> 12936 bytes .../images/style-comp-op/minus.png | Bin 0 -> 14385 bytes .../images/style-comp-op/multiply.png | Bin 0 -> 14714 bytes .../images/style-comp-op/overlay.png | Bin 0 -> 14394 bytes .../images/style-comp-op/plus.png | Bin 0 -> 14422 bytes .../images/style-comp-op/saturation.png | Bin 0 -> 13787 bytes .../images/style-comp-op/screen.png | Bin 0 -> 14256 bytes .../images/style-comp-op/soft_light.png | Bin 0 -> 14224 bytes .../python_tests/images/style-comp-op/src.png | Bin 0 -> 4972 bytes .../images/style-comp-op/src_atop.png | Bin 0 -> 14799 bytes .../images/style-comp-op/src_in.png | Bin 0 -> 4972 bytes .../images/style-comp-op/src_out.png | Bin 0 -> 334 bytes .../images/style-comp-op/src_over.png | Bin 0 -> 14778 bytes .../images/style-comp-op/value.png | Bin 0 -> 14465 bytes .../python_tests/images/style-comp-op/xor.png | Bin 0 -> 14929 bytes 35 files changed, 83 insertions(+) create mode 100644 tests/data/good_maps/style_level_comp_op.xml create mode 100644 tests/python_tests/images/style-comp-op/clear.png create mode 100644 tests/python_tests/images/style-comp-op/color.png create mode 100644 tests/python_tests/images/style-comp-op/color_burn.png create mode 100644 tests/python_tests/images/style-comp-op/color_dodge.png create mode 100644 tests/python_tests/images/style-comp-op/contrast.png create mode 100644 tests/python_tests/images/style-comp-op/darken.png create mode 100644 tests/python_tests/images/style-comp-op/difference.png create mode 100644 tests/python_tests/images/style-comp-op/dst.png create mode 100644 tests/python_tests/images/style-comp-op/dst_atop.png create mode 100644 tests/python_tests/images/style-comp-op/dst_in.png create mode 100644 tests/python_tests/images/style-comp-op/dst_out.png create mode 100644 tests/python_tests/images/style-comp-op/dst_over.png create mode 100644 tests/python_tests/images/style-comp-op/exclusion.png create mode 100644 tests/python_tests/images/style-comp-op/grain_extract.png create mode 100644 tests/python_tests/images/style-comp-op/grain_merge.png create mode 100644 tests/python_tests/images/style-comp-op/hard_light.png create mode 100644 tests/python_tests/images/style-comp-op/hue.png create mode 100644 tests/python_tests/images/style-comp-op/invert.png create mode 100644 tests/python_tests/images/style-comp-op/lighten.png create mode 100644 tests/python_tests/images/style-comp-op/minus.png create mode 100644 tests/python_tests/images/style-comp-op/multiply.png create mode 100644 tests/python_tests/images/style-comp-op/overlay.png create mode 100644 tests/python_tests/images/style-comp-op/plus.png create mode 100644 tests/python_tests/images/style-comp-op/saturation.png create mode 100644 tests/python_tests/images/style-comp-op/screen.png create mode 100644 tests/python_tests/images/style-comp-op/soft_light.png create mode 100644 tests/python_tests/images/style-comp-op/src.png create mode 100644 tests/python_tests/images/style-comp-op/src_atop.png create mode 100644 tests/python_tests/images/style-comp-op/src_in.png create mode 100644 tests/python_tests/images/style-comp-op/src_out.png create mode 100644 tests/python_tests/images/style-comp-op/src_over.png create mode 100644 tests/python_tests/images/style-comp-op/value.png create mode 100644 tests/python_tests/images/style-comp-op/xor.png diff --git a/tests/data/good_maps/style_level_comp_op.xml b/tests/data/good_maps/style_level_comp_op.xml new file mode 100644 index 000000000..0e9860b95 --- /dev/null +++ b/tests/data/good_maps/style_level_comp_op.xml @@ -0,0 +1,49 @@ + + + + + + + + land + + shape + ../shp/new_zealand/ne_50m_land.shp + + + + + markers + + shape + ../shp/new_zealand/ne_50m_populated_places_simple.shp + + + + diff --git a/tests/python_tests/compositing_test.py b/tests/python_tests/compositing_test.py index cab135fbb..3f7223d01 100644 --- a/tests/python_tests/compositing_test.py +++ b/tests/python_tests/compositing_test.py @@ -21,6 +21,10 @@ def debug_image(image,step=2): red,green,blue,alpha = pixel2channels(pixel) print "rgba(%s,%s,%s,%s) at %s,%s" % (red,green,blue,alpha,x,y) +def replace_style(m, name, style): + m.remove_style(name) + m.append_style(name, style) + # note: it is impossible to know for all pixel colors # we can only detect likely cases of non premultiplied colors def validate_pixels_are_not_premultiplied(image): @@ -145,6 +149,36 @@ def test_pre_multiply_status_of_map2(): mapnik.render(m,im) eq_(validate_pixels_are_not_premultiplied(im),True) +def test_style_level_comp_op(): + m = mapnik.Map(256, 256) + mapnik.load_map(m, '../data/good_maps/style_level_comp_op.xml') + m.zoom_all() + successes = [] + fails = [] + for name in mapnik.CompositeOp.names: + # find_style returns a copy of the style object + style_markers = m.find_style("markers") + style_markers.comp_op = getattr(mapnik.CompositeOp, name) + # replace the original style with the modified one + replace_style(m, "markers", style_markers) + im = mapnik.Image(m.width, m.height) + mapnik.render(m, im) + actual = '/tmp/mapnik-style-comp-op-' + name + '.png' + expected = 'images/style-comp-op/' + name + '.png' + im.save(actual) + if not os.path.exists(expected): + print 'generating expected test image: %s' % expected + im.save(expected) + expected_im = mapnik.Image.open(expected) + # compare them + if im.tostring() == expected_im.tostring(): + successes.append(name) + else: + fails.append('failed comparing actual (%s) and expected(%s)' % (actual,'tests/python_tests/'+ expected)) + fail_im = side_by_side_image(expected_im, im) + fail_im.save('/tmp/mapnik-style-comp-op-' + name + '.fail.png') + eq_(len(fails), 0, '\n'+'\n'.join(fails)) + def test_style_level_opacity(): m = mapnik.Map(512,512) mapnik.load_map(m,'../data/good_maps/style_level_opacity_and_blur.xml') diff --git a/tests/python_tests/images/style-comp-op/clear.png b/tests/python_tests/images/style-comp-op/clear.png new file mode 100644 index 0000000000000000000000000000000000000000..4fe9ab37631ae5bb0fad9069c0d8ec0abca560fe GIT binary patch literal 334 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K5893O0R7}x|G$2RR)5S5QV$R!xh9J2^3%>fl g&E{ADWR74^!OUpGz-aR}m=hETp00i_>zopr00S-(%m4rY literal 0 HcmV?d00001 diff --git a/tests/python_tests/images/style-comp-op/color.png b/tests/python_tests/images/style-comp-op/color.png new file mode 100644 index 0000000000000000000000000000000000000000..5aee202f4ba66601c8c83b7eec63ae8a1ca58ffa GIT binary patch literal 13964 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 IkueVWKNoThmjD0& literal 0 HcmV?d00001 diff --git a/tests/python_tests/images/style-comp-op/color_dodge.png b/tests/python_tests/images/style-comp-op/color_dodge.png new file mode 100644 index 0000000000000000000000000000000000000000..018c2bb17c576065253d828293c904a88e227328 GIT binary patch literal 14528 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 literal 0 HcmV?d00001 diff --git a/tests/python_tests/images/style-comp-op/contrast.png b/tests/python_tests/images/style-comp-op/contrast.png new file mode 100644 index 0000000000000000000000000000000000000000..6dbc72a1e1a68b8d5143e31b892c210a677b0d7d GIT binary patch literal 14545 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

YvGZ~ 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 literal 0 HcmV?d00001 diff --git a/tests/python_tests/images/style-image-filter/blur.png b/tests/python_tests/images/style-image-filter/blur.png new file mode 100644 index 0000000000000000000000000000000000000000..ddae2626303e43c59e364c5dbdd93cc3f91ec9b9 GIT binary patch literal 27043 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 D&psNE literal 0 HcmV?d00001 diff --git a/tests/python_tests/images/style-image-filter/edge-detect.png b/tests/python_tests/images/style-image-filter/edge-detect.png new file mode 100644 index 0000000000000000000000000000000000000000..6a0b96244fed0c1aa21de0cd8fcd4002f9aa4cbb GIT binary patch literal 21615 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 literal 0 HcmV?d00001 diff --git a/tests/python_tests/images/style-image-filter/emboss.png b/tests/python_tests/images/style-image-filter/emboss.png new file mode 100644 index 0000000000000000000000000000000000000000..651511f665454e6aa6bc960d5a307aa0f5cf2061 GIT binary patch literal 24138 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 ejp1;lf&T&vS#jGmcm4qY0000#A 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 literal 0 HcmV?d00001 diff --git a/tests/python_tests/images/style-image-filter/invert.png b/tests/python_tests/images/style-image-filter/invert.png new file mode 100644 index 0000000000000000000000000000000000000000..da392fc6728ab6fb801351286feea23d31828b37 GIT binary patch literal 23299 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 U1Z?9F+W-In07*qoM6N<$f{;>->;M1& literal 0 HcmV?d00001 diff --git a/tests/python_tests/images/style-image-filter/x-gradient.png b/tests/python_tests/images/style-image-filter/x-gradient.png new file mode 100644 index 0000000000000000000000000000000000000000..4803ce142e114dffdd0fb20cc9415b984368ab56 GIT binary patch literal 25900 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

@){!9ArxaPWypI;gR{F_ygs3p%LUg$Z{emRlDz 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 Date: Tue, 16 Oct 2012 18:27:56 +0200 Subject: [PATCH 45/45] tests: fix svg render test output filename --- tests/python_tests/render_test.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/python_tests/render_test.py b/tests/python_tests/render_test.py index 19e547f26..93554e175 100644 --- a/tests/python_tests/render_test.py +++ b/tests/python_tests/render_test.py @@ -140,7 +140,7 @@ def test_render_points(): p = mapnik.Projection(projs[projdescr]) m.zoom_to_box(p.forward(mapnik.Box2d(ul_lonlat,lr_lonlat))) # Render to SVG so that it can be checked how many points are there with string comparison - svg_file = os.path.join(tempfile.gettempdir(),'%s.svg') + svg_file = os.path.join(tempfile.gettempdir(), 'mapnik-render-points-%s.svg' % projdescr) mapnik.render_to_file(m, svg_file) num_points_present = len(ds.all_features()) svg = open(svg_file,'r').read()

NvAmc_Luis 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 DO}Y*m literal 0 HcmV?d00001 diff --git a/tests/python_tests/images/style-comp-op/darken.png b/tests/python_tests/images/style-comp-op/darken.png new file mode 100644 index 0000000000000000000000000000000000000000..737d078f5851fbf96f351e8faf8278243184e2ed GIT binary patch literal 14367 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 literal 0 HcmV?d00001 diff --git a/tests/python_tests/images/style-comp-op/difference.png b/tests/python_tests/images/style-comp-op/difference.png new file mode 100644 index 0000000000000000000000000000000000000000..e7313a4e270cbc891fcaeae06ca27ff976224cdb GIT binary patch literal 14697 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 NsVcrysFE`e{XaFcdf)&6 literal 0 HcmV?d00001 diff --git a/tests/python_tests/images/style-comp-op/dst.png b/tests/python_tests/images/style-comp-op/dst.png new file mode 100644 index 0000000000000000000000000000000000000000..6715d5794efb88a76de9d891a5dd0c0aafe1bf9c GIT binary patch literal 11363 zcmXY1cRZWl_YZ2uti4xDtF|_^_h_{!YL8GOYPYpVV((R2qjsrQ)hb1;5W6Uf+B8N{ zD|ST4@A3Km{z_iYz0W=8o_n5i-sgR8{1bg08Y&Jd5C}x`@PVcg2t)+@B?3{90YBC+ zKRJUyq9PA9)t(0A?c^Ur-^`t!6e8E|EZF&zLxjj8$mbl2o{)y(zi(^D@DE=gofA$As(PTvhs{S6O?{pqpx< z53FOxUa#2y^&%qS72F8g?3CM#!|dtYDj*2s!1TWazT5x@DdVszsf6?JVh5F@JP7wW z>UtDHMZGqSh#rZ4#}LoMqXcK`=%6vK=^oI)o(eG0v4h5hQU*L#sEf?(pt4$HOsb6h zBz%|szox}h9(SOS_leU-C<*#e&w!`1P7jC5c!eY<5TYs0)=ZcA6g_HWsy_W+rz?TE zze0JgA5?>{=JJv7IX?6KrSA!{EU+|R{&w0ol3_Ve1?R(`Gvr57ho!}rE<20HK|A&A zPNagPgqRNsq3{Eaw{%cDsBS%G??FGH7r#t7>pQzZAFBJ|wVkH7kOb;sEY(~ovpE}* zO6ttyftVY^r4r=~px5g1>g3CffK6{k*(c1=%+FKsgyYuZ8i7zj0axQE2Us3mFQt`n zk`sl8TFc1$V-QDBl=bR;<=zv;Q>Z>wLr-=;<#hUHcx!KL)Bf3=Dn f3-cKu4z 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 literal 0 HcmV?d00001 diff --git a/tests/python_tests/images/style-comp-op/dst_atop.png b/tests/python_tests/images/style-comp-op/dst_atop.png new file mode 100644 index 0000000000000000000000000000000000000000..2909c4c2b03dcd9c69bd2e1af54718ee6b5e3c08 GIT binary patch literal 7607 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 AN&o-= literal 0 HcmV?d00001 diff --git a/tests/python_tests/images/style-comp-op/dst_in.png b/tests/python_tests/images/style-comp-op/dst_in.png new file mode 100644 index 0000000000000000000000000000000000000000..2909c4c2b03dcd9c69bd2e1af54718ee6b5e3c08 GIT binary patch literal 7607 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 AN&o-= literal 0 HcmV?d00001 diff --git a/tests/python_tests/images/style-comp-op/dst_out.png b/tests/python_tests/images/style-comp-op/dst_out.png new file mode 100644 index 0000000000000000000000000000000000000000..5c1be3e211e076af74f649706b9aeda63b4abb22 GIT binary patch literal 14887 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 A$^ZZW literal 0 HcmV?d00001 diff --git a/tests/python_tests/images/style-comp-op/dst_over.png b/tests/python_tests/images/style-comp-op/dst_over.png new file mode 100644 index 0000000000000000000000000000000000000000..6715d5794efb88a76de9d891a5dd0c0aafe1bf9c GIT binary patch literal 11363 zcmXY1cRZWl_YZ2uti4xDtF|_^_h_{!YL8GOYPYpVV((R2qjsrQ)hb1;5W6Uf+B8N{ zD|ST4@A3Km{z_iYz0W=8o_n5i-sgR8{1bg08Y&Jd5C}x`@PVcg2t)+@B?3{90YBC+ zKRJUyq9PA9)t(0A?c^Ur-^`t!6e8E|EZF&zLxjj8$mbl2o{)y(zi(^D@DE=gofA$As(PTvhs{S6O?{pqpx< z53FOxUa#2y^&%qS72F8g?3CM#!|dtYDj*2s!1TWazT5x@DdVszsf6?JVh5F@JP7wW z>UtDHMZGqSh#rZ4#}LoMqXcK`=%6vK=^oI)o(eG0v4h5hQU*L#sEf?(pt4$HOsb6h zBz%|szox}h9(SOS_leU-C<*#e&w!`1P7jC5c!eY<5TYs0)=ZcA6g_HWsy_W+rz?TE zze0JgA5?>{=JJv7IX?6KrSA!{EU+|R{&w0ol3_Ve1?R(`Gvr57ho!}rE<20HK|A&A zPNagPgqRNsq3{Eaw{%cDsBS%G??FGH7r#t7>pQzZAFBJ|wVkH7kOb;sEY(~ovpE}* zO6ttyftVY^r4r=~px5g1>g3CffK6{k*(c1=%+FKsgyYuZ8i7zj0axQE2Us3mFQt`n zk`sl8TFc1$V-QDBl=bR;<=zv;Q>Z>wLr-=;<#hUHcx!KL)Bf3=Dn f3-cKu4z zMAVi6eaO8k4H9gM&DK!|;n$07F3FzN6&Z$*+wGG~JeYf=V@~}2APTt$VqR)p=OdUF zpU2K5E{R0N8h?WMsVIABP=gZ-fSQhF2c3_ew!`Bt`6HVhK}%96UpwOS22q2P`B$St zA4=Kpj5plU#4oWwb4wgQJHCaypthJijn1lV0qoqbrT(0|S5yCKHj%puLtKo1;giGt zdkue^y9AZ=1K3*_fo;umDMLXHymb)L%C)NG!2QHPNd^n*upO4|TbR`?;_VTk_P^e8 zxvE2x)!vD{-yh&j+SS$PfG=ModaR-MK-&v|h7l^bGBMfnm+xS{T-cbWS=rny&q=%P|<^(}+ z%r~nBoZV%Y2C4Jc>~y|HuP}Lna1~@7_XG@q=gh!!d#*d;S|c6GRE#Q#kKN_nh`AIa zqOhO6M0ByQ>vML5{V8U1MS|Ma^&$u6Uu>xKarBMYFxU#|MNx-6p&IBJ&gPvu z%Ma&QD|xYsCl$x1bqnPED5>cB5eAHNP~J>t^LP9qfr1?0&sw-PFSP8aUx|6?A`P63 zQM_1{I`WU2is^AanAi~lVu=W;Iut@XjXDCp^MNt5kVXS4DDJ9|DzZj=kZj!L&!Y;3D>|eXCS&B& zIDnURA6B}fno2V48AdtbFr%8oQA+A*CrS@9rEL9N>R7?uO2kx!9;4)8UD$cK@ypNx zH|+_Dk(yV&*8xo<08Qm6kKbA+wGp4A6!=MB$bB1R0L-NP64;SIQ&q#W?OPkBe+#u~}}Jui)5))G^-OiW?nP+NiLD5$eA|9|K6tHS8Soj?e>nokVd(je~26LT2)CE z5#RAv8}&Z3oA#Kya|-KSo3LLjvoT*@@Qs9J{vq67`N$&=|{Zq_n#K87G zCUrP{^K54FbnIyD&Q}gkutWtD;EYj>{dSBmUCYGTRIeI&hpj?ZBJNl|p*qVG*gE%_ zGmkQvIWPT<)-P8UPot)V`MoMWq4QKZ`}AAc=F9ZD;Nh!`gm*PJ2a^fAaT=MjFEbm6 zkiZxFAZ9gP$h@$A&zrTQ-}469a9!tfxo6jyAWEpwF2S?CRJz=hZ1=MUhI?0^rBSJM zYlGiX|Z;D`;xi4VI(szrn%v7 zprRrzhg|Ct3vV}bqVE@Uv`Bv)hFLZbYmIIaqt{r7uHG@Hr~4?d1nH5-j(UqeFi#jA zjCaA}iRKRH8GJG>dGH5J{1;}AZ)rN}ZEv2fGQIPrvqEw=KVMC;J!7{D5L zJ1GOroBOy!VO9>Ss2=m})t~;LhF+dk^59uc{-YDlxas+Kyd(06HE}&k@cz+;}t zJ?N#>Zc#&vcp1J;KOoSA5;&H?^n_fr&Hj%1NLX6uOLkBf@Tgp|qq6#9a$Mm{y26N}&cD$Keg>frZN!`&|#bMTq?YQ)aW z|Gx8{VKY$;#*ycFEg*yHN`^pjvC$@3$LRjA=q^eL^x8$vn_s!NT8^n%dD~IZ!4g=H z2M{q4*Pw(Wa6ULl7YIenqUCX+KU_a>hSeJLZtO~S{eH3!ju0)i(BIMEQ9AqAvOaCH zk<7fwS*tuAzZBy*E-;edePhZ7&Hj2V5W)^B_A7-vZ9Ey3*S#0^TFTL@)yWl1KGzWcu)iV>%a76K6A6Sw=VR@^q^Ln<+K z2n~Wu;Gmg4<>)U*UW=#|D7`A(@^=KTk#`Kc=HRx+6Qitlv4-2-{#5UVtEE+m1w!$o zbcxB5(@waE1s#^1CFw?cZIUpTq3O(Y8e#U(|5MQ6wX4j(dG4t&59iSYY`0@aeA^`? zDSJy!}e!>vI3h!H``bgRRtM)zQS^889m;)PHUYu=mio>2We{MO zVAnhNnO=xP%|PSDBw-JTAFiaF(sc#n(yj^K438N6jDPveI$rBu>wj7ZY<;$a1vE1% zhYQN|E`G@D0n^B~vf$V6op^pV_T=I~=?8RiMFTdbo*@#Hq9ip7&l&Q)a!k@~5lK#5 zonX~_Eg>iBOP)AVtJ8k#>MLV*RJA!Pe_;`qEO)4PxyIE-H~7EjPtI{9eyrT|R|AR& zQR^;7rz$hx#1CqER3LcXV8?Xt@Q2*vn;EORUfMvSC}?et4cRxSZz`o#AdH9;x*bgi zts4OetMY^8;V)Tb^wO~NP&Vi=joXL2Dq-=xYi{rcmDVhpaBO< zQXP6c7%h+?usvHnhI-w)4y~PPH2!b!-50l0L+lrers>kC%UQT&12<{ib7M*OPW1ro z4}Q(?0T9K*SDX88dF>WAtbL5s<_6MEv3E{+!cO<=WN&um6Hcy@0%c;JF??OFkRYL4 zXWE1*jkx@L$<`PUjrx~!mCVZ5#1us#VEn*!n>d#IHz zt-m-luU-Puy?AR7@QuHU2J5?K|ICi+XtIu;R02Z4%V~`A`D`d0RgIerRvxN8!*aYB z4pf{t{XKu7=$PqJ`;bO#3XzI)zAf%62h5iS!a|_L5@wf?cd_r@`XM8nF;&l4*IiLh z15te&XEkEtk_)(%ZY<3{Quw<&79W0kAnMcLqV|xqp|HATfvGunxVWWS>+m~QPVVj1jPjBHj(T2EQ~h@FPFPrB+1 zy_lzT>*LO@eFrj6LkSBa?+EW;oXy?K3w8pxz+})Z5jjB5O~SZae(Nlfap9~hfi;}e*PKZsv0t~KfK&kUV^;} z^m9h8AF+GWCU5!J@Tef74QTZ9ke~m5;lbdkh4l+jBZv- zZ-xYQSeDe#m$GM(Q~YR;F&1FmUvimHA{k@>s^=E5Qmk@zQwYs5HJhZ|hXo#uj&hvUxXd zTGuCNj#$wtfLmW1>bQZfjfux*JgWV13=)d|$sleW%^9AhY^t@#Xxm4KzVgxSsQLQH z6O>kk%Mh!@v#ZRBySOT~zE0yj!(TU+d!t2&{l-%l)=uT&rU7l2Kyk+Z{6w=C<=!Q^ zu>(2V3Hs7J+NB2;s_Prf|E9xy1$kmUc&lD0Pz=5uw3qhhN@7Wg7${R4J^sZg?r9;3 z4F&}n6ow0KvPMs>A%K&dpkkrjdh(2+HRVIsVh^)(N|)XCorUMb;FHef)9OQN23voR zt6X+(tg~`~0T$wugO_&n>!>u}SR3)d7uCJUfuE512MbM-bR|lyHiezN#V@ z^zorEV5MY!k!q%k2y#l+%hW~0z!U1mx~w~x*w29Qy9q0AweUyzF8gkBTU}qio%&P7 zGusO900Lc@MAyS!6(gVQ*I}UA4JDE<(E@qmP2#Qkvj7n=Dto}O>!7+pFQr6)dlY?9MSbf)=Y9{pNoaH~v7KY&3bG^(CFJm+~?$%K%fA)Ezgvujs9X z3@c{il;%e0>}fsK|A5)MO=or)nE0pSg~)XzBxzfFKZ@5=$0#bRO(u=VN8@Kb?S2JM z+p@-5>6{ZAyVP#qBc*_g$M9Dk0D8@CcNT=4#jKe3I-!>=%3gj;F@J|7ezo$J_p#<+ zr3oIaT{4xFgOMxXZ{5z1rY_2T9lE1jg}^7>*({BS^PSU1p5e}}}jA^PE+w~Oa>+wDqL>-c~3hlp6}BF?l45qLwt8DW$AH%$K9 z`AdT%>rq#bFVzJ;qPOpg6?)em()qKyOZF|adUXBcoB7p}cMde{x~wXL&pXtEcW4yE zT5Xt#*j4WrE$@Qw!Y{*K=m`7cBN}N7BgK15uzwlzkRgrV`gUhwA5G?$m0pd$%~13v zw{o0+wZXJ}$mFk)!i_J76TS``CacF@1|MUYHmkX-P;*ZW(}-MT-G7c;+sJOysmco7 zK)?1D18YAsmeXhTY3~zn-oJK}Fppcp1a>uI%o9YQo;w=0$|hWRdksP{1pF4Fb)ASk zjI7J_d}b6oF&rV@h9x16Ao9K8*L^%%x-Wl z!9YyzI)XT;b2)iGB^W)XYnn_NS#UbDZt#3EdqB68ArT7aJlCarrdz}v6iBDJ6sC47 zXg1=`2=pLYtwE9d$WfySb7ZF2s2-)qWP&E5VC4x{etvz=L3qrnjf#yUUCg-BKxd z!5Jh=0=QW&n`E1Kd+E1Zs0&sX9FFw&M-~wi{C0MA?XWp@o(wNTIWua`m>oE*TVJvq z4_D&*%5L|9PX0Nd4ki(JMZYiE+}-xzm+Yt2c27&!yhbDs|0O$zX#FnX$j0RoX2+X1 z?O;Rv*xu4cD{;tY`w?$hq;dH&Y@>Q-a0E-eRLDAtTp65|X_NEq@=B^ubVt0U<%L zNW|Hi%urlDVQ_@HHTe%>|C)GPC{@e!H#{s?gH}*_XX?>|$M~U9(^5GR8@y$eyyDjp zdQOFI=P3%WM^5U1=GMWNRl|!7cal!t#gzWCgs+|8K1u*Jh34Oq#@tt@#n?bFus}N{ z(%12;_$yZ3f+f_hz>=vT7GlKyZR%ZNy~4Xo6%sq0xSTP(=;c^(1~a7XObag_Bw3)s za#6Yd*~GE%Cm<-iW-*7-xp&}-)$3+0Kya z3*_^9Y4OEygRyGozXhB#f1S#ziduT|yiRK$E356Fq2>&M^yb3nPAEM7iFlXzh*HeV zW}|wuulo1bf~8KSPs7rr`Gcq%2&)abqwq1P;A>OkvCI2dIAd>7YV_oY^hPd8w$oI@H!BUpi(n?Y2#xS@&nC^G*B|4R6# zxZ(x-(JcOxF|^U@V2orCH4ghpjpuIHDa!*5g|w&2v$!vmK-3JFXn=swS=9r9W0RWx zDx#M&qYbV8V(u>4+&&aqqWE&@f7J06lh-yK(RMQ&fq%TS5EDYx8FM}qBG2LLA`kcq zF(YEQ;uLS`4%Ggr9x-qmG47eMc^qnMxqEVn=E79V}=t0qXB^_ZqKynR1Xf0^r zbOgB)CvFV>9GnvpUl+#QRXb7{2jJ1gj&r$Z^@dYcvnn z88M}--rK##9>$Sod>BSPElIa=+xn9(15yLpuGH9ho`z}O^-LrBL?pVju;2R%75$l- z+LU_rfsCtfY9ZdB<1)< z-6*hW@$%_Lr^B|DxrM#|#zVC4JkV@NlN5D?Y+Z<@ex4#KJh8LzrD3Iu4y?f56YFi4 zS104M|KX*g@w>zl{oaI0UO~?eVAw}KZ#`B*-rxh?-F`W85<-VYnJ|fF_m#e-jr-Ab zqt!Fs3($%w^Ij|sp-)GTS=?I7-cbc_B}qp)A+b**4T?`UBhdTuE~(EMTQzyNP+1+F zw=XnGB>lYrI7!v_HCt`yZv&{FITQ0w;w9070U+Ah-3%T_(Dj?h{n}ZZy$d~j@R7ar z)b&v3pE2jJnb5wvcv|+b?gy^<=XFWVqBXG5x3Xw~UD4*bp#W#@%%_Lm=`X8r*KGi6 zsMj2sZU69ES*KGh*{#o(L*AHr%6i0&tEWBtXcyDv-0kRBNI&=(*&5M7~1= z)p|4dv#>bl4xeVp2lMk2nlbV>XMwc@LJSb!#FlKD;uOGxR(Nuf1vwN=75uD|8YBz2tKWa5EMkm$Xdpc zcWzk*v|azILB>ZRbono9&k*SBSl0=cfmQ(5O;R_E0v_t&|sAqlmafvh zPtH93AE-|>%TH$NGuZOn$KFvPf&7FbX^_EoNpqc_EyiV^z1w|8f zYk3i11W}~(7Ul=EEE8Qmy*H@e!AJ@>UZJ+~Hh^XWRRk%fzcM(kPHa*!I5j1UmX&63 zSw__TjrYDEX}(Rbq`4HEkc{xbD!1q-oyRQs`%~BYK}@QKqHOi?PQK9m zF{>#~pny44zV}hL9J8?j3Fvz7l4Ao{mp*7 z!_antP1D;!q$dpGmRdD@emBW3lo-p#g&d|MqU$@R^Z>UZY53+309@r&mC!m0oH7|I zx}v6F$rwx$qHTxpQCxocFKX&uF-JehG0JJfX)f3z)wM?Q`OQ?HJC^kcWw9+Ry&g3> zPjOo4W4%vg(jay_@*s{y1S)a5n!-_qF%)Z^}w#n3W~n`=2Rj3ySEU@zAP)F7y>{3qOwAdfW5->68R3FLVc zCsbu+Vwm`gT%%r-xrwv@MmlDJmKE)x3J4EF*efZu)OW?;++SD!8)k&-Ao`0LP+H}# zEZhrGKqs5;`zMQl7Wy9_tT;g}^~S&OZxY+tp@9a-yT19_w8v{4q*#uF(o)L%i7(cA z?zA6vvZ!e_vK9w4e;_K&Y`g;3@Q^H<*%>HLgj#V|6xbl4rt+thjt~lBPimcB64l6E zY~Gwt^ky-rR}funClS?U>q3hIAZE(fv z^NYy0BmgaU8$T{Bsp5K%MaM%2d7RPiwEvAe_OhUBE`&vfHuGQ$E7#2M>9)%kqS7~u znrHdzm4_ik+dbS@P2Ag!=~h4NGHNuNBuxhJ7jyK5OL0A(RW;cv@zA3e_|x}viK{Ix zS)9KEW9-&D85I+&2?LLlrsZRyZyohnJGhZ(uQGW(c}=Np?H3Zw@%jO!LL9{K4vC$i-y^F_^qjww#2!j& z(4x{|`!*Fzg#p3_s;min59{*zZAG3hPQU0JRd2{iVmIS6t2r$e}(q9qWpSmNo zBpw@InB%?wkjNod3ZGrI(ZGL~b$|^tx03qh(GE-Fkz=^cl+!ChSjG%$E@sp^iW6jo zafrV+)04mJ_wb|A(bQ2_e{^CLk}t|xa0t}2;iaN8o>kq1{U>#hyKC?8+ZK(=pwd1O ztZ_wzVOXO^-J{q*;331qe!{_;l7m|EFaaVd|e9vSGjeQ~yupT@x zB<{bmA6(7TA?^CZO9Jjcf9M5nARuJRHL+lI7l?>V*!*lPK1DgPj(6@&6`iP94nL2lL;1a5nqj|M|5tfEi2dJ3!gAh$$%Q# zrm*`mx}GY%XE>H4F#8SbC;!MeFLUSgI)46PLraj2DLsiJsu^l_pC0*(1(XN04Z!Pv>#pRmyDo8-f-vGMjEgl#rI3{VqHo zdy1AI9Shw^C#nI+$PwO}i^qI;T>~oCba|A(`B&A#?M39$fGAqx+F0Awqz$E4&sg?Z z13w^zg}Cd(8$PCZ834;j{<$z5loQXd_@u z9cnhVFq-l4IQ^!{eYIQQ?;k;ZuRcqnN8PE9IK!nF7z4SG;l&!!VBLJX^Gng%R#U1OuL@Ci9`4ABjv-q02y*&-*r|YGKhOiu8jgn;1{;>Ba40Vg7f1 zK=re0ZxJZ73+>6YHhV1V939=qZ3y3E|C{%fRs4pprhgsj(y70)k8Z#Uqh_pNm@(-w zn~(PmWckU(P21&VqFg~Y`weF*B?FQx^VBQW+X3kFugC1oRy1YASTT?wzwzy$^pb3! z(`9@Rw40U>xtA|ZYF2>!YZZQv7uwY#oz6n$)Gh8v@_q!$yokBhi7f$A%-zEb_~X@W zA82pn9g6bD9sdNyYiKO!&R0#?c$8xrNY-kd6SiOjC)U7n&Q&3q2^yF2Qb`gbN!$^s{t%CB^!p^=WX-AlYH?W!bp!zHbIU#4mfLiLph)Kw$at zcTBHv94#wR*GT4}M+MF0Wq<2f+`#Ks*hk8%md- zUWcwdvuLYI!n%fv8EI94-O(-v+6@?GfI%<09`&U^l)YbAi9KfVVB~xTmHqm{8&2Xm z|7&gITfp_0?*>Na?j7(b1o; z9nzErwC0$^{`!+G)!JX~Toyy9m!wFVi5t0*PP^;_AEgv%d01_s*NQ1_ zIDn`jZnX{n@GUTJlN(!2Ip7UwQ_Cz6H zY`-o0PsI$h)@~@wy(`>cv?0G%{9xh-$Xxbo&F8ysU_3-D1`FNr ztp8&b+}l8C>5u_nUWmRUg#-{&NYG?yMlTsHrgjBC{v|s2$8!)8$$dd<#cMa0=sx%& zK7)M8k4qM&d^w9wuu&UR9B|fjC2f8GtHv3@*IR8(nelza?r4ev?$_B5zozoNZ}`1$ z0KsNkkX1Zl*csMdxyc#IQ#*4H#Tm!2iGM`e4sRN%2reg<`oLSrh44w%$3!-R>wohaV^tad1P4R`dL%uFYo6)Md$fIcZ zKA!OVF$G*ggkfgM`6Dq@)qD}7j!~SdFJH){{4Ts$S)R{Rr7C(z|3kfr=;6d{kEYCPD|Y(Q`X)~g5O>^dEdII&gQ*uINEo22II~Nn#)oBIFm*Ad7SJrx*$1|ug-3Au#Exp+VR{H$9tJ(s($}m~w~P2cg;V`1 literal 0 HcmV?d00001 diff --git a/tests/python_tests/images/style-comp-op/exclusion.png b/tests/python_tests/images/style-comp-op/exclusion.png new file mode 100644 index 0000000000000000000000000000000000000000..e4bd80468e253159bafaa17157f877a62c27bb6f GIT binary patch literal 14330 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 literal 0 HcmV?d00001 diff --git a/tests/python_tests/images/style-comp-op/grain_extract.png b/tests/python_tests/images/style-comp-op/grain_extract.png new file mode 100644 index 0000000000000000000000000000000000000000..7deb5d030677ff305338563d7aa050bcff4f780e GIT binary patch literal 7261 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 G?7skOjQimL literal 0 HcmV?d00001 diff --git a/tests/python_tests/images/style-comp-op/grain_merge.png b/tests/python_tests/images/style-comp-op/grain_merge.png new file mode 100644 index 0000000000000000000000000000000000000000..be1e81a78c78b4eaa2d76a6ed4d9dd93fdb3b7b6 GIT binary patch literal 14250 zcmXY2bzD^4)8D0A>F$#5mTnMGKnZD)Zjg?pyFpk$QUnx9Dd`jhY3c56*##E%y*$5n z|6xCubLPyQGx43+*q7R>_&8KJAP@*&T}??B1OfwJ!5}OQ;E#z%xeW*;=B}etMi+X7!)JPKdh^YcSK@LNa%E=t-9u+OUq3>;@I}Yaw&Bm z%a9)Z4n4_Ev_T?)Emuyq7gXXwF4!rPbU|on4pME;4)7(%W1}us_fKa^NH;EuY{eY- zWBLnmEB-r@8dOG8u}D^E??1(aYL~tj7n8a_QXO9s*bH|2oc6;~Ar)+B)6_TEABa zjZ|#$&;JH~wjDk`r2(E=7n`5BIe;XIKRitpXxuw&VQS?=^a0$&b>l;riCdyC2y57) za^$L6iw1|JI3>lj_B@vnE2YIpcV z5KYS^^(VTNf+6X_ho2IY|LtjWOy>78H?H^;Hn~^Vg*_xSReQRixa507Wn1uEaV4{$ zg|eJ-2_){}zIOX=&-&?VV_{XJ>(G~yWUUZ<8WBfw-r`BnV zatHQ0_mL}TV)P|ptAr892H$5>3x=5;)9%{VPRrRy%#qXD#z*0iA10ZoWTB602tkU5 z>)ijHk~hNn?eM~OoE3o=i%+h97N}E{2Ri4aWqC-CVUlp?Sy`{*J&jL82% z=mN^4vg|Dignxe%_`Yx%FF?5VL+JZo`F1NaVBV9^vvUH)6m#)N#QYy25&{=SyHgr8 z+&j4)SY<50)ilK+fw^K+WL0T|v&`RO-E~}g?578Dfjm|Wg&}TF)0mjPeRfqtdma#3 z{GC_~)en$-#j7`Tl96wOoa2jcORjak86y5EPaMW)lUcA8rY13@gELqppP|s2hCx?b z*}4E@-5mL|h`;%QnDe6W%G&Uw5hsZZVgE{V#F?fQYuDHxbr)g=_)Sz%q9)emoq;VN z5&fRN<>7s-!aqs@FC=~x8zRhOn8d2&5a@w3x^h;A%}W^kpIx~Lt(JpbP~Jb@ z7bP{p4zp9x^O3ro^=~^`uXJ=snv}7NsMUAwb+rni5bx{6Z9zya2dV}A`TO%zI~IOd z)DPj*Ak|VQNsbP$onngb=vNnY%4Ll^X*ZokF$`Tl^`viIb+x*5A&x#=EibxSn$-7K zUm;~j7Ue!Ysx5~ofjmXZ1}kBScoWR6UfIO$DPE#%KjtZJwwR+ZBAuHnpCD#uZFfS8 zm$=5^4t=GT1Ag-aeXqg8W`*DY1yH`<42PGD59<^Qd}RJ7=wT#fV8(pu@|SnfaLbt^ zMz2vb`xk{p5E<};2Ncq(7=WeKUvU2dQdC5@%JmZTxZiD$P?u$JoPivRt(YMf3%=$I zM(yd@n=L6``bvNk%o5i;QKps@SBw{zkT!(25f*-~6%Mml`YiMF-`a3EnhS^~bG%rS z;WqjsnRQ_q?h4WFeLUD3~j{Bb~waZrz>~kWyeEE|0_iU+!31TXhB75T?Oue zt9TU+FFzp)?rp~{<3W*H7xEcE2g@T|SpAW@8wrVhVe{`&CAn+&9GQu486C<$DZyDR z<}_$nf25xk4eruoQEcq$TZ32`ZTLGvUQCo*TosCQ=NH7iQoPH!bCSV%6fofyNGDS9 zQk-vLvsD#3xgyEsj1~3yI&55_tJOKaU#EOZzRO@E#xgLYS|9b9wSz8q)Grn04|Ytq z$zG6g6G(&RvTlK9RqTh>nnwpPPn#pHh*jh3U{KnJNik2c2?(dR5|wyPAkc7S68;(uY78 z%Bscgu#4V@y6I|mxm{xL6mf~QAXt!A4Jk^9v}ebD7QA34x5_Xi$kZY_bKFbx=orfC zZbFPE^@=Sv%xdACB=`z2A+WmHr}so5sn`iGlwdMi@oz|Te&QJN`*0UCzk@bC(F6?8 zA+Nj;YhDGE`YKy{=LBlD9ewYOLQ~(_Rk&E~zKopziv|K@uw#!G&H_ad>?#Mcw0niK19vg9A6YCTEG zlC@KYKpn#`OS{qzEv4jQem>^AJOY_`rc$ zL&YrsQJ=-MTuyKCO~8cT&kDs*T#~D3RjW+VN4@8!bpgNLbvyI=S1Q}JLMboD1 zY5QdOpD((?PIbmf$)tEo(@swpp>wQ(_F#f`B{dhG)3sI)hF|;R5xx1L5>1FA<3qN# z3`5&dB#uY8XBu9D&)%b8i=NPn-S>xv}iQX zMv=A|gifm#TnK}_k`O!QwReu-)gOf8LSIO~I8opf%p=3!-7bwo&A<|1Q+0-20DVOBI*cerPz3S#JL z?tq-U!LM=e_Tn~%;x!G?>!I%Po7~39D+Yk|hOM={82%J5pxe^}N8`&!73z#h4!&Kg|bAWVbPs!-LPGJc$D z-}#zzF_bT)N95UT+PGv+cYG-hd8}G0}EoZ+zbEl)-JI%?M!<-kw{3r_X@5d+< zTf!q`o`N=IasKbcFYt{}Lha85bj!fQ?5rEq?BFjaD7sTpZ=QKup|QBZjcmc@bDDPh zj23S+_?-SwCjG-5U}Cpbb6=5HRCft2&WW(UbvqV<{EtbROom}$NZv}i4X8ft&T7rg zlk*-m`vuorbC+(>Wib|r8!V3?@Y(Jc<3`UVqqF$szCF(M?Df5x1SJ;h7 zuXRudHM%nTE~Y>|#qReLgS83pe!5PVUvZJh(Q2FC(`WFjhwkCPm%v{5LScb2Bk_Psw(((5)>NoGyvp?^gZDi;-wB!jxlH~##Z+aC| zE$t3^^wb+niY^d&(iiBWqcov199l1%(vLQfZS~eaUVeo&ao1B0$`$^@#?>kuK3g$t zxnsI))O|EO&d5rvh~XL`H#dC}>0joPAhIMXNFn&cdoo!g^k=O~YH4vA-(~cf80I{p z@F&HptykWB1@M;Yc8ah`YUpb|+_cm#cyqSy+X!;&n<189A{y?+%g(=F7>3G!=x=_O z+yBLSjb^>a9BhPf*~mFGz})0^HR=jqU#Ay$NBYp*pJOL2J&?W(>k!D!og^PFiz<>QkDbG28C2CFcvHjtlI=W8f?}(qSd5H*G2Xra$kMEbXei4|CQ#&ivH2fIoowy6yvZh5bgL&TY?y#KUe%V zLiK`T*1S&7?K&m+EH0>Xqb;jbp2GTZ1E;(<$GRU z+sL5!aH;b!@Cd(M%*b0J%s(=E?ikz}JyJzAV%*!HN|5Vxt6&c6=~ZAMtMS(r6l8DB zIJ_Am=)6up&|S|`dX|e>$aJ9Z0*Y+rfembEO4XkJ9@DS+?G(KU3n^0!PR?xq#v0si zX~XaHp+8KEofE+gXlz47AEw&qg9XyfKPBcfDKmA1+CnvL{J@%p3sqE7t%~$rm~;Eb z{>#7;OC$&DLlFw6mRB<|6eK zf~`~s^S5HW6Bpi+5XNHgbDgaHi>e211Et{MSSj(#;R1aGs!wv&N4PzL=_`-1zn{Uv z9Wf9>g)!L0hIo6<_XS?Z&sSQsR&!4v6|P8$LyQ(i8%u`0>PM@)A5@#%4|Zj1kPFOC z(tb_TUXL*Ts0B`}{cuHcQyr?P<1$5|_(9g(HUT`c{PUfi=o1u=A6V3wL$N(0(-{{n z_Zi)@zXc$5Kl0zl4{D+E-ydnvz(wc{%%A^CB(Jt}4Y|27H*|j|cI!%y60VM+ar1nW z;_Z(oSOW_|2H%|Y0BI*O)%b|p*d~W*jjR3^gXlO80GVQ%eVmP6uA)zI)nrIhMF=_G z@5<-5=2!rBR9UBb8eWR~Ym+#DHNLaOO2Apv(*E2%?@pA z?r=1kT%-MH8qJG@L`LG_F48-;z=CLoP(6KTaH;A)Ql+-Yjm2=i-|c7Cn@MNyLkqXD z;6tsOI(q#74&$c%4&S>NJgQza8glTg^H3oR$2`y@Mip+dMa`jynjV(gW1vuh2w8|} ziHZCZ&2h>8GMrVN1u46lYSb^9;-py(ZQNSQ6KcL`$*P z2!VG(qz>kf?_@K3gDHOYR>rfof;h_ky9L!8<)0KFWa$c%=;@fPeKAr5pWK zh5N*A<@w~{YT!RA_6Ioj30EK#*Vtw~o%y%cSMhWU{hHS;RU0Z6D^uw6-(Z~Ij{z?A z2`E=iWss1Qv(~d;vR>IC=Ql!?qpQ(JLR=|zKF_tF{l?RR*vRy-Uge8?6@+nl9hSP0 zmo9GO?TN10z6Zc%X6?F#%<*>h!+jXRslo2<1a0uB=8_|eSiXjTke@c=$NrZoT*RsC zhMqsJuU{Vs{Rcn>pLW&^ZvV|fPMYO^9<||FbBOJ9>E`G?U}IsN3WK5TJrRk1u)y78 ze=FzO%;EKmY7!C5Dm&#{$06B|!SQeYG0A?$Qs|?6bj~M@)GK1jI*8G&Biz?aV#8Gs zaJf%gOBbeDQSV(NB98X%4&}!`La9c#>@R^>{t*b7axaypf5h?ITj6EmH%E*Me@+HX znl*$#%JokPsbbrh2@$zWJPFi{v7J?6J?vAFKCC^}uv*YBg75qc+?C~L92G%!%OW*B-X?W0OyL3x)XV%) zoa38ntVa$aNA5&|I?R8Aa-P|NT-Ezl|IXC)TdUsfbN1xneI8c?!0gz+heuC{o@v`YJDZy2)c0q-kJVf1gyB>NNYgYme&P}CpW_Z5l8wUt4Kv4N0)jv{+l*c+V)<$OB~$xcJG+SpD-~XsYGUFU)~_f+o?XMO;#C zFbDh#-Q}xT=ug1}v=#ERMmx}XQPFlEJt0NX%(8y#i8&dt_Pd4hiv8T5E> zoLP`REdR!K`7jGeyH&p#`d={MvDIP|e2jY%$i08xIW8biK5OygXrQAh3j@%!H}Vby z36lJo6<}elsZezbTQ3}f-i7;FXp{P*&$OextCE3eX-ly^Vh>F&nDO;d?9gzNkZb%S zuAh*+Hoc+L)8W%=hpSTdjFeGVO1Il>o6Q_E-~u*ej5(wz4zsFqh`!&~Qa+a&w?rN- zDFS7r$C}{}0^OL;r;XN`RFGgRT*KxT%aehUkyCRz;C~wOzkQvbd&J*-c!pDeEq5l;{L;Th;UdGS+UCZzyZ)j%C+q*ueE`dt z#>-7KAy0@!f;{=lmBBX2Qno)B!-^DHYyGm59=rGAX+OQili~dQ>^3jzOWUu{mOu`a ztz)uX|91J@uTNK>w%E(HkS{JRqgPzc3U!WpYs;Vg!!8lIv>qx|eZgq&E7+!YI|J92 zqZK?N4+!Sc;j{j}(BJm`E2)$2JJRpLa&wO*|n*l{fFhR#~E7QNb1#yfC#*VfP zdK%iqNY4Q#f4g5B;o_2MN;JR8WGn0~P7dN~J!b_&s(wSL<#^WM?W^v`+nsxjB zn#BY2&wHt8e*UA78eJj|I64Tr-r4loD}OgI|614`6I(DT|DJZ{sP)ako#aonsdsf3 zaRn)vqG%EliVQzEJ!xiN7Gip4h+fe<%9W`x_Ub}q_1<^m%MCMn1~YYiUM|`8pI;o? zkC-kIs(siIs9ff2|Mf94T#Rn>tlB3odMs8{c+l`7!1x1h#>hJ9Q{>zh*lTaK4VF7O zwsokfy~E+Sx4I(RJn%)0dkv$oKgCWK8y@827}8)Cn0rKESZ`2k-+es=<9BmryXwzh zWthO(q2rCAldjlXRlmx&9(bjM=-s@vI7jF!;WvDH&NU|XR}9o%WMel|f;lky_7|ds zlh_4hJOZwTu}%crgJu2fX;0%m_+8LCv-XBGor#Mpe^6bl`m=Wf_s2*3;W?v-99N6L zP+}<3q5rI;JS=;f96Nw8ddJVkjHcj8>2VoU)Qr8CBpT+YL*5LdA4EVosR8~y4n}0Jf(&isW2^kfa&i0d<3?dx%$+vxYk%=z` z;@Rn;M;5L&l9WE zAaD*4$$8!%4z)Jl+>#~;CT3cJw5C3c%ajKSYBC|>b&y3|`0W_iDNcO?>AYRz6jE?D zL$!yMN<##FoKoc8=3o>a{6^=7#2BT@+*6w;( zwg7ab;JsE4zMLjwt}6i|r<&xPe6q3$b>^g1BLw-Sq{;pET!<5qC`*^c@l-5m!9v)L z6CU6h3qM@Irnvad+E_&s<`SG%jV?iL8R+F2xL77GuGXg$bx#o9A-`;KzFV5eZ!I77 zM_#hRU$|aJ3dvBp6qI^XU#Z>KqLb2HNydPO?fgX?Ga1Y(*CePs(pV$(cMz} z!{GZ@4eiAgoz#3%)b6@9$M5LyYb3=X*)K-_v)O5^7`T=(Hhe=1Y%kC*AX4$<6HWqk zn%wLyv#k`vK?-{@K|FJW9!Cw`St)gXY6zKvzwM+D z%w)SvAC;jM&6BsXf6`HEFLjY@{>{~4PuA-gZJLwWed8U+nSMQpf{Y{Q+HjN7JG<&+ zX!z~R!Dkk}Cg#5VhCLwxVw}M}`&qlG-o7=!VM88;!FA}SCx=g;CQv$FWXr0)?!uSD zWjsWF_L+f}m*}IWU>x6Xb7UB)4Tr52B-#;Zp-opa@81M19FWBpq(Gl)mVrX$lhma6 z>F#IxEV|m{eL1L>3QZX`1VEq8{rQs|G{tUx+3|bhOv$rl6<-4$2v-7mw>l`<@OhwL z2Y*cueRpF+e~sAP`mDdTm_e3oZT<^(6kH;cD1t71FAj(Kvwn9tu zP=d|-MsN8NirQK7keRPVkdbEoiXJ{|yBF^KZf|B@R2rqmkGR|0?O#AY(`3C&P>xP! zn0rHuHcf4#LF}KB9t7qnfwDA?$rL z`;m>GRuy#l?lk&!HbFsLE1XV?OCX*Es-DFPT%w*{0d8K5qzQA)P6A>=_Z&;2$yfrI zsnrJmhf*8%t8(5Y&<`}GhxiagI4<(J@;9inzAXru{s)x90@PghdfP3;j%d-Y$Eznn z16S#%m2ysL?`|B&(-WTNwEUBsJ+u4FbDMu7q=yNpESMz`)-U@|y5VEI@kQ`_SP125 zo(45&-4ql2!5E8za>J|woN&Zk0A^89DooPq-c8#cLXzna4*ErXxO3$Xv3YD^;YYI^ zH($(p<{@`|#JRm+SHQR9z%eQK&renx6p~-hz~>AKb3=7E7Q5yz>VLljOqWL3u>_*FS6e#l4kP?3sFy&(Pt%4&4xjkAZ*=QXoh=5QVtQpeR(k*feCb6hxAol{ zWuzT#E`A_Ibg*6lm4bwIkwe~I33e@yTw@S#iR2G)IRNS!`0IBiO>R3`vhMdcT%5Pm z)#g^Go8Mv=P+N=qWDL5_sFE& z2- zSccx~8;|)F6-d3teY5`?r_ik+Ejq=UDKw>X za~TD&p({ULc75U7ZcX+~Sj!xjaOl`K_F$s&`ugeqAECAS2qBF4_K?br_7H0eG-D~Z za|6Jm;zOoe-}*aCd8QiJqnL9rJS4Mhh|RjnF~h7E`Jk}m1L~3*cu-rfUEQmhF)d;s z0`D9>_bI@**MD`Y&7l{nB8XFP^gBR@=|PmtzZ7k0iVN>kD<<=x&b3qb=LkdB0{$O9 zJMA6M-B4e8swo%z^C1u-Z!%$%OTskxAihf*3vZokd`2WNM6&c(qBW~Gq^dkHj6qC1+4homKkS@4>? zwAjr+_>!D7pJT%G&2|k^q@7~+jbztCJ^3V=i}lKv zybC~bLLU7s$o03KlYRL@qg6J%R>~9flL>ET7?nkKx9DtEs%Z9sRm^JAvL0Koh2ao^ zlR>ZM>a(I2xKX^38Q$jie#TBN|A8k1ai1F4`y1JS;Fc)v4a5GvyW1q1*Ahb-`FWo0 z@_z6YrD2xOC%;?|&S-$A8lX1oHSelsM&(J!g;P;syD|m+GHMCYz7hbkB!`%$#FZ>K|<@@)U zDaYMA^LM0X@=01{$3I+xqiHVqooZ&*IB&dspr){oXK&>{OyELPWtzd|*+7S2ZL(mj z0&be+M;dF_Q%mzVCO>bK85(f)O>L&gz^w|o`TLKYPbJv&G?}g!26tpy0_kH7ZHH`b zbJ6&FP=6v9&mhv(GPo*|z7s>=_{jdAT%uD4$1Rwty|S@F{K|EgKH_x%uYjw062c9& zTz+sMf0>+aZF(#O0N3o|fp-Q+0fG2CdOZ44)75;6QTbo_Ni;HNW}t<*dY!y>+sEPa zfqT`pz*evt;ghsK(Ms^4f&5G{7=xAG^EB_o?z!Iiuf#IY&0)hfJsT=D!P{&!@2Jc& z@;ZZ4%as+H{&kE(rNO7jkxkjuC*w?XizlCYf6!}S!klaxUVj1$>({{(Ba2B^8r$y$ z{BFE=oJT9@mOvS3>T9*I3q_~)pwKs`6T{;rOf0VhB}a}cCmCf)Lq1$wWtG;x%;?Cq zD86Ggo`+ej?BpHv;>%&vwB1nLRGUws(Mj0OWW}A-Lq7Iao#Yj~>@>XkAVV^~GKnSd z&~DE(7FqNKh3M}~XCQHxdkfq>WPs@}UGT!6!=4#X4kysXknVVu?vHi4 z%^^ZAt9~$aOX>C%Qw)U8h%Qwn9TIz3ZN_js=kz6vZ}!eW6>fcx#FuyICa~`puk=+h zPXsImbt!<8>E8SeBeWPIKJ1S~%LrnqK7406#^3@#O zjuvlAe^7$I08cDpQ8aR(a8-{f-`1^r;jAq#zv4x;I~>IIaNt}5afT}0_{3k{r^`w! zk484wrBCIz3<8q_7#Gx#VG~c5f>@PlOTM^}kKs$(&8-<6dqWez@S2+C)Wo8&`mfAR z^R`M! zF4qYQEPDuiF}Bx~yPVom^IjBEy+sce=N0994?6x5gx@=gqQY|3UpV*-idXpdi3=!4 zAr3ag zNfS0FBaJarEtKztEe=x(|ELFAK+QF3hI5{%OFf8%5PVI${HkX*tLU!&IP9G>4S=< z%klF7`heiJev{844xoP;xQ*Jl;M9)xGwmT7$cEZ_coVvBfREC<0ILI=WY8py&=3o~Mc;5`x}cAB3o`lnYC`4Km$7fE{dZ}5#F?8{gR^`x zs#rM;qr?7;?!|{rrR*%#3H2^-?Kaq~m+&NLu;!up8N5g2ZaJBE%Hii@M|G#=@0C_XM67VNz2WOJBg({4lSu$Xsd!W^zw4 z4|{1N?S6$c(6Qw~^o274y3x zvYfPl-*KM|>yCfCIG$?>;MZCyih-AeF^zXa3*b{K(+i-%zyh?JnPnNJDaU#;My{)< z?5W!Tpk<~1O+M(z%Cc7>6Vutu_(=>6+k)&?Z!iGWR)05^SuhySnznV6!;W zqoBt8Hq9*9AS3PRUwMG{v@e?<)`jezeLQ_WhG=p7LEIn+s(YQKKlbNtThe@m7-&Z+ zd^3}QyPT5lj761vDo+F-wIWhn7MI;%6u{`50C|C=#lb4NB{Lg;h$zjmvNIl}@|>@^ zP2Evve<*(RnW7}DpwU6>(zbWPESnmH4NvXK*;-2yrJqbC?|t|_&XJw9vN6p)f(MCv zI3ZpFnnJROb1Xlx(|2oCwU5oF>C1`C;ECKMD5Bhc6F#5hGjIkw0iRFjYgqQ_1XLA>d3JG{aDk2#g~ zeTepn=Pwr^dKI#@1;Ur}Tns;W@_D*fNNG*w^ejzL z4goVDoisGZs{0r<_gB*XVaXX2-X=>W)5EmDTyaa+bY{`rB%#O$yb*uNqLy6h|0Y7W z*X(39L?BCwH*>ylvW`wqoS(!Wpz#`0<751COOwLfn;X03Sf!L8qm|Zc1S`QR;3EuN zO8#=c-3gl%9z0uR8pQ6kt+IHqa&y20(rsO%EWEoRnpMHY9GhKMBflXG`kCTMlEKLW zbvIQ>#F$xo^i6zs1+D%tNR(#e*TZ3Q4FEbSN5|grGHFHT-HBn>lxc?8$BPPtaELcV zI{*hScHUl?zk#AWvgc5WGuMD%e^Aa%j^Lb1d!SVq*-sIvBhXtAx+vXgbyn zdh%pB)_+8~RDJJ>gS^jus!~CvIfnMJq9y8F$T8vaROi98`wz-vymWr4N?C94W6ZmR zH{?#GwlwQw^ZdDQ85Cnuc^~IMg`4)Z{j&*-U7?~th@e(c?&8@FA4-{bam}Oer`FTq zEep6+b%7><)9X`P{Dq?Ev-?aEI7wwV2Il4Zl&*;uQ8?N-9!#c$X|r2>R39gQ&C#@v zm0VDPIES4GCr*-XPxh{7l@3~*_ZGg8g;}|LA39*3CXB4)iU#Ig87h`-=j++uoVJW0 zl-H)Uw*)~Rd1B@y4{Pn4c4u)7AZYxmq5L_y0*-ITjp$_-L@yw97}O!_fm;^rhtr<0 zK)XjQLmKI5sC6E~D*ypK@tKpn5L~1Y9h62l{JBe#X9H8ntxVbzT!rqOJ3eBJXRq0U z1$Sq^eSs&kY|P%>>KR9t0Rz2!echG{nU89fENsaxvFw9bIrXA)JDAYRySu|4pvlKL zr2Gzz*Db|3Qx@sh@injlrOKEomo_gwSA=%rc9@%_q-}>?VZ6QK(9#&VY+CX`L%ymRyZwdd8a&&Qx&v&+=;Td|7lOXL4i>z zK|LDTBTk{iAKk6Qywjr(1y36&obtsXb1_cUc?S2l=z0*5Yty`6g&|t1uJ0~m-_|7K zM;ckHQbhYa#)nZEKb0&LKADgxb$0UUxURzSnp=#*MHM;v5ZMZhr{lS^;I;CPIQSNu z>w!O~l4J6YP8P4Hj7B6|2=2*}uuA;S1@5B zi$#;pJaAvMYEMu8FR=L65(QL-`M@S=@weJ&pJ#1(lx#3wdMAgV`+j$Q`x`W<205W- z0C&My+#zE!nZOils9X|fg)l~q^(yx5#^L9Exzo4ApHEE^cwjmL@+VQz2 z5goC|6@{;p#9UcD^6)>T~%}F=JGVo4i$)az%>7>7s z1R5a%Z#Y4!4TBA&@UFyPUau{HpO1|65B7l$^qGP^XyEv<;74Hn7J(KpYq7(JR_4u^ z1x_I{PuJnqHI%a+O6eoIn!#&BKzoxX}S%7IW^UjUb*xp zC&)R=&F(!=BDNrMz{C|3^NLT1df$vI`MJf;L}bmQ6-=!eq2p%o5)nww5KW5n9__br z3-KGvDt_!!Pzl9bifdQ&a2CzIGU4zQe!V?>f#`g=?Y%tNIQ<+725O}Rl|}N-$q9v+ z5A8jzBg|ZN=i*q+SmIU53rIeuoeBRIQjG~ANsohd<@VYTu?}9h8x05{Kqb+}Zsa|c z1hTmP^7&Oui=Du}q+x~eard(X9TnJ|ukRH-R&@jkoPZ_?k}-ir4~^pB^47RF9m*BT z#(m36{4_4$zVTy}8Xm5JA)PcvfTTDkBNM;Ej-9Oe z$!0mO!+X%{+PfZ|xy!vchyH>uxb-Wh6Lnc)U#cqGJao8fReijl$fuY$+hO%bz@tlA zRk7$#Jf{f~1wm;^PA3(AIEgz?npF6)kMJHldoA9wmv_5v8Hp;CAj>}w-)agDukJ}}TT(nS42L2|Mkm#v7_l4{z>ifrSo zUQ&bc0(d4qq4aHqQOdeBxm1~G&k`tU~sop=L09m3Rc-|k=CPK)2u zo>q*vq%AD4O6rDQW{Z(Tmn8CwfYSV*(^nHV1sUFmz+-=^Nk1o^f;n~h{L+~`eZOo- zlhoKf0wUN(hH-^RmsR}YdRrit?GzIlFwo_rj`wEU)MCYgCP}or52V)pD$ST1$n;w# z69Nb{yMRfRY%!|n5*~g5NVpjNyE~oTuPf07RjA9g7~|9~y83AemD}|$!UU>sUsixq zVvzg4(sIIB>TA3v#3JR3Nk{x8ilJ|x_#+xWg*?qGzO&RHb=bilShpkQ6oEVzXnIyd zdP20k&gl@?Kl$VAQT0}ai*y>8+Sp-4>IAlU-| CSEQ`~ literal 0 HcmV?d00001 diff --git a/tests/python_tests/images/style-comp-op/hard_light.png b/tests/python_tests/images/style-comp-op/hard_light.png new file mode 100644 index 0000000000000000000000000000000000000000..94c34ad47fd08e6d30f7bfc2b0b56076b5739f78 GIT binary patch literal 14883 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 literal 0 HcmV?d00001 diff --git a/tests/python_tests/images/style-comp-op/invert.png b/tests/python_tests/images/style-comp-op/invert.png new file mode 100644 index 0000000000000000000000000000000000000000..b4289a6fda80b4d6e1b76438f7e49b1dd3eb61c0 GIT binary patch literal 13608 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�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 literal 0 HcmV?d00001 diff --git a/tests/python_tests/images/style-comp-op/lighten.png b/tests/python_tests/images/style-comp-op/lighten.png new file mode 100644 index 0000000000000000000000000000000000000000..0f7b2ebf7805f4f402d44783ae267f39faccedbb GIT binary patch literal 12936 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 literal 0 HcmV?d00001 diff --git a/tests/python_tests/images/style-comp-op/multiply.png b/tests/python_tests/images/style-comp-op/multiply.png new file mode 100644 index 0000000000000000000000000000000000000000..8192fd2f5f2431742e0562f1cbadeca63317cd7d GIT binary patch literal 14714 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 literal 0 HcmV?d00001 diff --git a/tests/python_tests/images/style-comp-op/saturation.png b/tests/python_tests/images/style-comp-op/saturation.png new file mode 100644 index 0000000000000000000000000000000000000000..ff8e9e89edbf87dc6c61ea267a76ea7973d46e50 GIT binary patch literal 13787 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%0A{h=k@8t@h8 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 DfLeC0 literal 0 HcmV?d00001 diff --git a/tests/python_tests/images/style-comp-op/screen.png b/tests/python_tests/images/style-comp-op/screen.png new file mode 100644 index 0000000000000000000000000000000000000000..695237c7cf04bd5c64c9998e3973376058a5915e GIT binary patch literal 14256 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 QejwnZqM#vPCTkY*f3wtKRR910 literal 0 HcmV?d00001 diff --git a/tests/python_tests/images/style-comp-op/soft_light.png b/tests/python_tests/images/style-comp-op/soft_light.png new file mode 100644 index 0000000000000000000000000000000000000000..591d4637f6213c7ae7794f7ba5c68dcba46f8b74 GIT binary patch literal 14224 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 literal 0 HcmV?d00001 diff --git a/tests/python_tests/images/style-comp-op/src.png b/tests/python_tests/images/style-comp-op/src.png new file mode 100644 index 0000000000000000000000000000000000000000..37099141ca07b9cf7b6c88b784bfe18a02d47f1f GIT binary patch literal 4972 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 V#^o*StKS{Bva~%{b=K?Qe*kNO%f0{r literal 0 HcmV?d00001 diff --git a/tests/python_tests/images/style-comp-op/src_atop.png b/tests/python_tests/images/style-comp-op/src_atop.png new file mode 100644 index 0000000000000000000000000000000000000000..b2ec9b27d7803683bd3ad06d362af698e32a4ce0 GIT binary patch literal 14799 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 literal 0 HcmV?d00001 diff --git a/tests/python_tests/images/style-comp-op/src_in.png b/tests/python_tests/images/style-comp-op/src_in.png new file mode 100644 index 0000000000000000000000000000000000000000..37099141ca07b9cf7b6c88b784bfe18a02d47f1f GIT binary patch literal 4972 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 V#^o*StKS{Bva~%{b=K?Qe*kNO%f0{r literal 0 HcmV?d00001 diff --git a/tests/python_tests/images/style-comp-op/src_out.png b/tests/python_tests/images/style-comp-op/src_out.png new file mode 100644 index 0000000000000000000000000000000000000000..4fe9ab37631ae5bb0fad9069c0d8ec0abca560fe GIT binary patch literal 334 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K5893O0R7}x|G$2RR)5S5QV$R!xh9J2^3%>fl g&E{ADWR74^!OUpGz-aR}m=hETp00i_>zopr00S-(%m4rY literal 0 HcmV?d00001 diff --git a/tests/python_tests/images/style-comp-op/src_over.png b/tests/python_tests/images/style-comp-op/src_over.png new file mode 100644 index 0000000000000000000000000000000000000000..667447efe60d3b9e48e2d22f0ce4b4457f4cf5e0 GIT binary patch literal 14778 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 literal 0 HcmV?d00001 diff --git a/tests/python_tests/images/style-comp-op/xor.png b/tests/python_tests/images/style-comp-op/xor.png new file mode 100644 index 0000000000000000000000000000000000000000..d825d012861ac7449b4b2c380f98a7406e9592f8 GIT binary patch literal 14929 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̀U?qM1eE3P7a)Rkf@dsgHJ$|}Zc(l`y+vX6 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 literal 0 HcmV?d00001 From 187ce93a60154f02a486a000730e03f522858e0d Mon Sep 17 00:00:00 2001 From: Mickey Rose Date: Mon, 15 Oct 2012 20:37:20 +0200 Subject: [PATCH 44/45] tests: add style_level_image_filter test --- .../good_maps/style_level_image_filter.xml | 68 ++++++++++++++++++ tests/python_tests/image_filters_test.py | 54 +++++++++++++- .../style-image-filter/agg-stack-blur22.png | Bin 0 -> 32731 bytes .../images/style-image-filter/blur.png | Bin 0 -> 27043 bytes .../images/style-image-filter/edge-detect.png | Bin 0 -> 21615 bytes .../images/style-image-filter/emboss.png | Bin 0 -> 24138 bytes .../images/style-image-filter/gray.png | Bin 0 -> 3698 bytes .../images/style-image-filter/invert.png | Bin 0 -> 23299 bytes .../images/style-image-filter/none.png | Bin 0 -> 23111 bytes .../images/style-image-filter/sharpen.png | Bin 0 -> 22509 bytes .../images/style-image-filter/sobel.png | Bin 0 -> 23966 bytes .../images/style-image-filter/x-gradient.png | Bin 0 -> 25900 bytes .../images/style-image-filter/y-gradient.png | Bin 0 -> 25931 bytes 13 files changed, 121 insertions(+), 1 deletion(-) create mode 100644 tests/data/good_maps/style_level_image_filter.xml create mode 100644 tests/python_tests/images/style-image-filter/agg-stack-blur22.png create mode 100644 tests/python_tests/images/style-image-filter/blur.png create mode 100644 tests/python_tests/images/style-image-filter/edge-detect.png create mode 100644 tests/python_tests/images/style-image-filter/emboss.png create mode 100644 tests/python_tests/images/style-image-filter/gray.png create mode 100644 tests/python_tests/images/style-image-filter/invert.png create mode 100644 tests/python_tests/images/style-image-filter/none.png create mode 100644 tests/python_tests/images/style-image-filter/sharpen.png create mode 100644 tests/python_tests/images/style-image-filter/sobel.png create mode 100644 tests/python_tests/images/style-image-filter/x-gradient.png create mode 100644 tests/python_tests/images/style-image-filter/y-gradient.png diff --git a/tests/data/good_maps/style_level_image_filter.xml b/tests/data/good_maps/style_level_image_filter.xml new file mode 100644 index 000000000..d45427c19 --- /dev/null +++ b/tests/data/good_maps/style_level_image_filter.xml @@ -0,0 +1,68 @@ + + + + + + + + + + land + + shape + ../shp/new_zealand/ne_50m_land.shp + + + + + markers + labels + + shape + ../shp/new_zealand/ne_50m_populated_places_simple.shp + + + + diff --git a/tests/python_tests/image_filters_test.py b/tests/python_tests/image_filters_test.py index 8c8e5ac65..6b63b5fd1 100644 --- a/tests/python_tests/image_filters_test.py +++ b/tests/python_tests/image_filters_test.py @@ -1,7 +1,19 @@ #!/usr/bin/env python from nose.tools import * +from utilities import execution_path, run_tests +from utilities import side_by_side_image import os, mapnik +import re + +def setup(): + # All of the paths used are relative, if we run the tests + # from another directory we need to chdir() + os.chdir(execution_path('.')) + +def replace_style(m, name, style): + m.remove_style(name) + m.append_style(name, style) def test_append(): s = mapnik.Style() @@ -11,5 +23,45 @@ def test_append(): s.image_filters = 'sharpen' eq_(s.image_filters,'sharpen') +def test_style_level_image_filter(): + m = mapnik.Map(256, 256) + mapnik.load_map(m, '../data/good_maps/style_level_image_filter.xml') + m.zoom_all() + successes = [] + fails = [] + for name in ("", "agg-stack-blur(2,2)", "blur", + "edge-detect", "emboss", "gray", "invert", + "sharpen", "sobel", "x-gradient", "y-gradient"): + if name == "": + filename = "none" + else: + filename = re.sub(r"[^-_a-z.0-9]", "", name) + # find_style returns a copy of the style object + style_markers = m.find_style("markers") + style_markers.image_filters = name + style_labels = m.find_style("labels") + style_labels.image_filters = name + # replace the original style with the modified one + replace_style(m, "markers", style_markers) + replace_style(m, "labels", style_labels) + im = mapnik.Image(m.width, m.height) + mapnik.render(m, im) + actual = '/tmp/mapnik-style-image-filter-' + filename + '.png' + expected = 'images/style-image-filter/' + filename + '.png' + im.save(actual) + if not os.path.exists(expected): + print 'generating expected test image: %s' % expected + im.save(expected) + expected_im = mapnik.Image.open(expected) + # compare them + if im.tostring() == expected_im.tostring(): + successes.append(name) + else: + fails.append('failed comparing actual (%s) and expected(%s)' % (actual,'tests/python_tests/'+ expected)) + fail_im = side_by_side_image(expected_im, im) + fail_im.save('/tmp/mapnik-style-image-filter-' + filename + '.fail.png') + eq_(len(fails), 0, '\n'+'\n'.join(fails)) + if __name__ == "__main__": - [eval(run)() for run in dir() if 'test_' in run] + setup() + run_tests(eval(x) for x in dir() if x.startswith("test_")) diff --git a/tests/python_tests/images/style-image-filter/agg-stack-blur22.png b/tests/python_tests/images/style-image-filter/agg-stack-blur22.png new file mode 100644 index 0000000000000000000000000000000000000000..69fd5dd35522ea5ae2045557d8f55c16e48b6cc9 GIT binary patch literal 32731 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