Boost  v1.57.0
doxygen for www.boost.org
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
channel_convert

Converting from one channel type to anotherConversion is done as a simple linear mapping of one channel range to the other, such that the minimum/maximum value of the source maps to the minimum/maximum value of the destination. More...

Collaboration diagram for channel_convert:

Modules

 channel_converter_unsigned
 Convert one unsigned/floating point channel to another.
 

Classes

struct  boost::gil::channel_converter< SrcChannelV, DstChannelV >
 A unary function object converting between channel types. More...
 
struct  boost::gil::default_channel_converter
 Same as channel_converter, except it takes the destination channel by reference, which allows us to move the templates from the class level to the method level. More...
 

Functions

template<typename DstChannel , typename SrcChannel >
channel_traits< DstChannel >
::value_type 
boost::gil::channel_convert (const SrcChannel &src)
 Converting from one channel type to another. More...
 

Detailed Description

Converting from one channel type to another

Conversion is done as a simple linear mapping of one channel range to the other, such that the minimum/maximum value of the source maps to the minimum/maximum value of the destination.

One implication of this is that the value 0 of signed channels may not be preserved!

When creating new channel models, it is often a good idea to provide specializations for the channel conversion algorithms, for example, for performance optimizations. If the new model is an integral type that can be signed, it is easier to define the conversion only for the unsigned type (channel_converter_unsigned) and provide specializations of detail::channel_convert_to_unsigned and detail::channel_convert_from_unsigned to convert between the signed and unsigned type.

Example:

// bits32f is a floating point channel with range [0.0f ... 1.0f]
assert(src_channel == 1);
// bits8 is 8-bit unsigned integral channel (typedef-ed from unsigned char)
bits8 dst_channel = channel_convert<bits8>(src_channel);
assert(dst_channel == 255); // max value goes to max value

Function Documentation

template<typename DstChannel , typename SrcChannel >
channel_traits<DstChannel>::value_type boost::gil::channel_convert ( const SrcChannel &  src)
inline

#include <boost_1_57_0/boost/gil/channel_algorithm.hpp>

Converting from one channel type to another.