inline typename memunit_2_step_fn< planar_pixel_iterator< ChannelPtr, ColorSpace > >::difference_type memunit_distance( const planar_pixel_iterator< ChannelPtr, ColorSpace >& p1 , const planar_pixel_iterator< ChannelPtr, ColorSpace >& p2 ) { assert( memunit_distance( gil::at_c< 1 >( p1 ),gil::at_c< 1 >( p2 )) == memunit_distance( gil::at_c< 2 >( p1 ),gil::at_c< 2 >( p2 )) ); typedef planar_pixel_iterator< ChannelPtr, ColorSpace > pixel_t; BOOST_STATIC_ASSERT(( gil::num_channels< pixel_t >::value == 3 )); typedef typename memunit_2_step_fn::difference_type return_t; return return_t( memunit_distance( gil::at_c< 0 >( p1 ),gil::at_c< 0 >( p2 )) , memunit_distance( gil::at_c< 1 >( p1 ),gil::at_c< 1 >( p2 )) ); }
inline std::ptrdiff_t memunit_distance(const planar_pixel_iterator<IC,C>& p1, const planar_pixel_iterator<IC,C>& p2) { return memunit_distance(gil::at_c<0>(p1),gil::at_c<0>(p2)); }
inline std::ptrdiff_t memunit_distance (const planar_frame_iterator<IC,C>& p1, const planar_frame_iterator<IC,C>& p2) { return memunit_distance (sound::at_c<0>(p1), sound::at_c<0>(p2)); }