inline void memunit_advance( planar_pixel_iterator< ChannelPtr, ColorSpace >& p , typename memunit_2_step_fn< planar_pixel_iterator< ChannelPtr, ColorSpace > >::difference_type diff ) { typedef planar_pixel_iterator< ChannelPtr, ColorSpace > pixel_t; BOOST_STATIC_ASSERT(( gil::num_channels< pixel_t >::value == 3 )); memunit_advance( gil::at_c< 0 >( p ), diff.first ); memunit_advance( gil::at_c< 1 >( p ), diff.second ); memunit_advance( gil::at_c< 2 >( p ), diff.second ); }
inline planar_frame_iterator<IC,C> memunit_advanced ( const planar_frame_iterator<IC,C>& p, std::ptrdiff_t diff) { planar_frame_iterator<IC,C> ret = p; memunit_advance (ret, diff); return ret; }
inline planar_pixel_iterator< ChannelPtr, ColorSpace > memunit_advanced( const planar_pixel_iterator< ChannelPtr, ColorSpace >& p , const typename memunit_2_step_fn< planar_pixel_iterator< ChannelPtr, ColorSpace > >::difference_type& diff ) { typedef planar_pixel_iterator< ChannelPtr, ColorSpace > iterator_t; BOOST_STATIC_ASSERT(( gil::num_channels< iterator_t >::value == 3 )); pixel_t ret = p; memunit_advance(ret, diff); return ret; }
inline planar_pixel_reference< typename std::iterator_traits< ChannelPtr >::reference , ColorSpace > memunit_advanced_ref( const planar_pixel_iterator<ChannelPtr,ColorSpace>& ptr , const typename memunit_2_step_fn< planar_pixel_iterator< ChannelPtr, ColorSpace > >::difference_type& diff ) { typedef planar_pixel_iterator< ChannelPtr, ColorSpace > iterator_t; typedef planar_pixel_reference< typename std::iterator_traits< ChannelPtr >::reference , ColorSpace > reference_t; BOOST_STATIC_ASSERT(( gil::num_channels< iterator_t >::value == 3 )); iterator_t it( ptr ); memunit_advance( it, diff ); return reference_t( gil::at_c< 0 >( it ) , gil::at_c< 1 >( it ) , gil::at_c< 2 >( it ) ); }