From 9df4deac73fca4c508a6f2dfd0dd03d680e8b73e Mon Sep 17 00:00:00 2001 From: Dane Springmeyer Date: Thu, 19 Sep 2013 19:41:46 -0700 Subject: [PATCH] consistent use of agg::rgba8_pre to construct premultiplied colors - refs #2011 --- src/agg/agg_renderer.cpp | 2 +- src/agg/process_line_pattern_symbolizer.cpp | 10 +- ...er-opacity-512-512-1.0-grid-reference.json | 144 ++++++++++++++++++ ...izer-opacity-512-512-1.0-agg-reference.png | Bin 0 -> 10664 bytes ...izer-opacity-512-512-2.0-agg-reference.png | Bin 0 -> 10664 bytes .../line-pattern-symbolizer-opacity.xml | 21 +++ tests/visual_tests/test.py | 1 + 7 files changed, 171 insertions(+), 7 deletions(-) create mode 100644 tests/visual_tests/grids/line-pattern-symbolizer-opacity-512-512-1.0-grid-reference.json create mode 100644 tests/visual_tests/images/line-pattern-symbolizer-opacity-512-512-1.0-agg-reference.png create mode 100644 tests/visual_tests/images/line-pattern-symbolizer-opacity-512-512-2.0-agg-reference.png create mode 100644 tests/visual_tests/styles/line-pattern-symbolizer-opacity.xml diff --git a/src/agg/agg_renderer.cpp b/src/agg/agg_renderer.cpp index 8bfd79c4a..0c3367496 100644 --- a/src/agg/agg_renderer.cpp +++ b/src/agg/agg_renderer.cpp @@ -455,7 +455,7 @@ void agg_renderer::debug_draw_box(R& buf, box2d const& box, // render the outline ras_ptr->reset(); ras_ptr->add_path(sbox); - ren.color(agg::rgba8(0x33, 0x33, 0xff, 0xcc)); // blue is fine + ren.color(agg::rgba8_pre(0x33, 0x33, 0xff, 0xcc)); // blue is fine agg::render_scanlines(*ras_ptr, sl_line, ren); } diff --git a/src/agg/process_line_pattern_symbolizer.cpp b/src/agg/process_line_pattern_symbolizer.cpp index 80c29f421..fd18d4242 100644 --- a/src/agg/process_line_pattern_symbolizer.cpp +++ b/src/agg/process_line_pattern_symbolizer.cpp @@ -60,18 +60,18 @@ public: pattern_source(mapnik::image_data_32 const& pattern) : pattern_(pattern) {} - unsigned int width() const + inline unsigned int width() const { return pattern_.width(); } - unsigned int height() const + inline unsigned int height() const { return pattern_.height(); } - agg::rgba8 pixel(int x, int y) const + inline agg::rgba8 pixel(int x, int y) const { unsigned c = pattern_(x,y); - return agg::rgba8(c & 0xff, + return agg::rgba8_pre(c & 0xff, (c >> 8) & 0xff, (c >> 16) & 0xff, (c >> 24) & 0xff); @@ -107,12 +107,10 @@ void agg_renderer::process(line_pattern_symbolizer const& sym, if (!(*mark)->is_bitmap()) { MAPNIK_LOG_DEBUG(agg_renderer) << "agg_renderer: Only images (not '" << filename << "') are supported in the line_pattern_symbolizer"; - return; } boost::optional pat = (*mark)->get_bitmap_data(); - if (!pat) return; agg::rendering_buffer buf(current_buffer_->raw_data(),current_buffer_->width(),current_buffer_->height(), current_buffer_->width() * 4); diff --git a/tests/visual_tests/grids/line-pattern-symbolizer-opacity-512-512-1.0-grid-reference.json b/tests/visual_tests/grids/line-pattern-symbolizer-opacity-512-512-1.0-grid-reference.json new file mode 100644 index 000000000..1efa6d583 --- /dev/null +++ b/tests/visual_tests/grids/line-pattern-symbolizer-opacity-512-512-1.0-grid-reference.json @@ -0,0 +1,144 @@ +{ + "keys": [ + "", + "4", + "3", + "2", + "1", + "8", + "7", + "6", + "5" + ], + "data": {}, + "grid": [ + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " !!!!!!!! ##### ##### $$$$$$$$$$ %%%%%%%%% ", + " !! !! ### ## $$ $$ %% %% ", + " !! ! # # $$ $$ %% %% ", + " !! !! # # $$ $ % % ", + " ! !! # # $ $ % % ", + " ! ! # # $ $ % %", + "! ! # $ $ % ", + "! ! # $ $ % ", + "&&&&&&&&&&&&&&&&&&&&&&&&&& ''''''''''''''''''''''# (((((((((((((((((((((((((( )))))))))))))))))))))))))", + "! ! $ $ % ", + "! ! # # $ $ % %", + " ! ! ## # $ $ %% %", + " !! ! # # $ $ % % ", + " !! !! ## ## $ $ %% % ", + " ! ! ## # $$ $$ %% %% ", + " !!! !!! ### ### $$$ $$ %%% %% ", + " !!!!!!!!!! ##### $$$$$$$$ %%%%%%%% ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ] +} \ No newline at end of file diff --git a/tests/visual_tests/images/line-pattern-symbolizer-opacity-512-512-1.0-agg-reference.png b/tests/visual_tests/images/line-pattern-symbolizer-opacity-512-512-1.0-agg-reference.png new file mode 100644 index 0000000000000000000000000000000000000000..8a8f5d50d92dd6588844ed4eb4e0de12d1f00d2e GIT binary patch literal 10664 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 R8qB~1?jY3_D&#GK{}103J4pZl literal 0 HcmV?d00001 diff --git a/tests/visual_tests/images/line-pattern-symbolizer-opacity-512-512-2.0-agg-reference.png b/tests/visual_tests/images/line-pattern-symbolizer-opacity-512-512-2.0-agg-reference.png new file mode 100644 index 0000000000000000000000000000000000000000..8a8f5d50d92dd6588844ed4eb4e0de12d1f00d2e GIT binary patch literal 10664 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 R8qB~1?jY3_D&#GK{}103J4pZl literal 0 HcmV?d00001 diff --git a/tests/visual_tests/styles/line-pattern-symbolizer-opacity.xml b/tests/visual_tests/styles/line-pattern-symbolizer-opacity.xml new file mode 100644 index 000000000..82a92fb2a --- /dev/null +++ b/tests/visual_tests/styles/line-pattern-symbolizer-opacity.xml @@ -0,0 +1,21 @@ + + + My Style + + csv + ../data/line-offset.csv + + + + + + diff --git a/tests/visual_tests/test.py b/tests/visual_tests/test.py index 38615ea48..d8676c416 100755 --- a/tests/visual_tests/test.py +++ b/tests/visual_tests/test.py @@ -172,6 +172,7 @@ files = { 'marker-path-expression':{}, 'map-background-image-compositing':{'sizes':[(512,512)]}, 'building-symbolizer-opacity':{'sizes':[(512,512)]}, + 'line-pattern-symbolizer-opacity':{'sizes':[(512,512)]} } class Reporting: