|
Boost-Commit : |
Subject: [Boost-commit] svn:boost r67652 - sandbox/gil/boost/gil/extension/io2
From: dsaritz_at_[hidden]
Date: 2011-01-04 12:35:30
Author: psiha
Date: 2011-01-04 12:35:29 EST (Tue, 04 Jan 2011)
New Revision: 67652
URL: http://svn.boost.org/trac/boost/changeset/67652
Log:
Replaced the formatted_image_traits<Impl>::view_to_native_format metaclass with the gil_to_native_format<> metafunction.
Minor compile time optimizations.
Minor other refactoring and stylistic changes.
Text files modified:
sandbox/gil/boost/gil/extension/io2/formatted_image.hpp | 48 +++++++++++++++++++++++++---------------
sandbox/gil/boost/gil/extension/io2/gp_image.hpp | 12 +++++-----
sandbox/gil/boost/gil/extension/io2/libjpeg_image.hpp | 10 ++++----
sandbox/gil/boost/gil/extension/io2/libpng_image.hpp | 15 ++++++-----
sandbox/gil/boost/gil/extension/io2/libtiff_image.hpp | 12 +++++-----
sandbox/gil/boost/gil/extension/io2/wic_image.hpp | 12 +++++-----
6 files changed, 61 insertions(+), 48 deletions(-)
Modified: sandbox/gil/boost/gil/extension/io2/formatted_image.hpp
==============================================================================
--- sandbox/gil/boost/gil/extension/io2/formatted_image.hpp (original)
+++ sandbox/gil/boost/gil/extension/io2/formatted_image.hpp 2011-01-04 12:35:29 EST (Tue, 04 Jan 2011)
@@ -508,6 +508,14 @@
template <class Impl>
class formatted_image : public formatted_image_base
{
+private:
+ template <typename T> struct gil_to_native_format;
+
+ template <typename PixelType, typename IsPlanar>
+ struct gil_to_native_format_aux
+ : formatted_image_traits<Impl>::gil_to_native_format:: BOOST_NESTED_TEMPLATE apply<PixelType, IsPlanar::value>::type
+ {};
+
public:
typedef typename formatted_image_traits<Impl>::format_t format_t;
@@ -515,9 +523,16 @@
typedef typename formatted_image_traits<Impl>::roi_t roi;
typedef typename roi::offset_t offset_t;
- typedef any_image<supported_pixel_formats> dynamic_image_t;
- typedef typename dynamic_image_t::const_view_t const_view_t;
- typedef typename dynamic_image_t:: view_t view_t;
+ template <typename PixelType, typename IsPlanar>
+ struct gil_to_native_format<mpl::pair<PixelType, IsPlanar > > : gil_to_native_format_aux<PixelType, IsPlanar> {};
+
+ template <typename PixelType, bool IsPlanar>
+ struct gil_to_native_format<image<PixelType, IsPlanar> > : gil_to_native_format_aux<PixelType, mpl::bool_<IsPlanar> > {};
+
+ template <typename Locator>
+ struct gil_to_native_format<image_view<Locator> > : gil_to_native_format_aux<typename image_view<Locator>::value_type, is_planar<image_view<Locator> > > {};
+
+ typedef any_image<supported_pixel_formats> dynamic_image_t;
template <typename Source>
struct reader_for
@@ -554,12 +569,12 @@
public:
typedef typename base_writer_t::wrapper
- <
- first_layer_wrapper,
- Target,
- typename formatted_image_traits<Impl>::writer_view_data_t,
- default_format
- > type;
+ <
+ first_layer_wrapper,
+ Target,
+ typename formatted_image_traits<Impl>::writer_view_data_t,
+ default_format
+ > type;
};
BOOST_STATIC_CONSTANT( bool, has_full_roi = (is_same<roi::offset_t, roi::point_t>::value) );
@@ -614,7 +629,7 @@
struct write_is_supported
{
- template<typename View>
+ template <typename View>
struct apply : public is_supported<View> {};
};
@@ -627,10 +642,8 @@
template <typename ImageIndex>
void operator()( ImageIndex )
{
- format_t const image_format
- (
- formatted_image_traits<Impl>::view_to_native_format::apply<typename mpl::at<supported_pixel_formats, ImageIndex>::type::view_t>::value
- );
+ typedef typename mpl::at<supported_pixel_formats, ImageIndex>::type pixel_format_t;
+ format_t const image_format( gil_to_native_format<pixel_format_t>::value );
if ( image_format == this->format_ )
{
BOOST_ASSERT( image_id_ == -1 );
@@ -638,7 +651,7 @@
}
}
- format_t /*const*/ format_;
+ format_t const format_ ;
unsigned int image_id_;
private:
@@ -671,7 +684,7 @@
template <typename View>
bool formats_mismatch() const
{
- return formats_mismatch( formatted_image_traits<Impl>::view_to_native_format:: BOOST_NESTED_TEMPLATE apply<get_original_view_t<View>::type>::value );
+ return formats_mismatch( gil_to_native_format<get_original_view_t<View>::type>::value );
}
bool formats_mismatch( typename formatted_image_traits<Impl>::format_t const other_format ) const
@@ -820,8 +833,7 @@
template <typename Images, typename dimensions_policy, typename formats_policy>
void copy_to_image( any_image<Images> & im ) const
{
- typedef mpl::range_c<std::size_t, 0, typename Impl::supported_pixel_formats> valid_range_t;
- switch_<valid_range_t>
+ switch_<valid_type_id_range_t>
(
impl().current_image_format_id(),
read_dynamic_image<Images, dimensions_policy, formats_policy>( im, *this ),
Modified: sandbox/gil/boost/gil/extension/io2/gp_image.hpp
==============================================================================
--- sandbox/gil/boost/gil/extension/io2/gp_image.hpp (original)
+++ sandbox/gil/boost/gil/extension/io2/gp_image.hpp 2011-01-04 12:35:29 EST (Tue, 04 Jan 2011)
@@ -93,8 +93,8 @@
struct view_gp_format
{
- template <class View>
- struct apply : gil_to_gp_format<typename View::value_type, is_planar<View>::value> {};
+ template <typename Pixel, bool IsPlanar>
+ struct apply : gil_to_gp_format<Pixel, IsPlanar> {};
};
@@ -274,10 +274,10 @@
typedef detail::gp_roi roi_t;
- typedef detail::view_gp_format view_to_native_format;
+ typedef detail::view_gp_format gil_to_native_format;
- template <class View>
- struct is_supported : detail::is_supported<view_to_native_format::apply<View>::value> {};
+ template <typename Pixel, bool IsPlanar>
+ struct is_supported : detail::is_supported<gil_to_native_format:: BOOST_NESTED_TEMPLATE apply<Pixel, IsPlanar>::value> {};
typedef mpl::map5
<
@@ -329,7 +329,7 @@
Width = view.width();
Height = view.height();
Stride = view.pixels().row_size();
- PixelFormat = view_to_native_format::apply<View>::value;
+ PixelFormat = gil_to_native_format<View>::value;
Scan0 = formatted_image_base::get_raw_data( view );
Reserved = 0;
}
Modified: sandbox/gil/boost/gil/extension/io2/libjpeg_image.hpp
==============================================================================
--- sandbox/gil/boost/gil/extension/io2/libjpeg_image.hpp (original)
+++ sandbox/gil/boost/gil/extension/io2/libjpeg_image.hpp 2011-01-04 12:35:29 EST (Tue, 04 Jan 2011)
@@ -56,8 +56,8 @@
struct view_libjpeg_format
{
- template <class View>
- struct apply : gil_to_libjpeg_format<typename View::value_type, is_planar<View>::value> {};
+ template <typename Pixel, bool IsPlanar>
+ struct apply : gil_to_libjpeg_format<Pixel, IsPlanar> {};
};
@@ -417,11 +417,11 @@
typedef ::J_COLOR_SPACE format_t;
typedef detail::libjpeg_supported_pixel_formats supported_pixel_formats_t;
typedef detail::libjpeg_roi roi_t;
- typedef detail::view_libjpeg_format view_to_native_format;
+ typedef detail::view_libjpeg_format gil_to_native_format;
typedef detail::view_data_t view_data_t;
- template <class View>
- struct is_supported : mpl::bool_<view_to_native_format::apply<View>::value != JCS_UNKNOWN> {};
+ template <typename Pixel, bool IsPlanar>
+ struct is_supported : mpl::bool_<gil_to_native_format::apply<Pixel, IsPlanar>::value != JCS_UNKNOWN> {};
typedef mpl::map3
<
Modified: sandbox/gil/boost/gil/extension/io2/libpng_image.hpp
==============================================================================
--- sandbox/gil/boost/gil/extension/io2/libpng_image.hpp (original)
+++ sandbox/gil/boost/gil/extension/io2/libpng_image.hpp 2011-01-04 12:35:29 EST (Tue, 04 Jan 2011)
@@ -56,13 +56,13 @@
struct view_libpng_format
{
- template <class View>
- struct apply : gil_to_libpng_format<typename View::value_type, is_planar<View>::value> {};
+ template <typename Pixel, bool IsPlanar>
+ struct apply : gil_to_libpng_format<Pixel, IsPlanar> {};
};
-template <class View>
-struct is_view_supported : mpl::bool_<view_libpng_format::apply<View>::value != -1> {};
+template <typename Pixel, bool IsPlanar>
+struct is_view_supported : mpl::bool_<view_libpng_format::apply<Pixel, IsPlanar>::value != -1> {};
typedef mpl::vector6
@@ -386,11 +386,11 @@
typedef int format_t;
typedef detail::libpng_supported_pixel_formats supported_pixel_formats_t;
typedef detail::libpng_roi roi_t;
- typedef detail::view_libpng_format view_to_native_format;
+ typedef detail::view_libpng_format gil_to_native_format;
typedef detail::libpng_view_data_t view_data_t;
- template <class View>
- struct is_supported : detail::is_view_supported<View> {};
+ template <typename Pixel, bool IsPlanar>
+ struct is_supported : detail::is_view_supported<Pixel, IsPlanar> {};
typedef mpl::map3
<
@@ -588,6 +588,7 @@
else
if ( colour_type == PNG_COLOR_TYPE_GRAY && bit_depth < 8 )
::png_set_expand_gray_1_2_4_to_8( &png_object() );
+
if ( ::png_get_valid( &png_object(), &info_object(), PNG_INFO_tRNS ) )
::png_set_tRNS_to_alpha( &png_object() );
Modified: sandbox/gil/boost/gil/extension/io2/libtiff_image.hpp
==============================================================================
--- sandbox/gil/boost/gil/extension/io2/libtiff_image.hpp (original)
+++ sandbox/gil/boost/gil/extension/io2/libtiff_image.hpp 2011-01-04 12:35:29 EST (Tue, 04 Jan 2011)
@@ -118,8 +118,8 @@
struct view_libtiff_format
{
- template <class View>
- struct apply : gil_to_libtiff_format<typename View::value_type, is_planar<View>::value> {};
+ template <typename Pixel, bool IsPlanar>
+ struct apply : gil_to_libtiff_format<Pixel, IsPlanar> {};
};
@@ -265,7 +265,7 @@
stride_ ( view.pixels().row_size() ),
offset_ ( offset )
#ifdef _DEBUG
- ,format_id_( view_libtiff_format::apply<View>::value )
+ ,format_id_( view_libtiff_format::apply<typename View::value_type, is_planar<View>::value>::value )
#endif
{
set_buffers( view, is_planar<View>() );
@@ -485,7 +485,7 @@
typedef detail::generic_vertical_roi roi_t;
- typedef detail::view_libtiff_format view_to_native_format;
+ typedef detail::view_libtiff_format gil_to_native_format;
typedef detail::tiff_view_data_t view_data_t;
@@ -508,8 +508,8 @@
typedef detail::tiff_writer_view_data_t writer_view_data_t;
- BOOST_STATIC_CONSTANT( unsigned int, desired_alignment = sizeof( void *) );
- BOOST_STATIC_CONSTANT( bool , builtin_conversion = false );
+ BOOST_STATIC_CONSTANT( unsigned int, desired_alignment = sizeof( void * ) );
+ BOOST_STATIC_CONSTANT( bool , builtin_conversion = false );
};
Modified: sandbox/gil/boost/gil/extension/io2/wic_image.hpp
==============================================================================
--- sandbox/gil/boost/gil/extension/io2/wic_image.hpp (original)
+++ sandbox/gil/boost/gil/extension/io2/wic_image.hpp 2011-01-04 12:35:29 EST (Tue, 04 Jan 2011)
@@ -102,8 +102,8 @@
struct view_wic_format
{
- template <class View>
- struct apply : gil_to_wic_format<typename View::value_type, is_planar<View>::value> {};
+ template <typename Pixel, bool IsPlanar>
+ struct apply : gil_to_wic_format<Pixel, IsPlanar> {};
};
@@ -152,7 +152,7 @@
wic_view_data_t( View const & view )
:
p_roi_ ( 0 ),
- format_( view_wic_format::apply<View>::value )
+ format_( view_wic_format::apply<typename View::value_type, is_planar<View>::value>::value )
{
set_bitmapdata_for_view( view );
}
@@ -295,16 +295,16 @@
typedef detail::wic_roi roi_t;
- typedef detail::view_wic_format view_to_native_format;
+ typedef detail::view_wic_format gil_to_native_format;
- template <class View>
+ template <typename Pixel, bool IsPlanar>
struct is_supported
:
mpl::not_
<
is_same
<
- typename view_to_native_format::apply<View>::type,
+ typename gil_to_native_format:: BOOST_NESTED_TEMPLATE apply<Pixel, IsPlanar>::type,
//format_guid<wic_format >,
detail::format_guid<GUID_WICPixelFormatUndefined>
>
Boost-Commit list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk