From 67d8ee3d401311077873d6a5a6dfe2e82566edfb Mon Sep 17 00:00:00 2001 From: Dane Springmeyer Date: Mon, 1 Oct 2012 15:05:07 -0700 Subject: [PATCH 01/11] point tests at better source files for #1508 --- .../tiff-opaque-edge-gdal2-600-reference.png | Bin 0 -> 21194 bytes ...tiff-opaque-edge-raster2-600-reference.png | Bin 0 -> 21229 bytes .../styles/tiff-nodata-edge-raster.xml | 3 ++- .../styles/tiff-opaque-edge-gdal.xml | 8 +++++--- .../styles/tiff-opaque-edge-gdal2.xml | 17 +++++++++++++++++ .../styles/tiff-opaque-edge-raster.xml | 6 +++--- .../styles/tiff-opaque-edge-raster2.xml | 18 ++++++++++++++++++ tests/visual_tests/test.py | 3 ++- 8 files changed, 47 insertions(+), 8 deletions(-) create mode 100644 tests/visual_tests/images/tiff-opaque-edge-gdal2-600-reference.png create mode 100644 tests/visual_tests/images/tiff-opaque-edge-raster2-600-reference.png create mode 100644 tests/visual_tests/styles/tiff-opaque-edge-gdal2.xml create mode 100644 tests/visual_tests/styles/tiff-opaque-edge-raster2.xml diff --git a/tests/visual_tests/images/tiff-opaque-edge-gdal2-600-reference.png b/tests/visual_tests/images/tiff-opaque-edge-gdal2-600-reference.png new file mode 100644 index 0000000000000000000000000000000000000000..9c5822705c956c417120f41ed1c2674291fbcf3f GIT binary patch literal 21194 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 literal 0 HcmV?d00001 diff --git a/tests/visual_tests/images/tiff-opaque-edge-raster2-600-reference.png b/tests/visual_tests/images/tiff-opaque-edge-raster2-600-reference.png new file mode 100644 index 0000000000000000000000000000000000000000..de98ce206587a7cea45d3393e44c35f837468808 GIT binary patch literal 21229 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 z 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 literal 0 HcmV?d00001 diff --git a/tests/visual_tests/styles/tiff-nodata-edge-raster.xml b/tests/visual_tests/styles/tiff-nodata-edge-raster.xml index 0700c746b..8305953de 100644 --- a/tests/visual_tests/styles/tiff-nodata-edge-raster.xml +++ b/tests/visual_tests/styles/tiff-nodata-edge-raster.xml @@ -11,7 +11,8 @@ srs="+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over"> style - + + ../../data/raster/nodata-edge.tif raster -12329035.765216826,4508650.398543958,-12328653.027947057,4508957.346255356 diff --git a/tests/visual_tests/styles/tiff-opaque-edge-gdal.xml b/tests/visual_tests/styles/tiff-opaque-edge-gdal.xml index 5d62e2d8b..b1c3b3b43 100644 --- a/tests/visual_tests/styles/tiff-opaque-edge-gdal.xml +++ b/tests/visual_tests/styles/tiff-opaque-edge-gdal.xml @@ -1,4 +1,4 @@ - + - + test - ../../data/raster/river.tiff + + + ../../data/raster/river_wgs.tiff gdal diff --git a/tests/visual_tests/styles/tiff-opaque-edge-gdal2.xml b/tests/visual_tests/styles/tiff-opaque-edge-gdal2.xml new file mode 100644 index 000000000..124849988 --- /dev/null +++ b/tests/visual_tests/styles/tiff-opaque-edge-gdal2.xml @@ -0,0 +1,17 @@ + + + + testmerc + + + + ../../data/raster/river_merc.tiff + gdal + + + \ No newline at end of file diff --git a/tests/visual_tests/styles/tiff-opaque-edge-raster.xml b/tests/visual_tests/styles/tiff-opaque-edge-raster.xml index ec5519725..c7cbac762 100644 --- a/tests/visual_tests/styles/tiff-opaque-edge-raster.xml +++ b/tests/visual_tests/styles/tiff-opaque-edge-raster.xml @@ -1,4 +1,4 @@ - + - + test - ../../data/raster/river.tiff + ../../data/raster/river_wgs.tiff raster 0,0,256,210 diff --git a/tests/visual_tests/styles/tiff-opaque-edge-raster2.xml b/tests/visual_tests/styles/tiff-opaque-edge-raster2.xml new file mode 100644 index 000000000..948bccfa2 --- /dev/null +++ b/tests/visual_tests/styles/tiff-opaque-edge-raster2.xml @@ -0,0 +1,18 @@ + + + + testmerc + + + + ../../data/raster/river_merc.tiff + -8249238.098993212,-486119.1339340762,-8024337.037783274,-302066.9754826002 + raster + + + \ No newline at end of file diff --git a/tests/visual_tests/test.py b/tests/visual_tests/test.py index d647a258b..afdde1fb4 100755 --- a/tests/visual_tests/test.py +++ b/tests/visual_tests/test.py @@ -56,7 +56,8 @@ files = [ {'name': "tiff-nodata-edge-raster", 'sizes':[(600,400)]}, {'name': "tiff-opaque-edge-gdal", 'sizes':[(256,256)]}, {'name': "tiff-opaque-edge-raster", 'sizes':[(256,256)]}, - + {'name': "tiff-opaque-edge-gdal2", 'sizes':[(600,400)]}, + {'name': "tiff-opaque-edge-raster2", 'sizes':[(600,400)]}, ] def render(filename, width, height, bbox, quiet=False): From acaee095980d8a57eee27094f3c37ab07fbca136 Mon Sep 17 00:00:00 2001 From: Dane Springmeyer Date: Mon, 1 Oct 2012 15:35:35 -0700 Subject: [PATCH 02/11] fix debug output symbolizer name --- src/load_map.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/load_map.cpp b/src/load_map.cpp index 344793ef9..47418ea09 100644 --- a/src/load_map.cpp +++ b/src/load_map.cpp @@ -1253,7 +1253,7 @@ void map_parser::parse_shield_symbolizer(rule & rule, xml_node const& sym) sym.get_opt_attr("no-text"); if (no_text) { - MAPNIK_LOG_ERROR(raster_symbolizer) << "'no-text' is deprecated and will be removed in Mapnik 3.x, to create a ShieldSymbolizer without text just provide an element like: \"' '\""; + MAPNIK_LOG_ERROR(shield_symbolizer) << "'no-text' is deprecated and will be removed in Mapnik 3.x, to create a ShieldSymbolizer without text just provide an element like: \"' '\""; if (*no_text) shield_symbol.set_name(parse_expression("' '")); } From 09726626cf57e3177f319ba91ef586a5e4953460 Mon Sep 17 00:00:00 2001 From: Dane Springmeyer Date: Mon, 1 Oct 2012 16:14:41 -0700 Subject: [PATCH 03/11] add 'premultiplied' property on raster symbolizer to allow user to control (in rare cases) the premultiplied status of images in cases where tiffs mis-report it - closes #1512 --- bindings/python/mapnik_raster_symbolizer.cpp | 24 ++++++++++++++++++++ include/mapnik/raster_symbolizer.hpp | 3 +++ src/load_map.cpp | 3 +++ src/raster_symbolizer.cpp | 9 ++++++++ src/save_map.cpp | 10 +++++++- 5 files changed, 48 insertions(+), 1 deletion(-) diff --git a/bindings/python/mapnik_raster_symbolizer.cpp b/bindings/python/mapnik_raster_symbolizer.cpp index 69e0acca8..54f66a554 100644 --- a/bindings/python/mapnik_raster_symbolizer.cpp +++ b/bindings/python/mapnik_raster_symbolizer.cpp @@ -28,6 +28,18 @@ #include #include +namespace { + +// https://github.com/mapnik/mapnik/issues/1367 +PyObject* get_premultiplied_impl(mapnik::raster_symbolizer & sym) +{ + boost::optional premultiplied = sym.premultiplied(); + if (premultiplied) + return ::PyBool_FromLong(*premultiplied); + Py_RETURN_NONE; +} + +} using mapnik::raster_symbolizer; void export_raster_symbolizer() @@ -119,5 +131,17 @@ void export_raster_symbolizer() ">>> r = RasterSymbolizer()\n" ">>> r.mesh_size = 32\n" ) + .add_property("premultiplied", + &get_premultiplied_impl, + &raster_symbolizer::set_premultiplied, + "Get/Set premultiplied status of the source image.\n" + "Can be used to override what the source data reports (when in error)\n" + "\n" + "Usage:\n" + "\n" + ">>> from mapnik import RasterSymbolizer\n" + ">>> r = RasterSymbolizer()\n" + ">>> r.premultiplied = False\n" + ) ; } diff --git a/include/mapnik/raster_symbolizer.hpp b/include/mapnik/raster_symbolizer.hpp index 58ea11ab9..454c0f663 100644 --- a/include/mapnik/raster_symbolizer.hpp +++ b/include/mapnik/raster_symbolizer.hpp @@ -52,6 +52,8 @@ struct MAPNIK_DECL raster_symbolizer : public symbolizer_base double calculate_filter_factor() const; unsigned get_mesh_size() const; void set_mesh_size(unsigned mesh_size); + boost::optional premultiplied() const; + void set_premultiplied(bool premultiplied); private: std::string mode_; @@ -60,6 +62,7 @@ private: raster_colorizer_ptr colorizer_; double filter_factor_; unsigned mesh_size_; + boost::optional premultiplied_; }; } diff --git a/src/load_map.cpp b/src/load_map.cpp index 47418ea09..06d78e94a 100644 --- a/src/load_map.cpp +++ b/src/load_map.cpp @@ -1490,6 +1490,9 @@ void map_parser::parse_raster_symbolizer(rule & rule, xml_node const & sym) optional mesh_size = sym.get_opt_attr("mesh-size"); if (mesh_size) raster_sym.set_mesh_size(*mesh_size); + // premultiplied status of image + optional premultiplied = sym.get_opt_attr("premultiplied"); + if (premultiplied) raster_sym.set_premultiplied(*premultiplied); xml_node::const_iterator cssIter = sym.begin(); xml_node::const_iterator endCss = sym.end(); diff --git a/src/raster_symbolizer.cpp b/src/raster_symbolizer.cpp index 6b3b981ef..b70657ea4 100644 --- a/src/raster_symbolizer.cpp +++ b/src/raster_symbolizer.cpp @@ -177,6 +177,15 @@ void raster_symbolizer::set_mesh_size(unsigned mesh_size) mesh_size_=mesh_size; } +void raster_symbolizer::set_premultiplied(bool premultiplied) +{ + premultiplied_=premultiplied; +} + +boost::optional raster_symbolizer::premultiplied() const +{ + return premultiplied_; +} } diff --git a/src/save_map.cpp b/src/save_map.cpp index 7b90ce29b..55996e471 100644 --- a/src/save_map.cpp +++ b/src/save_map.cpp @@ -180,10 +180,18 @@ public: set_attr( sym_node, "mesh-size", sym.get_mesh_size() ); } - if (sym.get_colorizer()) { + if (sym.get_colorizer()) + { serialize_raster_colorizer(sym_node, sym.get_colorizer(), explicit_defaults_); } + + boost::optional premultiplied = sym.premultiplied(); + if (premultiplied) + { + set_attr( sym_node, "premultiplied", *sym.premultiplied()); + } + serialize_symbolizer_base(sym_node, sym); } From abf810202195d3c5f7c3f7fb3f54393a4e7b8734 Mon Sep 17 00:00:00 2001 From: Dane Springmeyer Date: Mon, 1 Oct 2012 16:15:28 -0700 Subject: [PATCH 04/11] update raster symbolizer test after 0972662 and #1512 --- tests/python_tests/object_test.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/tests/python_tests/object_test.py b/tests/python_tests/object_test.py index 372ecde76..52a428bcd 100644 --- a/tests/python_tests/object_test.py +++ b/tests/python_tests/object_test.py @@ -14,6 +14,18 @@ def setup(): # from another directory we need to chdir() os.chdir(execution_path('.')) +def test_raster_symbolizer(): + s = mapnik.RasterSymbolizer() + eq_(s.comp_op,mapnik.CompositeOp.src_over) # note: mode is deprecated + eq_(s.scaling,mapnik.scaling_method.NEAR) + eq_(s.opacity,1.0) + eq_(s.colorizer,None) + eq_(s.filter_factor,-1) + eq_(s.mesh_size,16) + eq_(s.premultiplied,None) + s.premultiplied = True + eq_(s.premultiplied,True) + def test_line_pattern(): s = mapnik.LinePatternSymbolizer(mapnik.PathExpression('../data/images/dummy.png')) eq_(s.filename, '../data/images/dummy.png') From 798b101f0c31f8b9168073fee9b70986221a7c24 Mon Sep 17 00:00:00 2001 From: Dane Springmeyer Date: Mon, 1 Oct 2012 17:09:28 -0700 Subject: [PATCH 05/11] finish #1512 and adjust tests to use new parameter --- include/mapnik/raster_symbolizer.hpp | 1 + src/agg/process_raster_symbolizer.cpp | 13 ++++++++++++- src/raster_symbolizer.cpp | 3 ++- .../styles/tiff-alpha-broken-assoc-alpha-gdal.xml | 2 +- .../styles/tiff-alpha-broken-assoc-alpha-raster.xml | 2 +- 5 files changed, 17 insertions(+), 4 deletions(-) diff --git a/include/mapnik/raster_symbolizer.hpp b/include/mapnik/raster_symbolizer.hpp index 454c0f663..657c3fbd2 100644 --- a/include/mapnik/raster_symbolizer.hpp +++ b/include/mapnik/raster_symbolizer.hpp @@ -30,6 +30,7 @@ // boost #include +#include namespace mapnik { diff --git a/src/agg/process_raster_symbolizer.cpp b/src/agg/process_raster_symbolizer.cpp index d0a701823..b8287208e 100644 --- a/src/agg/process_raster_symbolizer.cpp +++ b/src/agg/process_raster_symbolizer.cpp @@ -98,9 +98,20 @@ void agg_renderer::process(raster_symbolizer const& sym, filter_radius); } } + // handle whether to premultiply the source + // data before compositing + // first, default to what the data reports + bool premultiply_source = !source->premultiplied_alpha_; + // the, allow the user to override + boost::optional is_premultiplied = sym.premultiplied(); + if (is_premultiplied) + { + if (*is_premultiplied) premultiply_source = false; + else premultiply_source = true; + } composite(current_buffer_->data(), target.data_, sym.comp_op(), sym.get_opacity(), - start_x, start_y, !source->premultiplied_alpha_); + start_x, start_y, premultiply_source); } } } diff --git a/src/raster_symbolizer.cpp b/src/raster_symbolizer.cpp index b70657ea4..cfdf4c632 100644 --- a/src/raster_symbolizer.cpp +++ b/src/raster_symbolizer.cpp @@ -55,7 +55,8 @@ raster_symbolizer::raster_symbolizer(raster_symbolizer const& rhs) opacity_(rhs.opacity_), colorizer_(rhs.colorizer_), filter_factor_(rhs.filter_factor_), - mesh_size_(rhs.mesh_size_) {} + mesh_size_(rhs.mesh_size_), + premultiplied_(rhs.premultiplied_) {} std::string const& raster_symbolizer::get_mode() const { diff --git a/tests/visual_tests/styles/tiff-alpha-broken-assoc-alpha-gdal.xml b/tests/visual_tests/styles/tiff-alpha-broken-assoc-alpha-gdal.xml index 358a2260b..6dae4a4ef 100644 --- a/tests/visual_tests/styles/tiff-alpha-broken-assoc-alpha-gdal.xml +++ b/tests/visual_tests/styles/tiff-alpha-broken-assoc-alpha-gdal.xml @@ -4,7 +4,7 @@ - + Date: Mon, 1 Oct 2012 17:41:07 -0700 Subject: [PATCH 06/11] expose more compositing options in python (the non-agg custom ones) to set up for testing as per #1493 and #1369 --- bindings/python/mapnik_image.cpp | 8 +++++++- tests/python_tests/compositing_test.py | 3 +++ tests/python_tests/images/composited/color.png | Bin 0 -> 13829 bytes .../images/composited/grain_extract.png | Bin 0 -> 9149 bytes .../images/composited/grain_merge.png | Bin 0 -> 13368 bytes tests/python_tests/images/composited/hue.png | Bin 0 -> 13240 bytes .../images/composited/saturation.png | Bin 0 -> 13561 bytes tests/python_tests/images/composited/value.png | Bin 0 -> 13720 bytes 8 files changed, 10 insertions(+), 1 deletion(-) create mode 100644 tests/python_tests/images/composited/color.png create mode 100644 tests/python_tests/images/composited/grain_extract.png create mode 100644 tests/python_tests/images/composited/grain_merge.png create mode 100644 tests/python_tests/images/composited/hue.png create mode 100644 tests/python_tests/images/composited/saturation.png create mode 100644 tests/python_tests/images/composited/value.png diff --git a/bindings/python/mapnik_image.cpp b/bindings/python/mapnik_image.cpp index e9934252a..375e47326 100644 --- a/bindings/python/mapnik_image.cpp +++ b/bindings/python/mapnik_image.cpp @@ -176,6 +176,7 @@ boost::shared_ptr from_cairo(PycairoSurface* surface) void export_image() { using namespace boost::python; + // NOTE: must match list in include/mapnik/image_compositing.hpp enum_("CompositeOp") .value("clear", mapnik::clear) .value("src", mapnik::src) @@ -204,7 +205,12 @@ void export_image() .value("exclusion", mapnik::exclusion) .value("contrast", mapnik::contrast) .value("invert", mapnik::invert) - .value("invert_rgb", mapnik::invert_rgb) + .value("grain_merge", mapnik::grain_merge) + .value("grain_extract", mapnik::grain_extract) + .value("hue", mapnik::hue) + .value("saturation", mapnik::saturation) + .value("color", mapnik::_color) + .value("value", mapnik::_value) ; class_ >("Image","This class represents a 32 bit RGBA image.",init()) diff --git a/tests/python_tests/compositing_test.py b/tests/python_tests/compositing_test.py index cef3aa0e0..8c844c72f 100644 --- a/tests/python_tests/compositing_test.py +++ b/tests/python_tests/compositing_test.py @@ -98,6 +98,9 @@ def test_compare_images(): if not validate_pixels_are_not_premultiplied(a): print '%s not validly demultiplied' % (name) a.save(actual) + if not os.path.exists(expected): + print 'generating expected test image: %s' % expected + a.save(expected) expected_im = mapnik.Image.open(expected) # compare them eq_(a.tostring(),expected_im.tostring(), 'failed comparing actual (%s) and expected(%s)' % (actual,'tests/python_tests/'+ expected)) diff --git a/tests/python_tests/images/composited/color.png b/tests/python_tests/images/composited/color.png new file mode 100644 index 0000000000000000000000000000000000000000..c9f7e79ca5755493fcaf74a47397ba7058d3a30a GIT binary patch literal 13829 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 AF8}}l literal 0 HcmV?d00001 diff --git a/tests/python_tests/images/composited/grain_extract.png b/tests/python_tests/images/composited/grain_extract.png new file mode 100644 index 0000000000000000000000000000000000000000..cfa03e11385e3027b5dfc9316de1e508d29d1c4e GIT binary patch literal 9149 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%0A_z0RU19o-&Q4S8O*4EJIa(jd1! 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 literal 0 HcmV?d00001 diff --git a/tests/python_tests/images/composited/hue.png b/tests/python_tests/images/composited/hue.png new file mode 100644 index 0000000000000000000000000000000000000000..96ed7a6f11ff2ace3c014ec931e852c2bb509989 GIT binary patch literal 13240 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 Date: Mon, 1 Oct 2012 18:22:12 -0700 Subject: [PATCH 07/11] ensure we rebuild libmapnik if agg sources change --- src/build.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/build.py b/src/build.py index fe080f4dc..2f7cdadad 100644 --- a/src/build.py +++ b/src/build.py @@ -339,6 +339,8 @@ else: env['LIBMAPNIK_LIBS'] = copy(lib_env['LIBS']) env['LIBMAPNIK_CXXFLAGS'] = libmapnik_cxxflags +mapnik = None + if env['PLATFORM'] == 'Darwin': target_path = env['MAPNIK_LIB_BASE_DEST'] if 'uninstall' not in COMMAND_LINE_TARGETS: @@ -389,3 +391,5 @@ else: env['create_uninstall_target'](env, target2) env['create_uninstall_target'](env, target1) env['create_uninstall_target'](env, target) + +Depends(mapnik, env.subst('../deps/agg/libagg.a')) From d35b4eb6d4f591c4f25e0ee75243bdadb93da492 Mon Sep 17 00:00:00 2001 From: Dane Springmeyer Date: Mon, 1 Oct 2012 18:51:53 -0700 Subject: [PATCH 08/11] report all failures in compositing tests --- tests/python_tests/compositing_test.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/tests/python_tests/compositing_test.py b/tests/python_tests/compositing_test.py index 8c844c72f..a6c048d31 100644 --- a/tests/python_tests/compositing_test.py +++ b/tests/python_tests/compositing_test.py @@ -85,6 +85,9 @@ def validate_pixels_are_premultiplied(image): def test_compare_images(): b = mapnik.Image.open('./images/support/b.png') b.premultiply() + num_ops = len(mapnik.CompositeOp.names) + successes = [] + fails = [] for name in mapnik.CompositeOp.names: a = mapnik.Image.open('./images/support/a.png') a.premultiply() @@ -103,7 +106,11 @@ def test_compare_images(): a.save(expected) expected_im = mapnik.Image.open(expected) # compare them - eq_(a.tostring(),expected_im.tostring(), 'failed comparing actual (%s) and expected(%s)' % (actual,'tests/python_tests/'+ expected)) + if a.tostring() == expected_im.tostring(): + successes.append(name) + else: + fails.append('failed comparing actual (%s) and expected(%s)' % (actual,'tests/python_tests/'+ expected)) + eq_(len(successes),num_ops,'\n'+'\n'.join(fails)) b.demultiply() # b will be slightly modified by pre and then de multiplication rounding errors # TODO - write test to ensure the image is 99% the same. From f10939fac6278002862f8dd875d4dc7b39856b8b Mon Sep 17 00:00:00 2001 From: Dane Springmeyer Date: Mon, 1 Oct 2012 18:54:47 -0700 Subject: [PATCH 09/11] apply patch from lightmare fixing rgb->hsv conversion - refs #1493 --- boost/gil/extension/toolbox/hsv.hpp | 32 ++++++++++++++++++++--------- 1 file changed, 22 insertions(+), 10 deletions(-) diff --git a/boost/gil/extension/toolbox/hsv.hpp b/boost/gil/extension/toolbox/hsv.hpp index afaf1ff8a..1eb2e335e 100644 --- a/boost/gil/extension/toolbox/hsv.hpp +++ b/boost/gil/extension/toolbox/hsv.hpp @@ -60,9 +60,16 @@ struct default_color_converter_impl< rgb_t, hsv_t > bits32f temp_blue = channel_convert( get_color( src, blue_t() )); bits32f hue, saturation, value; + bits32f min_color, max_color; - bits32f min_color = std::min(temp_red,std::min(temp_green, temp_blue)); - bits32f max_color = std::max(temp_red,std::max(temp_green, temp_blue)); + if( temp_red < temp_green ) { + min_color = std::min( temp_blue, temp_red ); + max_color = std::max( temp_blue, temp_green ); + } + else { + min_color = std::min( temp_blue, temp_green ); + max_color = std::max( temp_blue, temp_red ); + } value = max_color; @@ -85,7 +92,7 @@ struct default_color_converter_impl< rgb_t, hsv_t > } else { - if( std::abs( boost::numeric_cast(temp_red - max_color) ) < 0.0001f ) + if( temp_red == max_color ) { hue = ( temp_green - temp_blue ) / diff; @@ -149,18 +156,23 @@ struct default_color_converter_impl frac = h - i; + // p = value * (1 - saturation) p = get_color( src, value_t() ) * ( 1.f - get_color( src, saturation_t() )); + // q = value * (1 - saturation * hue_frac) + // it drops with increasing distance from floor(hue) q = get_color( src, value_t() ) * ( 1.f - ( get_color( src, saturation_t() ) * frac )); + // t = value * (1 - (saturation * (1 - hue_frac)) + // it grows with increasing distance from floor(hue) t = get_color( src, value_t() ) * ( 1.f - ( get_color( src, saturation_t() ) * ( 1.f - frac ))); - switch( i ) + switch( i % 6 ) { - case 0: + case 0: // red to yellow { red = get_color( src, value_t() ); green = t; @@ -169,7 +181,7 @@ struct default_color_converter_impl break; } - case 1: + case 1: // yellow to green { red = q; green = get_color( src, value_t() ); @@ -178,7 +190,7 @@ struct default_color_converter_impl break; } - case 2: + case 2: // green to cyan { red = p; green = get_color( src, value_t() ); @@ -187,7 +199,7 @@ struct default_color_converter_impl break; } - case 3: + case 3: // cyan to blue { red = p; green = q; @@ -196,7 +208,7 @@ struct default_color_converter_impl break; } - case 4: + case 4: // blue to magenta { red = t; green = p; @@ -205,7 +217,7 @@ struct default_color_converter_impl break; } - case 5: + case 5: // magenta to red { red = get_color( src, value_t() ); green = p; From f635a2bd1e84abf3aaca77f7d57e70a91f4f5d75 Mon Sep 17 00:00:00 2001 From: Dane Springmeyer Date: Tue, 2 Oct 2012 14:11:28 -0700 Subject: [PATCH 10/11] fix expected images for gdal/raster opaque edge test --- .../tiff-opaque-edge-gdal-256-reference.png | Bin 10551 -> 7708 bytes .../tiff-opaque-edge-raster-256-reference.png | Bin 10551 -> 7708 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/tests/visual_tests/images/tiff-opaque-edge-gdal-256-reference.png b/tests/visual_tests/images/tiff-opaque-edge-gdal-256-reference.png index cb90dea1d2dac74767ed6303d607135ce50e70aa..682024a6e7fcea2e40761593067be17a7c2ced1f 100644 GIT binary patch literal 7708 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 T_mr~0sxM%mV~j7;vJL+q$ie`r literal 10551 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%0A=n2mv0rcNiFN0T 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 xaD1chrY1xJ40TO(%CsFL{vXwsV{HHc diff --git a/tests/visual_tests/images/tiff-opaque-edge-raster-256-reference.png b/tests/visual_tests/images/tiff-opaque-edge-raster-256-reference.png index cb90dea1d2dac74767ed6303d607135ce50e70aa..682024a6e7fcea2e40761593067be17a7c2ced1f 100644 GIT binary patch literal 7708 zcmb_>S3pxu(Dq3PkWdq90KrgRKt%yXKw1KXrgS^f5k#pXy(JVW(q9oosuTrLq$o`w zp@Ve67f_HYNC!g?B;Votum8L6Dmgo|v%9mq&pbO5Yig{=&LYSH006szKHeMvAmCpJ z0A~V!EWL`I06=)o0Izw&KWi!OIH)@D2S#1*xZOLX5}KDs_YO6Z_eG7+^Xr3rVZtGUFggLXq7?Lv+7ZHlwrw$5t@9WGZ12SRH=}+wUCk`Bs@*nC0e7F%(X6Q%t5S?ZhwexKtoxz7?Ta<^3aAmWO`LP5L)xMEs$_tNXrH(DR(#LY zF4>t2T;d=b-T~-&RdnOUkrA zB>R^{lYjvXf1C`whqz-Cv<%@+7v-L6)w9H?h(Y{e{(wy=eru&oXy5nsYtj5reLw_p z8|ZlY_#cc&o(05AN&@(Y+)Yr;sbhm^YQ+*ywvelWO_R`&18jfW&PU!9g-ECT+!|?T z_#xFM=6Q@mHI3kO{2?*3^D$CPuu0WM{Jh(Q(2quctA){Dk$Ijryd~y20(2u)J zqLuo9BEUoymA5taxHPTiN$Grug%q{(@St#Qn|JjT_1V{Km1fGIJZJW6|Q(4H?L z0SHA6hhQ7Ijxw{B4SBVYIU;OXqQkd(A5Jyyl(gzdsSfNMj@huLp5<}GK#Bo1sIhB& zuGs7JDdr2tw%R(+>M6l%ooz0rinvtJS@wo(w;Ed=whN&)*!+<@F*004LE_ev5R7Tp zi?Fe9`Z~gh?|aaO~u8!+iu;4W~{~ zwz|$=egTgW(+3{0h>-ylG@_9A4BPDXThkaV@gf!-lmu{@v9)uJIgmwp>jNyK6w(M+ z;6zlw5jZ1Fz>|9ASoUz3*`Y0lH~EZmQ{s)w(tKi&;xk#h-dx`>sY=>|-#M~^Or}Q? zq_2CL9zBEQHJiE{S`szI&WiE{=mQqSTobuxNo62R^lQuH9Nho$u>K>TH1;~ zk%mF@3QD_1A*YrEG0#Ln2h1OhOY~Nny*om4`Yv=tnamLg@h=d_r^&!bs&%~-AW9w! znBEm*`pLFB6by4}w~{;VX&j@(<8ycCNQu$z0VPJ~Byq7)xQt4? zZ4EeG9_*i1p^*!PNB+X^&pJF1-GSfLtZXjaFwrxvjk*2DqC5n&^|YQ~{N0Ku(`F#+ zRYvcu8nX0gs}_*YMx&-J@*Lm%)Pb5_=iq`&D@=AQc{p?`H-~7N^I%Pk>3-Q}Gc)37 zbssjun|q0pW-2*nIkLu%x($q{Q?6%?Hb-2XzbS{x^9x&n zWH7uz4-I>Umab~@o*dwgztm7trt z-n{bYluBbPg+pKJ*PE&5(PeDEPe$WEj*Y8+V(-p15fYE$7v7s#-?)GJmv@x=8d{1j zX`bv46r#GNryp)o%r`vW)M|p^<`IjOCwxF zQ>k@-Sqt6{CyR+_bnGmQ{BG;Jr%k(aIA@dVH@-LP^LQtZBYcGjeYyg6IFt2n?ILUe z4%gsYKlJB9W1AbL)wk*h*PHp@EUvorD2K^!`;?&?`0Py!X{q@Uf~VXKM{><=DA3wyKPA)Hn4yc~#W8^G zygyQrJ8U!&e)L$mHfYUW9>h8ak3%DVhOLm=C(#f+%e745Oe_&OQTRNi^j%W1DyYzU zrZd(rSlCSh$6Pg1ya^PmzjXUUO=T?6US|B2&E}VH@M!epxUsxGSV8U0m7b(70cp+ho0-mOI^Eh4fhiNEqv!Xm_AZZi z+Q|(_a-fnW7_>|x)w`lhv%5CJ(TtkrZzQ#?>&?J@PGBVYKjA*6EqdRm9mpZ*A!Li% z0?w$f{1xBqq}ZF@G(0u?IXN)Wl_z(!cSR@JS)+v-kfs(&{ox1Iu^W-TuI@Yv&@WvD zz*r>+MFp=fp_$q>dm13-ZWBxLY;4i}8mgjhpZJHo>$l}-@5;NHhBzfp=Sqg-i5nqj zy&FP1Ui*|uU1NN7{i&gk9tceC+~U*gRQbA6Ss_yUk~_gel~E33Z1spWSR_G0d7;b80TNhDa#dB8a5@C`rCdwlOU%|TPvF% z76{w@nclR*w0*uAyYVA}Vh=rwYU(VDjef{4Wj$+sm<)pNuWi`MCKJtIapQN2&*!zN z*}rqbruIFQ)Fnl|;h+fi2)|T;dn9Zt?ys?bnKDcj1^Ly+gL|wqV{~*sSDB1qk2<^? z>#ucmMA1!LGtVezw-|5ZZ7(zSH#u6D3oQ$l%mKl5_R*mp?Zzi=O2=fzTfdNFIQ~C5 zR}%U6^eEr74|)2GxmF~4Ijlll=4h|E{WzkeBiJVGmHl9D#B((s=19cHsE@7Ft$NBS zT`vrhoG!@eCl9JcRQ;qX(bl@+jI8On@d&*%D--2xrHY~M_}r<43qBqH zyF!e-q8VSxfs5)G7#L{iaIb$W3I-id%bv}pE`frCt$fcIC6(Mua>mBDji>TEavP)X z#kng@GTkWT8VEPv$kI>9TIm-`8_ry8(awA4A)BolgPH#O99pOu+X?bBxIN9gj-ZCl zVbz>*poqz6*mDNCca&xn%l*g-gg!|hP58&wRYxfEYs)&7nSW1;#O~7fW!C@<$(bce z)w6@-ztZ-c}CgfK#V3R`zo+6tqze{4Y#^3 zc?cr4+V>U`>C{mwInVAx%Z5s8(evkPbttAB%3X_lwgY`G7dh>|lV|Hc^sm_32XjsA z8R_%0ySxCyeHqkdGWK*GbNHrTeSO@~erU&ZWn}Xgs`THFWeOcFt-OEkTdrJzO=8u$txtXh%+0>L~xdRzyF3$xV zR;_A9i3+uWw3hvhMjl@R!WYbNFsA;!mQ=~Ko$@i|KBeh=7KTC4grc7yju ziQU=v+|~~_x`nv>eq^tAKg3hGq-ukj#0gT1R}N})tQ=u&-%_hx+diK=eYl9{S>+%t zBYIt?KTqG>JUs8O`(t||BzMND;-)p`^V#=Txmp(^^=$XTZBJ|6x~~@j%X7Sgf2G9H z2)kQQrFum-wt~y^Nt|jR_k(R6wr7h9Db0Vjm^^i2f04YHmZ$RKpbKEmpq7+f102piHs3@s8`8O!DHf6QrG17>4ebGh<5AR%6Xl`s!i1@5d;Ev z?WJMJEh2p@0QGQ%U5zy7>2_P)&EJNXX zvx^jlWxBwp(&>IH{x`XZe62!pwtQyP;qC2muZaew>q>4lZrn}k2frE@{j}YuLb2D= zb$2woq^P7f>=b(-*zou19W;;JQ^z62Ao~6iU(f@LHfylfAyDwS!J<4fbaTt?n+!yo`@SKfq zz9TeNzpm>D?vwoJ6pJUkf9IQ0n$Am;OH#DH;ves->%&k{Vq}B9jqm0Kw`^>S>Vj!% zn_PVA?+r6;A7QOV?71^Fd@1(|<3N5ZioWb|18T6VTPT(^&GR-`HsKbvJ!@}^SRDwI z+7^wXRY^92DM)jgguXMQiH_GcQjtrvSMNfXa$PATFU{fm=T(p(q@e`q*bF86mm(M6 z$vkjlxpj_QvhnO+j*SgUn%xZ8T}$9|J|nv$e;&Aj!0;;x;5=lm^E-X6+&`muj9qf6B&p(_k&eRo2YIpJjeNOv z$;fXqxMEBsz^!3sd%hD~i=176Y=>+O>B@X;iwYP%^?#YdX}x@LtKTfuDuhAm-MZZV z;rp(`k3g#0`CY`&;p$q|+T(>2irzSA9P+n6RJmA|H>4<`PPMz5KMk}H{(H}D`^lYC zTCj|8)N=o4VZBH#BK2^(9@A;L7y_8C9^>eDy)W%OER?2{BF}As4Nsep>Lg(it1^$vRG}j_nr;Hvp1TEV%#_C>6Nyl`tpd z)53Q{rFVh%VABK6VV-^gf;?eh%}XW&8e+(Pg3XP2hjS!nT{ERzILK+>#((=iPpv&* z)KC<8rWy+W1+mvm%;-P`0{tGRZB)*_0^g64hTm?PdL7Ql>Az{Y_)pZ9xt%6rNn`!E z4RNRLsq>$0{<|P8C-WKpCFiv=zQXUu9uZV1*RXCb3A~JJA=ep_Unarwn8qYT;$J5K!CP%WS1CZ%+7L9 z_Q92QIblYl`%`^8*Yu3ss!H%9+z2v9>(am=bG+*N89ktW$PTwu##UTL^fpw0>--?E)MywsFwoBLs*x?)HRe2$fC+s>oCl|F2X?{uDZ&8N@U z_eb<}wF6yi!#n(CpQ^)h-|chjBm=9+=OqGEnZCK8)|$RbrtA=tZwH}v$+DIY)jyum zk3k~HY15wuF3fDlDNFiwxN`?piWhe8ILrsU2$`T8Fn9@@{?5GvCV{T)n+*(mk5ut9 zSQ7po#Xa-g_me3otRei0JPm_F^5pa(n&4xX%vYgKarYh_{6g)i-mo8ZeXIUhb>VH9 zzVt@G89sYH+n?13&%P%EH{#a_N#=Vw*QX|qZbo}AeE17hV=*RtCGxWI#DQYC?m&0K z(7k{SNvCbQ?dl|BD25Mwe8A&LPu9|}2e_`YWni)c$C0SGS6;vio6yh(TBfj_F*f6JsUn`X^u?D&GHjvXy zbZ;OYm&vLBF4;g6oCmmgaRmFgdGKo&lbqa+Y-!=8&wm2se%xdPX7;@_5^aRpvwKX= z$T8s1{ItJc!igvJp0{E=c$}&#MfI`BYt2QAtkuEhJ&%%EqUFe)Z*g-h477yjsJ44HQW(5XGpL;?eDc1D!r}6#}1pJmJW;RLEa9;LsbL?jQw2b2eWNe}YzL>RUd4xP<~r z=RVf2{pZHKd=N_-e~N)4v79~t;cY=nEEj&{(w4+qh`bwEO59qhic|)G{pShssR~3U=SQE7Zw31}XXh39!!E zjl>X7*Ux-}tSguddklH|D#ax|pA=gjzaDx|3X5e9|K!}qk7WqctA;#QS2mjC)|wx3 zhLk%AeW6g$U%pKoDgLmE&Rv`v-%mHQB`Qz%A%Wmwf%!YDSwJ*& zL}BD$kw3F&3u@|D+tQ#aP_IrLhn!Ztj@(x}2H=qa0Gj>*O0KV1#uza zjN7g{FGG%0P{hIM166iLUhtxg0Ni2x(V;@+Yd{uLc8o70Ts_imo;5Aei-EWqafE%UabrJ2kKD;aljD%F6noUjrqv53 za6aiuszyi$hKSJqJKe;qK#>fojf#a730~6g5hnTo7kaq4|J#F zM%Es<6VF0U9LEm5eR}Tg`IqiwO@-1Oeea3@3E&>_`43-YnqyvQ;AWQ*=dD2#Fc6r^ z^URlfr><$pY)zYxiu?sPZ18@ZUdN@bms=*KW(TxPeIU>B^?|cdyf#x8j=!$Yt#rLu zGB2ihPvuU`uTA+z^(T)*Zxj+c{~oh3bgy$D?NMCBXU%_10#jVZh4J9?t&%?IR?{q^ zxcTI6x2$-xbbKbziX4){W$Hl4MbQ>0z1bsHag zzBCt+rNT%9ec>R;*zew9hTkK~6*iTRnMsSb^6++C@X_UiS9D1cptSYH9=}csa3h9& zh0KjH>a^!HrUyXDqm;|Ci&@Kxd%0*pO!F{F3?ups44Y8=>XmW%)rO*6(YKA=lecVL z7^_zS!mQcm^p#Bj$@l-1V9+Zcl0C&{s33xC-6K zCo8!Jh_~As0j~ZJ&|{a7QH|R!Hg9{db%M4>h1^)*&N9)M(#R;{vzy@j*fhU1@Bb;wP*qh~)dScTEFrG_ z*bWa72F@N4Pjy>i^g!t!(j8s|uHE(szrOeFI@L+Rr^Cbw@H=P-ARN{7P&TIGfD70h z$U_qC&UunOm}=yWu;XSJyJqYb|6_f%cdN7L!53LA&y-rqYxt%Qj0Qj4nw~Rr;v*u# z(Z`?)G}9S=-Bl}F*@KOTua+IEOnkp3X&!pK&=nP35Cs)rTa~CFuOr|5OYPCbob2`S zRY2=;fp@MnnB;En{Z?sZyf3$xv~``5v@*a;ZiCDXBp!3+%YgG}?e6c_@Y=`I>zMZM z0uHzT4A&)E-o`{FNzWHCJ(Xrf;GT|+h~yvOHxMu}C|V;)?p2cC;PXsb#duhrnCG#< zPD+z_f*#AJwi3ZRy`7=u2S9;qRjNW_gykOKVonY$lp%C$O(QyqS?;4NzsZc#_TZR& zXc>z?!k<}zXX}*R8=?rqO@?PTlL1%c%CA<>DPP^KVFsIzCL9E_J`H7}{r6zO ziXpPJ&R?#wv^Yf!nE3qxU)wdd89;?R1({CX{oZ|p9lQOcGo$ApjadL<|AE)=V%j3X z)lWnOFw(y0T44Ydg_^sQwn!`c&j~l@YKC(bXB;Nibim~5Rp?wz^Qpo=x7sK6Gq3p2 zXq5WJIIk2S74{-H$o=wdx@P9ayWVTRyTy^2V1WmUUmyRg-A{j_lJAnjpXX~`aSpUW zesmB<7Jd;LcPnsQ2HV30uQ(5mhzsN74J3CP4{^3?bi?LjfwCjHwf&WkC|Tsmru}2f z9m38OYDzKbcK7|1j{Fh{%ac$(_z;rr0-Pt+9#}HYFT`2t{NEQv|Nk}DmvjcmKPGCj T_mr~0sxM%mV~j7;vJL+q$ie`r literal 10551 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%0A=n2mv0rcNiFN0T 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 xaD1chrY1xJ40TO(%CsFL{vXwsV{HHc From 0b9ebe21dd593b9b87c6388291b79a5c5a4af4e4 Mon Sep 17 00:00:00 2001 From: Dane Springmeyer Date: Tue, 2 Oct 2012 14:12:15 -0700 Subject: [PATCH 11/11] use boost make_shared --- plugins/input/gdal/gdal_featureset.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/input/gdal/gdal_featureset.cpp b/plugins/input/gdal/gdal_featureset.cpp index d37132961..3beaa60a9 100644 --- a/plugins/input/gdal/gdal_featureset.cpp +++ b/plugins/input/gdal/gdal_featureset.cpp @@ -489,7 +489,7 @@ feature_ptr gdal_featureset::get_feature(mapnik::query const& q) image.width(), image.height(), GDT_Byte, 4, 4 * image.width()); } - feature->set_raster(mapnik::raster_ptr(new mapnik::raster(intersect, image))); + feature->set_raster(boost::make_shared(intersect, image)); } return feature; }