More stuff to break it all
This commit is contained in:
parent
a3f6a989de
commit
6df688160c
5 changed files with 92 additions and 44 deletions
|
@ -112,6 +112,10 @@ public:
|
||||||
{
|
{
|
||||||
return data_.getBytes();
|
return data_.getBytes();
|
||||||
}
|
}
|
||||||
|
inline const unsigned char* getBytes() const
|
||||||
|
{
|
||||||
|
return data_.getBytes();
|
||||||
|
}
|
||||||
|
|
||||||
inline unsigned char* raw_data()
|
inline unsigned char* raw_data()
|
||||||
{
|
{
|
||||||
|
|
|
@ -24,6 +24,8 @@
|
||||||
#define MAPNIK_IMAGE_DATA_ANY_HPP
|
#define MAPNIK_IMAGE_DATA_ANY_HPP
|
||||||
|
|
||||||
#include <mapnik/image_data.hpp>
|
#include <mapnik/image_data.hpp>
|
||||||
|
#include <mapnik/image_view.hpp>
|
||||||
|
#include <mapnik/graphics.hpp>
|
||||||
#include <mapnik/util/variant.hpp>
|
#include <mapnik/util/variant.hpp>
|
||||||
|
|
||||||
namespace mapnik {
|
namespace mapnik {
|
||||||
|
@ -36,18 +38,27 @@ struct image_data_null
|
||||||
std::size_t height() const { return 0; }
|
std::size_t height() const { return 0; }
|
||||||
};
|
};
|
||||||
|
|
||||||
using image_data_base = util::variant<image_data_null, image_data_rgba8, image_data_gray8, image_data_gray16, image_data_gray32f>;
|
using image_data_base = util::variant<image_data_null,
|
||||||
|
image_data_rgba8,
|
||||||
|
image_data_gray8,
|
||||||
|
image_data_gray16,
|
||||||
|
image_data_gray32f,
|
||||||
|
image_32,
|
||||||
|
image_view<image_data_rgba8>,
|
||||||
|
image_view<image_data_gray8>,
|
||||||
|
image_view<image_data_gray16>,
|
||||||
|
image_view<image_data_gray32f>>;
|
||||||
|
|
||||||
namespace detail {
|
namespace detail {
|
||||||
|
|
||||||
struct get_bytes_visitor : util::static_visitor<unsigned char*>
|
/*struct get_bytes_visitor : util::static_visitor<unsigned char*>
|
||||||
{
|
{
|
||||||
template <typename T>
|
template <typename T>
|
||||||
unsigned char* operator()(T & data)
|
unsigned char* operator()(T & data)
|
||||||
{
|
{
|
||||||
return data.getBytes();
|
return data.getBytes();
|
||||||
}
|
}
|
||||||
};
|
};*/
|
||||||
|
|
||||||
struct get_bytes_visitor_const : util::static_visitor<unsigned char const*>
|
struct get_bytes_visitor_const : util::static_visitor<unsigned char const*>
|
||||||
{
|
{
|
||||||
|
@ -91,10 +102,10 @@ struct image_data_any : image_data_base
|
||||||
return util::apply_visitor(detail::get_bytes_visitor_const(),*this);
|
return util::apply_visitor(detail::get_bytes_visitor_const(),*this);
|
||||||
}
|
}
|
||||||
|
|
||||||
unsigned char* getBytes()
|
/*unsigned char* getBytes()
|
||||||
{
|
{
|
||||||
return util::apply_visitor(detail::get_bytes_visitor(),*this);
|
return util::apply_visitor(detail::get_bytes_visitor(),*this);
|
||||||
}
|
}*/
|
||||||
|
|
||||||
std::size_t width() const
|
std::size_t width() const
|
||||||
{
|
{
|
||||||
|
|
|
@ -109,18 +109,18 @@ public:
|
||||||
{
|
{
|
||||||
return data_.getBytes();
|
return data_.getBytes();
|
||||||
}
|
}
|
||||||
inline T& data()
|
/*inline T& data()
|
||||||
{
|
{
|
||||||
return data_;
|
return data_;
|
||||||
}
|
}*/
|
||||||
inline T const& data() const
|
inline T const& data() const
|
||||||
{
|
{
|
||||||
return data_;
|
return data_;
|
||||||
}
|
}
|
||||||
inline pixel_type* getData()
|
/*inline pixel_type* getData()
|
||||||
{
|
{
|
||||||
return data_.getData();
|
return data_.getData();
|
||||||
}
|
}*/
|
||||||
inline const pixel_type* getData() const
|
inline const pixel_type* getData() const
|
||||||
{
|
{
|
||||||
return data_.getData();
|
return data_.getData();
|
||||||
|
|
|
@ -528,23 +528,6 @@ void handle_webp_options(std::string const& type,
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
template <typename T>
|
|
||||||
void save_to_stream(image_view<T> const& image,
|
|
||||||
std::ostream & stream,
|
|
||||||
std::string const& type,
|
|
||||||
rgba_palette_ptr const& palette)
|
|
||||||
{
|
|
||||||
save_to_stream(image.data(), stream, type, palette);
|
|
||||||
}
|
|
||||||
|
|
||||||
void save_to_stream(image_32 const& image,
|
|
||||||
std::ostream & stream,
|
|
||||||
std::string const& type,
|
|
||||||
rgba_palette_ptr const& palette)
|
|
||||||
{
|
|
||||||
save_to_stream(image.data(), stream, type, palette);
|
|
||||||
}
|
|
||||||
|
|
||||||
void save_to_stream(image_data_any const& image,
|
void save_to_stream(image_data_any const& image,
|
||||||
std::ostream & stream,
|
std::ostream & stream,
|
||||||
std::string const& type,
|
std::string const& type,
|
||||||
|
@ -571,21 +554,6 @@ void save_to_stream(image_data_any const& image,
|
||||||
else throw ImageWriterException("Could not write to empty stream" );
|
else throw ImageWriterException("Could not write to empty stream" );
|
||||||
}
|
}
|
||||||
|
|
||||||
template <typename T>
|
|
||||||
void save_to_stream(image_view<T> const& image,
|
|
||||||
std::ostream & stream,
|
|
||||||
std::string const& type)
|
|
||||||
{
|
|
||||||
save_to_stream(image.data(), stream, type);
|
|
||||||
}
|
|
||||||
|
|
||||||
void save_to_stream(image_32 const& image,
|
|
||||||
std::ostream & stream,
|
|
||||||
std::string const& type)
|
|
||||||
{
|
|
||||||
save_to_stream(image.data(), stream, type);
|
|
||||||
}
|
|
||||||
|
|
||||||
void save_to_stream(image_data_any const& image,
|
void save_to_stream(image_data_any const& image,
|
||||||
std::ostream & stream,
|
std::ostream & stream,
|
||||||
std::string const& type)
|
std::string const& type)
|
||||||
|
|
|
@ -176,7 +176,7 @@ void handle_png_options(std::string const& type,
|
||||||
png_saver::png_saver(std::ostream & stream, std::string const& t, rgba_palette_ptr const& pal):
|
png_saver::png_saver(std::ostream & stream, std::string const& t, rgba_palette_ptr const& pal):
|
||||||
_stream(stream), _t(t), _pal(pal) {}
|
_stream(stream), _t(t), _pal(pal) {}
|
||||||
|
|
||||||
void png_saver::operator() (mapnik::image_data_rgba8 const& image) const
|
void png_saver::operator() (image_data_rgba8 const& image) const
|
||||||
{
|
{
|
||||||
#if defined(HAVE_PNG)
|
#if defined(HAVE_PNG)
|
||||||
png_options opts;
|
png_options opts;
|
||||||
|
@ -207,7 +207,38 @@ void png_saver::operator() (mapnik::image_data_rgba8 const& image) const
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void png_saver::operator() (mapnik::image_data_gray8 const& image) const
|
void png_saver::operator() (image_view<image_data_rgba8> const& image) const
|
||||||
|
{
|
||||||
|
#if defined(HAVE_PNG)
|
||||||
|
png_options opts;
|
||||||
|
handle_png_options(_t, opts);
|
||||||
|
if (_pal && _pal->valid())
|
||||||
|
{
|
||||||
|
png_options opts;
|
||||||
|
handle_png_options(t,opts);
|
||||||
|
save_as_png8_pal(stream, image, _pal, opts);
|
||||||
|
}
|
||||||
|
else if (opts.paletted)
|
||||||
|
{
|
||||||
|
if (opts.use_hextree)
|
||||||
|
{
|
||||||
|
save_as_png8_hex(_stream, image, opts);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
save_as_png8_oct(_stream, image, opts);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
save_as_png(_stream, image, opts);
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
throw ImageWriterException("png output is not enabled in your build of Mapnik");
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
void png_saver::operator() (image_data_gray8 const& image) const
|
||||||
{
|
{
|
||||||
#if defined(HAVE_PNG)
|
#if defined(HAVE_PNG)
|
||||||
png_options opts;
|
png_options opts;
|
||||||
|
@ -218,7 +249,29 @@ void png_saver::operator() (mapnik::image_data_gray8 const& image) const
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void png_saver::operator() (mapnik::image_data_gray16 const& image) const
|
void png_saver::operator() (image_view<image_data_gray8> const& image) const
|
||||||
|
{
|
||||||
|
#if defined(HAVE_PNG)
|
||||||
|
png_options opts;
|
||||||
|
handle_png_options(_t, opts);
|
||||||
|
save_as_png(_stream, image, opts);
|
||||||
|
#else
|
||||||
|
throw ImageWriterException("png output is not enabled in your build of Mapnik");
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
void png_saver::operator() (image_data_gray16 const& image) const
|
||||||
|
{
|
||||||
|
#if defined(HAVE_PNG)
|
||||||
|
png_options opts;
|
||||||
|
handle_png_options(_t, opts);
|
||||||
|
save_as_png(_stream, image, opts);
|
||||||
|
#else
|
||||||
|
throw ImageWriterException("png output is not enabled in your build of Mapnik");
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
void png_saver::operator() (image_view<image_data_gray16> const& image) const
|
||||||
{
|
{
|
||||||
#if defined(HAVE_PNG)
|
#if defined(HAVE_PNG)
|
||||||
png_options opts;
|
png_options opts;
|
||||||
|
@ -239,3 +292,15 @@ void png_saver::operator() (mapnik::image_data_gray32f const& image) const
|
||||||
throw ImageWriterException("png output is not enabled in your build of Mapnik");
|
throw ImageWriterException("png output is not enabled in your build of Mapnik");
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
void png_saver::operator() (mapnik::image_data_gray32f const& image) const
|
||||||
|
{
|
||||||
|
#if defined(HAVE_PNG)
|
||||||
|
png_options opts;
|
||||||
|
handle_png_options(_t, opts);
|
||||||
|
save_as_png(_stream, image, opts);
|
||||||
|
#else
|
||||||
|
throw ImageWriterException("png output is not enabled in your build of Mapnik");
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
} // end ns
|
||||||
|
|
Loading…
Reference in a new issue