From 78fbc6df179e711ac7ea22fbdebaef050feb3602 Mon Sep 17 00:00:00 2001 From: artemp Date: Wed, 17 Dec 2014 14:24:58 +0100 Subject: [PATCH] expose warp_image templated method --- include/mapnik/warp.hpp | 6 ++++++ src/warp.cpp | 25 +++++++++++++++++++------ 2 files changed, 25 insertions(+), 6 deletions(-) diff --git a/include/mapnik/warp.hpp b/include/mapnik/warp.hpp index bd43307f1..262164ea7 100644 --- a/include/mapnik/warp.hpp +++ b/include/mapnik/warp.hpp @@ -26,6 +26,7 @@ // mapnik #include #include +#include namespace mapnik { @@ -39,6 +40,11 @@ MAPNIK_DECL void reproject_and_scale_raster(raster & target, unsigned mesh_size, scaling_method_e scaling_method); + +template +MAPNIK_DECL void warp_image (T & target, T const& source, proj_transform const& prj_trans, + box2d const& target_ext, box2d const& source_ext, + double offset_x, double offset_y, unsigned mesh_size, scaling_method_e scaling_method, double filter_factor); } #endif // MAPNIK_WARP_HPP diff --git a/src/warp.cpp b/src/warp.cpp index b66a5180f..787f8a58d 100644 --- a/src/warp.cpp +++ b/src/warp.cpp @@ -48,10 +48,8 @@ namespace mapnik { -namespace detail { - template -void warp_image (T & target, T const& source, proj_transform const& prj_trans, +MAPNIK_DECL void warp_image (T & target, T const& source, proj_transform const& prj_trans, box2d const& target_ext, box2d const& source_ext, double offset_x, double offset_y, unsigned mesh_size, scaling_method_e scaling_method, double filter_factor) { @@ -148,7 +146,7 @@ void warp_image (T & target, T const& source, proj_transform const& prj_trans, { using span_gen_type = typename detail::agg_scaling_traits::span_image_resample_affine; agg::image_filter_lut filter; - set_scaling_method(filter, scaling_method, filter_factor); + detail::set_scaling_method(filter, scaling_method, filter_factor); span_gen_type sg(ia, interpolator, filter); agg::render_scanlines_bin(rasterizer, scanline, rb, sa, sg); } @@ -158,6 +156,8 @@ void warp_image (T & target, T const& source, proj_transform const& prj_trans, } } +namespace detail { + struct warp_image_visitor : util::static_visitor { warp_image_visitor (raster & target_raster, proj_transform const& prj_trans, box2d const& source_ext, @@ -182,8 +182,8 @@ struct warp_image_visitor : util::static_visitor if (target_raster_.data_.template is()) { image_data_type & target = util::get(target_raster_.data_); - detail::warp_image (target, source, prj_trans_, target_raster_.ext_, source_ext_, - offset_x_, offset_y_, mesh_size_, scaling_method_, filter_factor_); + warp_image (target, source, prj_trans_, target_raster_.ext_, source_ext_, + offset_x_, offset_y_, mesh_size_, scaling_method_, filter_factor_); } } @@ -210,4 +210,17 @@ void reproject_and_scale_raster(raster & target, raster const& source, util::apply_visitor(warper, source.data_); } +template MAPNIK_DECL void warp_image (image_data_rgba8&, image_data_rgba8 const&, proj_transform const&, + box2d const&, box2d const&, double, double, unsigned, scaling_method_e, double); + +template MAPNIK_DECL void warp_image (image_data_gray8&, image_data_gray8 const&, proj_transform const&, + box2d const&, box2d const&, double, double, unsigned, scaling_method_e, double); + +template MAPNIK_DECL void warp_image (image_data_gray16&, image_data_gray16 const&, proj_transform const&, + box2d const&, box2d const&, double, double, unsigned, scaling_method_e, double); + +template MAPNIK_DECL void warp_image (image_data_gray32f&, image_data_gray32f const&, proj_transform const&, + box2d const&, box2d const&, double, double, unsigned, scaling_method_e, double); + + }// namespace mapnik