add boost on mac
This commit is contained in:
105
macx64/include/boost/gil/io/conversion_policies.hpp
Normal file
105
macx64/include/boost/gil/io/conversion_policies.hpp
Normal file
@@ -0,0 +1,105 @@
|
||||
//
|
||||
// Copyright 2007-2008 Christian Henning, Andreas Pokorny
|
||||
//
|
||||
// Distributed under the Boost Software License, Version 1.0
|
||||
// See accompanying file LICENSE_1_0.txt or copy at
|
||||
// http://www.boost.org/LICENSE_1_0.txt
|
||||
//
|
||||
#ifndef BOOST_GIL_IO_CONVERSION_POLICIES_HPP
|
||||
#define BOOST_GIL_IO_CONVERSION_POLICIES_HPP
|
||||
|
||||
#include <boost/gil/image_view_factory.hpp>
|
||||
#include <boost/gil/io/error.hpp>
|
||||
|
||||
#include <algorithm>
|
||||
#include <iterator>
|
||||
#include <type_traits>
|
||||
|
||||
namespace boost{namespace gil{ namespace detail {
|
||||
|
||||
struct read_and_no_convert
|
||||
{
|
||||
public:
|
||||
using color_converter_type = void *;
|
||||
|
||||
template <typename InIterator, typename OutIterator>
|
||||
void read(
|
||||
InIterator const& /*begin*/, InIterator const& /*end*/ , OutIterator /*out*/,
|
||||
typename std::enable_if
|
||||
<
|
||||
mpl::not_
|
||||
<
|
||||
pixels_are_compatible
|
||||
<
|
||||
typename std::iterator_traits<InIterator>::value_type,
|
||||
typename std::iterator_traits<OutIterator>::value_type
|
||||
>
|
||||
>::value
|
||||
>::type* /*dummy*/ = nullptr)
|
||||
{
|
||||
io_error("Data cannot be copied because the pixels are incompatible.");
|
||||
}
|
||||
|
||||
template <typename InIterator, typename OutIterator>
|
||||
void read(InIterator const& begin, InIterator const& end, OutIterator out,
|
||||
typename std::enable_if
|
||||
<
|
||||
pixels_are_compatible
|
||||
<
|
||||
typename std::iterator_traits<InIterator>::value_type,
|
||||
typename std::iterator_traits<OutIterator>::value_type
|
||||
>::value
|
||||
>::type* /*dummy*/ = nullptr)
|
||||
{
|
||||
std::copy(begin, end, out);
|
||||
}
|
||||
};
|
||||
|
||||
template<typename CC>
|
||||
struct read_and_convert
|
||||
{
|
||||
public:
|
||||
using color_converter_type = default_color_converter;
|
||||
CC _cc;
|
||||
|
||||
read_and_convert()
|
||||
{}
|
||||
|
||||
read_and_convert( const color_converter_type& cc )
|
||||
: _cc( cc )
|
||||
{}
|
||||
|
||||
template< typename InIterator
|
||||
, typename OutIterator
|
||||
>
|
||||
void read( const InIterator& begin
|
||||
, const InIterator& end
|
||||
, OutIterator out
|
||||
)
|
||||
{
|
||||
using deref_t = color_convert_deref_fn<typename std::iterator_traits<InIterator>::reference
|
||||
, typename std::iterator_traits<OutIterator>::value_type //reference?
|
||||
, CC
|
||||
>;
|
||||
|
||||
std::transform( begin
|
||||
, end
|
||||
, out
|
||||
, deref_t( _cc )
|
||||
);
|
||||
}
|
||||
};
|
||||
|
||||
/// is_read_only metafunction
|
||||
/// \brief Determines if reader type is read only ( no conversion ).
|
||||
template< typename Conversion_Policy >
|
||||
struct is_read_only : mpl::false_ {};
|
||||
|
||||
template<>
|
||||
struct is_read_only< detail::read_and_no_convert > : mpl::true_ {};
|
||||
|
||||
} // namespace detail
|
||||
} // namespace gil
|
||||
} // namespace boost
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user