@ -1140,78 +1140,45 @@ int Mat::checkVector(int _elemChannels, int _depth, bool _requireContinuous) con
? ( int ) ( total ( ) * channels ( ) / _elemChannels ) : - 1 ;
}
template < typename T > static inline
void scalarToRawData ( const Scalar & s , T * const buf , const int cn , const int unroll_to )
{
int i = 0 ;
for ( ; i < cn ; i + + )
buf [ i ] = saturate_cast < T > ( s . val [ i ] ) ;
for ( ; i < unroll_to ; i + + )
buf [ i ] = buf [ i - cn ] ;
}
void scalarToRawData ( const Scalar & s , void * _buf , int type , int unroll_to )
{
CV_INSTRUMENT_REGION ( )
int i , depth = CV_MAT_DEPTH ( type ) , cn = CV_MAT_CN ( type ) ;
const int depth = CV_MAT_DEPTH ( type ) , cn = CV_MAT_CN ( type ) ;
CV_Assert ( cn < = 4 ) ;
switch ( depth )
{
case CV_8U :
{
uchar * buf = ( uchar * ) _buf ;
for ( i = 0 ; i < cn ; i + + )
buf [ i ] = saturate_cast < uchar > ( s . val [ i ] ) ;
for ( ; i < unroll_to ; i + + )
buf [ i ] = buf [ i - cn ] ;
}
scalarToRawData < uchar > ( s , ( uchar * ) _buf , cn , unroll_to ) ;
break ;
case CV_8S :
{
schar * buf = ( schar * ) _buf ;
for ( i = 0 ; i < cn ; i + + )
buf [ i ] = saturate_cast < schar > ( s . val [ i ] ) ;
for ( ; i < unroll_to ; i + + )
buf [ i ] = buf [ i - cn ] ;
}
scalarToRawData < schar > ( s , ( schar * ) _buf , cn , unroll_to ) ;
break ;
case CV_16U :
{
ushort * buf = ( ushort * ) _buf ;
for ( i = 0 ; i < cn ; i + + )
buf [ i ] = saturate_cast < ushort > ( s . val [ i ] ) ;
for ( ; i < unroll_to ; i + + )
buf [ i ] = buf [ i - cn ] ;
}
scalarToRawData < ushort > ( s , ( ushort * ) _buf , cn , unroll_to ) ;
break ;
case CV_16S :
{
short * buf = ( short * ) _buf ;
for ( i = 0 ; i < cn ; i + + )
buf [ i ] = saturate_cast < short > ( s . val [ i ] ) ;
for ( ; i < unroll_to ; i + + )
buf [ i ] = buf [ i - cn ] ;
}
scalarToRawData < short > ( s , ( short * ) _buf , cn , unroll_to ) ;
break ;
case CV_32S :
{
int * buf = ( int * ) _buf ;
for ( i = 0 ; i < cn ; i + + )
buf [ i ] = saturate_cast < int > ( s . val [ i ] ) ;
for ( ; i < unroll_to ; i + + )
buf [ i ] = buf [ i - cn ] ;
}
scalarToRawData < int > ( s , ( int * ) _buf , cn , unroll_to ) ;
break ;
case CV_32F :
{
float * buf = ( float * ) _buf ;
for ( i = 0 ; i < cn ; i + + )
buf [ i ] = saturate_cast < float > ( s . val [ i ] ) ;
for ( ; i < unroll_to ; i + + )
buf [ i ] = buf [ i - cn ] ;
}
scalarToRawData < float > ( s , ( float * ) _buf , cn , unroll_to ) ;
break ;
case CV_64F :
{
double * buf = ( double * ) _buf ;
for ( i = 0 ; i < cn ; i + + )
buf [ i ] = saturate_cast < double > ( s . val [ i ] ) ;
for ( ; i < unroll_to ; i + + )
buf [ i ] = buf [ i - cn ] ;
scalarToRawData < double > ( s , ( double * ) _buf , cn , unroll_to ) ;
break ;
}
default :
CV_Error ( CV_StsUnsupportedFormat , " " ) ;
}