add composite shortcut to cpp

two composite just two images
This commit is contained in:
John Cupitt 2017-10-06 16:56:20 +01:00
parent f0aeed1c64
commit e52d2c9f7f
2 changed files with 39 additions and 0 deletions

View File

@ -205,6 +205,30 @@ VOption::set( const char *name, std::vector<double> value )
return( this );
}
// input int array
VOption *
VOption::set( const char *name, std::vector<int> value )
{
Pair *pair = new Pair( name );
int *array;
unsigned int i;
pair->input = true;
g_value_init( &pair->value, VIPS_TYPE_ARRAY_INT );
vips_value_set_array_int( &pair->value, NULL,
static_cast< int >( value.size() ) );
array = vips_value_get_array_int( &pair->value, NULL );
for( i = 0; i < value.size(); i++ )
array[i] = value[i];
options.push_back( pair );
return( this );
}
// input image array
VOption *
VOption::set( const char *name, std::vector<VImage> value )
@ -670,6 +694,17 @@ VImage::bandjoin( VImage other, VOption *options )
return( bandjoin( vec, options ) );
}
VImage
VImage::composite( VImage other, VipsBlendMode mode, VOption *options )
{
VImage v[2] = { *this, other };
std::vector<VImage> ivec( v, v + VIPS_NUMBER( v ) );
int m[1] = { static_cast<int>( mode ) };
std::vector<int> mvec( m, m + VIPS_NUMBER( m ) );
return( composite( ivec, mvec, options ) );
}
std::complex<double>
VImage::minpos( VOption *options )
{

View File

@ -219,6 +219,7 @@ public:
VOption *set( const char *name, VInterpolate value );
VOption *set( const char *name, std::vector<VImage> value );
VOption *set( const char *name, std::vector<double> value );
VOption *set( const char *name, std::vector<int> value );
VOption *set( const char *name, VipsBlob *value );
VOption *set( const char *name, bool *value );
@ -541,6 +542,9 @@ public:
return( bandjoin_const( other, options ) );
}
VImage composite( VImage other, VipsBlendMode mode,
VOption *options = 0 );
std::complex<double> minpos( VOption *options = 0 );
std::complex<double> maxpos( VOption *options = 0 );