make cpp overloads const

all overloads are declared const now, where possible

also revised cpp examples and ran them to check

see https://github.com/jcupitt/libvips/issues/983
This commit is contained in:
John Cupitt 2018-06-11 15:24:11 +01:00
parent ca6410e1a6
commit 0e3cac1a72
12 changed files with 305 additions and 372 deletions

View File

@ -26,7 +26,7 @@
- fix compile with MSVC 2017 [angelmixu]
- pdfload has a option for background
- vips7 C++ interface defaults off
- make members and getters "const" in cpp API
- make members, getters and operators "const" in cpp API
12/3/18 started 8.6.4
- better fitting of fonts with overhanging edges [Adrià]

View File

@ -734,43 +734,43 @@ VImage::maxpos( VOption *options ) const
// Operator overloads
VImage
VImage::operator[]( int index )
VImage::operator[]( int index ) const
{
return( this->extract_band( index ) );
}
std::vector<double>
VImage::operator()( int x, int y )
VImage::operator()( int x, int y ) const
{
return( this->getpoint( x, y ) );
}
VImage
operator+( VImage a, VImage b )
operator+( const VImage a, const VImage b )
{
return( a.add( b ) );
}
VImage
operator+( double a, VImage b )
operator+( double a, const VImage b )
{
return( b.linear( 1.0, a ) );
}
VImage
operator+( VImage a, double b )
operator+( const VImage a, double b )
{
return( a.linear( 1.0, b ) );
}
VImage
operator+( std::vector<double> a, VImage b )
operator+( const std::vector<double> a, const VImage b )
{
return( b.linear( 1.0, a ) );
}
VImage
operator+( VImage a, std::vector<double> b )
operator+( const VImage a, const std::vector<double> b )
{
return( a.linear( 1.0, b ) );
}
@ -788,37 +788,37 @@ operator+=( VImage &a, const double b )
}
VImage &
operator+=( VImage &a, std::vector<double> b )
operator+=( VImage &a, const std::vector<double> b )
{
return( a = a + b );
}
VImage
operator-( VImage a, VImage b )
operator-( const VImage a, const VImage b )
{
return( a.subtract( b ) );
}
VImage
operator-( double a, VImage b )
operator-( double a, const VImage b )
{
return( b.linear( -1.0, a ) );
}
VImage
operator-( VImage a, double b )
operator-( const VImage a, double b )
{
return( a.linear( 1.0, -b ) );
}
VImage
operator-( std::vector<double> a, VImage b )
operator-( const std::vector<double> a, const VImage b )
{
return( b.linear( -1.0, a ) );
}
VImage
operator-( VImage a, std::vector<double> b )
operator-( const VImage a, const std::vector<double> b )
{
return( a.linear( 1.0, vips::negate( b ) ) );
}
@ -836,43 +836,43 @@ operator-=( VImage &a, const double b )
}
VImage &
operator-=( VImage &a, std::vector<double> b )
operator-=( VImage &a, const std::vector<double> b )
{
return( a = a - b );
}
VImage
operator-( VImage a )
operator-( const VImage a )
{
return( a * -1 );
}
VImage
operator*( VImage a, VImage b )
operator*( const VImage a, const VImage b )
{
return( a.multiply( b ) );
}
VImage
operator*( double a, VImage b )
operator*( double a, const VImage b )
{
return( b.linear( a, 0.0 ) );
}
VImage
operator*( VImage a, double b )
operator*( const VImage a, double b )
{
return( a.linear( b, 0.0 ) );
}
VImage
operator*( std::vector<double> a, VImage b )
operator*( const std::vector<double> a, const VImage b )
{
return( b.linear( a, 0.0 ) );
}
VImage
operator*( VImage a, std::vector<double> b )
operator*( const VImage a, const std::vector<double> b )
{
return( a.linear( b, 0.0 ) );
}
@ -890,37 +890,37 @@ operator*=( VImage &a, const double b )
}
VImage &
operator*=( VImage &a, std::vector<double> b )
operator*=( VImage &a, const std::vector<double> b )
{
return( a = a * b );
}
VImage
operator/( VImage a, VImage b )
operator/( const VImage a, const VImage b )
{
return( a.divide( b ) );
}
VImage
operator/( double a, VImage b )
operator/( double a, const VImage b )
{
return( b.pow( -1.0 ).linear( a, 0.0 ) );
}
VImage
operator/( VImage a, double b )
operator/( const VImage a, double b )
{
return( a.linear( 1.0 / b, 0.0 ) );
}
VImage
operator/( std::vector<double> a, VImage b )
operator/( const std::vector<double> a, const VImage b )
{
return( b.pow( -1.0 ).linear( a, 0.0 ) );
}
VImage
operator/( VImage a, std::vector<double> b )
operator/( const VImage a, const std::vector<double> b )
{
return( a.linear( vips::invert( b ), 0.0 ) );
}
@ -938,25 +938,25 @@ operator/=( VImage &a, const double b )
}
VImage &
operator/=( VImage &a, std::vector<double> b )
operator/=( VImage &a, const std::vector<double> b )
{
return( a = a / b );
}
VImage
operator%( VImage a, VImage b )
operator%( const VImage a, const VImage b )
{
return( a.remainder( b ) );
}
VImage
operator%( VImage a, double b )
operator%( const VImage a, const double b )
{
return( a.remainder_const( to_vector( b ) ) );
}
VImage
operator%( VImage a, std::vector<double> b )
operator%( const VImage a, const std::vector<double> b )
{
return( a.remainder_const( b ) );
}
@ -974,243 +974,243 @@ operator%=( VImage &a, const double b )
}
VImage &
operator%=( VImage &a, std::vector<double> b )
operator%=( VImage &a, const std::vector<double> b )
{
return( a = a % b );
}
VImage
operator<( VImage a, VImage b )
operator<( const VImage a, const VImage b )
{
return( a.relational( b, VIPS_OPERATION_RELATIONAL_LESS ) );
}
VImage
operator<( double a, VImage b )
operator<( const double a, const VImage b )
{
return( b.relational_const( VIPS_OPERATION_RELATIONAL_MORE,
to_vector( a ) ) );
}
VImage
operator<( VImage a, double b )
operator<( const VImage a, const double b )
{
return( a.relational_const( VIPS_OPERATION_RELATIONAL_LESS,
to_vector( b ) ) );
}
VImage
operator<( std::vector<double> a, VImage b )
operator<( const std::vector<double> a, const VImage b )
{
return( b.relational_const( VIPS_OPERATION_RELATIONAL_MORE,
a ) );
}
VImage
operator<( VImage a, std::vector<double> b )
operator<( const VImage a, const std::vector<double> b )
{
return( a.relational_const( VIPS_OPERATION_RELATIONAL_LESS,
b ) );
}
VImage
operator<=( VImage a, VImage b )
operator<=( const VImage a, const VImage b )
{
return( a.relational( b, VIPS_OPERATION_RELATIONAL_LESSEQ ) );
}
VImage
operator<=( double a, VImage b )
operator<=( const double a, const VImage b )
{
return( b.relational_const( VIPS_OPERATION_RELATIONAL_MOREEQ,
to_vector( a ) ) );
}
VImage
operator<=( VImage a, double b )
operator<=( const VImage a, const double b )
{
return( a.relational_const( VIPS_OPERATION_RELATIONAL_LESSEQ,
to_vector( b ) ) );
}
VImage
operator<=( std::vector<double> a, VImage b )
operator<=( const std::vector<double> a, const VImage b )
{
return( b.relational_const( VIPS_OPERATION_RELATIONAL_MOREEQ,
a ) );
}
VImage
operator<=( VImage a, std::vector<double> b )
operator<=( const VImage a, const std::vector<double> b )
{
return( a.relational_const( VIPS_OPERATION_RELATIONAL_LESSEQ,
b ) );
}
VImage
operator>( VImage a, VImage b )
operator>( const VImage a, const VImage b )
{
return( a.relational( b, VIPS_OPERATION_RELATIONAL_MORE ) );
}
VImage
operator>( double a, VImage b )
operator>( const double a, const VImage b )
{
return( b.relational_const( VIPS_OPERATION_RELATIONAL_LESS,
to_vector( a ) ) );
}
VImage
operator>( VImage a, double b )
operator>( const VImage a, const double b )
{
return( a.relational_const( VIPS_OPERATION_RELATIONAL_MORE,
to_vector( b ) ) );
}
VImage
operator>( std::vector<double> a, VImage b )
operator>( const std::vector<double> a, const VImage b )
{
return( b.relational_const( VIPS_OPERATION_RELATIONAL_LESS,
a ) );
}
VImage
operator>( VImage a, std::vector<double> b )
operator>( const VImage a, const std::vector<double> b )
{
return( a.relational_const( VIPS_OPERATION_RELATIONAL_MORE,
b ) );
}
VImage
operator>=( VImage a, VImage b )
operator>=( const VImage a, const VImage b )
{
return( a.relational( b, VIPS_OPERATION_RELATIONAL_MOREEQ ) );
}
VImage
operator>=( double a, VImage b )
operator>=( const double a, const VImage b )
{
return( b.relational_const( VIPS_OPERATION_RELATIONAL_LESSEQ,
to_vector( a ) ) );
}
VImage
operator>=( VImage a, double b )
operator>=( const VImage a, const double b )
{
return( a.relational_const( VIPS_OPERATION_RELATIONAL_MOREEQ,
to_vector( b ) ) );
}
VImage
operator>=( std::vector<double> a, VImage b )
operator>=( const std::vector<double> a, const VImage b )
{
return( b.relational_const( VIPS_OPERATION_RELATIONAL_LESSEQ,
a ) );
}
VImage
operator>=( VImage a, std::vector<double> b )
operator>=( const VImage a, const std::vector<double> b )
{
return( a.relational_const( VIPS_OPERATION_RELATIONAL_MOREEQ,
b ) );
}
VImage
operator==( VImage a, VImage b )
operator==( const VImage a, const VImage b )
{
return( a.relational( b, VIPS_OPERATION_RELATIONAL_EQUAL ) );
}
VImage
operator==( double a, VImage b )
operator==( const double a, const VImage b )
{
return( b.relational_const( VIPS_OPERATION_RELATIONAL_EQUAL,
to_vector( a ) ) );
}
VImage
operator==( VImage a, double b )
operator==( const VImage a, const double b )
{
return( a.relational_const( VIPS_OPERATION_RELATIONAL_EQUAL,
to_vector( b ) ) );
}
VImage
operator==( std::vector<double> a, VImage b )
operator==( const std::vector<double> a, const VImage b )
{
return( b.relational_const( VIPS_OPERATION_RELATIONAL_EQUAL,
a ) );
}
VImage
operator==( VImage a, std::vector<double> b )
operator==( const VImage a, const std::vector<double> b )
{
return( a.relational_const( VIPS_OPERATION_RELATIONAL_EQUAL,
b ) );
}
VImage
operator!=( VImage a, VImage b )
operator!=( const VImage a, const VImage b )
{
return( a.relational( b, VIPS_OPERATION_RELATIONAL_NOTEQ ) );
}
VImage
operator!=( double a, VImage b )
operator!=( const double a, const VImage b )
{
return( b.relational_const( VIPS_OPERATION_RELATIONAL_NOTEQ,
to_vector( a ) ) );
}
VImage
operator!=( VImage a, double b )
operator!=( const VImage a, const double b )
{
return( a.relational_const( VIPS_OPERATION_RELATIONAL_NOTEQ,
to_vector( b ) ) );
}
VImage
operator!=( std::vector<double> a, VImage b )
operator!=( const std::vector<double> a, const VImage b )
{
return( b.relational_const( VIPS_OPERATION_RELATIONAL_NOTEQ,
a ) );
}
VImage
operator!=( VImage a, std::vector<double> b )
operator!=( const VImage a, const std::vector<double> b )
{
return( a.relational_const( VIPS_OPERATION_RELATIONAL_NOTEQ,
b ) );
}
VImage
operator&( VImage a, VImage b )
operator&( const VImage a, const VImage b )
{
return( a.boolean( b, VIPS_OPERATION_BOOLEAN_AND ) );
}
VImage
operator&( double a, VImage b )
operator&( const double a, const VImage b )
{
return( b.boolean_const( VIPS_OPERATION_BOOLEAN_AND,
to_vector( a ) ) );
}
VImage
operator&( VImage a, double b )
operator&( const VImage a, const double b )
{
return( a.boolean_const( VIPS_OPERATION_BOOLEAN_AND,
to_vector( b ) ) );
}
VImage
operator&( std::vector<double> a, VImage b )
operator&( const std::vector<double> a, const VImage b )
{
return( b.boolean_const( VIPS_OPERATION_BOOLEAN_AND, a ) );
}
VImage
operator&( VImage a, std::vector<double> b )
operator&( const VImage a, const std::vector<double> b )
{
return( a.boolean_const( VIPS_OPERATION_BOOLEAN_AND, b ) );
}
@ -1228,40 +1228,40 @@ operator&=( VImage &a, const double b )
}
VImage &
operator&=( VImage &a, std::vector<double> b )
operator&=( VImage &a, const std::vector<double> b )
{
return( a = a & b );
}
VImage
operator|( VImage a, VImage b )
operator|( const VImage a, const VImage b )
{
return( a.boolean( b, VIPS_OPERATION_BOOLEAN_OR ) );
}
VImage
operator|( double a, VImage b )
operator|( const double a, const VImage b )
{
return( b.boolean_const( VIPS_OPERATION_BOOLEAN_OR,
to_vector( a ) ) );
}
VImage
operator|( VImage a, double b )
operator|( const VImage a, const double b )
{
return( a.boolean_const( VIPS_OPERATION_BOOLEAN_OR,
to_vector( b ) ) );
}
VImage
operator|( std::vector<double> a, VImage b )
operator|( const std::vector<double> a, const VImage b )
{
return( b.boolean_const( VIPS_OPERATION_BOOLEAN_OR,
a ) );
}
VImage
operator|( VImage a, std::vector<double> b )
operator|( const VImage a, const std::vector<double> b )
{
return( a.boolean_const( VIPS_OPERATION_BOOLEAN_OR,
b ) );
@ -1280,40 +1280,40 @@ operator|=( VImage &a, const double b )
}
VImage &
operator|=( VImage &a, std::vector<double> b )
operator|=( VImage &a, const std::vector<double> b )
{
return( a = a | b );
}
VImage
operator^( VImage a, VImage b )
operator^( const VImage a, const VImage b )
{
return( a.boolean( b, VIPS_OPERATION_BOOLEAN_EOR ) );
}
VImage
operator^( double a, VImage b )
operator^( const double a, const VImage b )
{
return( b.boolean_const( VIPS_OPERATION_BOOLEAN_EOR,
to_vector( a ) ) );
}
VImage
operator^( VImage a, double b )
operator^( const VImage a, const double b )
{
return( a.boolean_const( VIPS_OPERATION_BOOLEAN_EOR,
to_vector( b ) ) );
}
VImage
operator^( std::vector<double> a, VImage b )
operator^( const std::vector<double> a, const VImage b )
{
return( b.boolean_const( VIPS_OPERATION_BOOLEAN_EOR,
a ) );
}
VImage
operator^( VImage a, std::vector<double> b )
operator^( const VImage a, const std::vector<double> b )
{
return( a.boolean_const( VIPS_OPERATION_BOOLEAN_EOR,
b ) );
@ -1332,26 +1332,26 @@ operator^=( VImage &a, const double b )
}
VImage &
operator^=( VImage &a, std::vector<double> b )
operator^=( VImage &a, const std::vector<double> b )
{
return( a = a ^ b );
}
VImage
operator<<( VImage a, VImage b )
operator<<( const VImage a, const VImage b )
{
return( a.boolean( b, VIPS_OPERATION_BOOLEAN_LSHIFT ) );
}
VImage
operator<<( VImage a, double b )
operator<<( const VImage a, const double b )
{
return( a.boolean_const( VIPS_OPERATION_BOOLEAN_LSHIFT,
to_vector( b ) ) );
}
VImage
operator<<( VImage a, std::vector<double> b )
operator<<( const VImage a, const std::vector<double> b )
{
return( a.boolean_const( VIPS_OPERATION_BOOLEAN_LSHIFT,
b ) );
@ -1370,26 +1370,26 @@ operator<<=( VImage &a, const double b )
}
VImage &
operator<<=( VImage &a, std::vector<double> b )
operator<<=( VImage &a, const std::vector<double> b )
{
return( a = a << b );
}
VImage
operator>>( VImage a, VImage b )
operator>>( const VImage a, const VImage b )
{
return( a.boolean( b, VIPS_OPERATION_BOOLEAN_RSHIFT ) );
}
VImage
operator>>( VImage a, double b )
operator>>( const VImage a, const double b )
{
return( a.boolean_const( VIPS_OPERATION_BOOLEAN_RSHIFT,
to_vector( b ) ) );
}
VImage
operator>>( VImage a, std::vector<double> b )
operator>>( const VImage a, const std::vector<double> b )
{
return( a.boolean_const( VIPS_OPERATION_BOOLEAN_RSHIFT,
b ) );
@ -1408,7 +1408,7 @@ operator>>=( VImage &a, const double b )
}
VImage &
operator>>=( VImage &a, std::vector<double> b )
operator>>=( VImage &a, const std::vector<double> b )
{
return( a = a << b );
}

View File

@ -14,38 +14,16 @@ using namespace vips;
int
main( int argc, char **argv )
{
GOptionContext *context;
GOptionGroup *main_group;
GError *error = NULL;
if( vips_init( argv[0] ) )
vips_error_exit( NULL );
context = g_option_context_new( "" );
main_group = g_option_group_new( NULL, NULL, NULL, NULL, NULL );
g_option_context_set_main_group( context, main_group );
g_option_context_add_group( context, vips_get_option_group() );
if( !g_option_context_parse( context, &argc, &argv, &error ) ) {
if( error ) {
fprintf( stderr, "%s\n", error->message );
g_error_free( error );
}
vips_error_exit( NULL );
}
{
VImage in = VImage::new_from_file( argv[1],
VImage::option()->set( "access", VIPS_ACCESS_SEQUENTIAL_UNBUFFERED ) );
VImage::option()->set( "access", VIPS_ACCESS_SEQUENTIAL ) );
double avg;
avg = in.avg();
printf( "avg = %g\n", avg );
}
vips_shutdown();

View File

@ -14,28 +14,9 @@ using namespace vips;
int
main( int argc, char **argv )
{
GOptionContext *context;
GOptionGroup *main_group;
GError *error = NULL;
if( VIPS_INIT( argv[0] ) )
vips_error_exit( NULL );
context = g_option_context_new( "" );
main_group = g_option_group_new( NULL, NULL, NULL, NULL, NULL );
g_option_context_set_main_group( context, main_group );
g_option_context_add_group( context, vips_get_option_group() );
if( !g_option_context_parse( context, &argc, &argv, &error ) ) {
if( error ) {
fprintf( stderr, "%s\n", error->message );
g_error_free( error );
}
vips_error_exit( NULL );
}
// load an image from a file
VImage im = VImage::new_from_file( argv[1],
VImage::option()->set( "access", "sequential" ) );

View File

@ -14,38 +14,16 @@ using namespace vips;
int
main( int argc, char **argv )
{
GOptionContext *context;
GOptionGroup *main_group;
GError *error = NULL;
if( vips_init( argv[0] ) )
vips_error_exit( NULL );
context = g_option_context_new( "" );
main_group = g_option_group_new( NULL, NULL, NULL, NULL, NULL );
g_option_context_set_main_group( context, main_group );
g_option_context_add_group( context, vips_get_option_group() );
if( !g_option_context_parse( context, &argc, &argv, &error ) ) {
if( error ) {
fprintf( stderr, "%s\n", error->message );
g_error_free( error );
}
vips_error_exit( NULL );
}
{
VImage in = VImage::new_from_file( argv[1],
VImage::option()->set( "access", VIPS_ACCESS_SEQUENTIAL_UNBUFFERED ) );
VImage::option()->set( "access", "sequential" ) );
VImage out = in.embed( 10, 10, 1000, 1000,
VImage::option()->set( "extend", VIPS_EXTEND_COPY ) );
VImage::option()->set( "extend", "copy" ) );
out.write_to_file( argv[2] );
}
vips_shutdown();

View File

@ -14,43 +14,21 @@ using namespace vips;
int
main( int argc, char **argv )
{
GOptionContext *context;
GOptionGroup *main_group;
GError *error = NULL;
if( vips_init( argv[0] ) )
vips_error_exit( NULL );
context = g_option_context_new( "" );
main_group = g_option_group_new( NULL, NULL, NULL, NULL, NULL );
g_option_context_set_main_group( context, main_group );
g_option_context_add_group( context, vips_get_option_group() );
if( !g_option_context_parse( context, &argc, &argv, &error ) ) {
if( error ) {
fprintf( stderr, "%s\n", error->message );
g_error_free( error );
}
vips_error_exit( NULL );
}
printf( "these should match if VImage is compile-time-only\n" );
printf( "sizeof( VipsImage *) = %zd\n", sizeof( VipsImage *) );
printf( "sizeof( VImage ) = %zd\n", sizeof( VImage ) );
{
VImage in = VImage::new_from_file( argv[1],
VImage::option()->set( "access", VIPS_ACCESS_SEQUENTIAL_UNBUFFERED ) );
VImage::option()->set( "access", VIPS_ACCESS_SEQUENTIAL ) );
VImage out;
out = in.invert();
out.write_to_file( argv[2] );
}
vips_shutdown();

View File

@ -14,30 +14,9 @@ using namespace vips;
int
main( int argc, char **argv )
{
GOptionContext *context;
GOptionGroup *main_group;
GError *error = NULL;
if( vips_init( argv[0] ) )
vips_error_exit( NULL );
context = g_option_context_new( "" );
main_group = g_option_group_new( NULL, NULL, NULL, NULL, NULL );
g_option_context_set_main_group( context, main_group );
g_option_context_add_group( context, vips_get_option_group() );
if( !g_option_context_parse( context, &argc, &argv, &error ) ) {
if( error ) {
fprintf( stderr, "%s\n", error->message );
g_error_free( error );
}
vips_error_exit( NULL );
}
{
VImage in = VImage::new_from_file( argv[1] );
VImage rows;
@ -45,7 +24,6 @@ main( int argc, char **argv )
rows.write_to_file( argv[2] );
cols.write_to_file( argv[3] );
}
vips_shutdown();

View File

@ -14,29 +14,9 @@ using namespace vips;
int
main( int argc, char **argv )
{
GOptionContext *context;
GOptionGroup *main_group;
GError *error = NULL;
if( vips_init( argv[0] ) )
vips_error_exit( NULL );
context = g_option_context_new( "" );
main_group = g_option_group_new( NULL, NULL, NULL, NULL, NULL );
g_option_context_set_main_group( context, main_group );
g_option_context_add_group( context, vips_get_option_group() );
if( !g_option_context_parse( context, &argc, &argv, &error ) ) {
if( error ) {
fprintf( stderr, "%s\n", error->message );
g_error_free( error );
}
vips_error_exit( NULL );
}
{
VImage in = VImage::new_from_file( argv[1],
VImage::option()->set( "access", VIPS_ACCESS_SEQUENTIAL ) );
VInterpolate interp = VInterpolate::new_from_name( "nohalo" );
@ -46,7 +26,6 @@ main( int argc, char **argv )
out = in.resize( 0.2, VImage::option()->set( "interpolate", interp ) );
out.write_to_file( argv[2] );
}
vips_shutdown();

View File

@ -242,30 +242,9 @@ TEST_BINARY( test_divide );
int
main( int argc, char **argv )
{
GOptionContext *context;
GOptionGroup *main_group;
GError *error = NULL;
if( VIPS_INIT( argv[0] ) )
vips_error_exit( NULL );
context = g_option_context_new( "" );
main_group = g_option_group_new( NULL, NULL, NULL, NULL, NULL );
g_option_context_set_main_group( context, main_group );
g_option_context_add_group( context, vips_get_option_group() );
if( !g_option_context_parse( context, &argc, &argv, &error ) ) {
if( error ) {
fprintf( stderr, "%s\n", error->message );
g_error_free( error );
}
vips_error_exit( NULL );
}
g_option_context_free( context );
VImage left = VImage::new_from_file( argv[1] );
VImage right = VImage::new_from_file( argv[2] );

View File

@ -366,31 +366,9 @@ TEST_ASSIGNMENT( test_divideequals );
int
main( int argc, char **argv )
{
GOptionContext *context;
GOptionGroup *main_group;
GError *error = NULL;
if( VIPS_INIT( argv[0] ) )
vips_error_exit( NULL );
context = g_option_context_new( "" );
main_group = g_option_group_new( NULL, NULL, NULL, NULL, NULL );
g_option_context_set_main_group( context, main_group );
g_option_context_add_group( context, vips_get_option_group() );
if( !g_option_context_parse( context, &argc, &argv, &error ) ) {
if( error ) {
fprintf( stderr, "%s\n", error->message );
g_error_free( error );
}
vips_error_exit( NULL );
}
g_option_context_free( context );
{
VImage left = VImage::new_from_file( argv[1] );
VImage right = VImage::new_from_file( argv[2] );
@ -406,7 +384,6 @@ main( int argc, char **argv )
test_assignment_test_minusequals( left, right );
test_assignment_test_timesequals( left, right );
test_assignment_test_divideequals( left, right );
}
vips_shutdown();

View File

@ -794,141 +794,246 @@ public:
// Operator overloads
VImage operator[]( int index );
VImage operator[]( int index ) const;
std::vector<double> operator()( int x, int y );
std::vector<double> operator()( int x, int y ) const;
friend VIPS_CPLUSPLUS_API VImage operator+( VImage a, VImage b );
friend VIPS_CPLUSPLUS_API VImage operator+( double a, VImage b );
friend VIPS_CPLUSPLUS_API VImage operator+( VImage a, double b );
friend VIPS_CPLUSPLUS_API VImage operator+( std::vector<double> a, VImage b );
friend VIPS_CPLUSPLUS_API VImage operator+( VImage a, std::vector<double> b );
friend VIPS_CPLUSPLUS_API VImage
operator+( const VImage a, const VImage b );
friend VIPS_CPLUSPLUS_API VImage
operator+( const double a, const VImage b );
friend VIPS_CPLUSPLUS_API VImage
operator+( const VImage a, const double b );
friend VIPS_CPLUSPLUS_API VImage
operator+( const std::vector<double> a, const VImage b );
friend VIPS_CPLUSPLUS_API VImage
operator+( const VImage a, const std::vector<double> b );
friend VIPS_CPLUSPLUS_API VImage & operator+=( VImage &a, const VImage b );
friend VIPS_CPLUSPLUS_API VImage & operator+=( VImage &a, const double b );
friend VIPS_CPLUSPLUS_API VImage & operator+=( VImage &a, const std::vector<double> b );
friend VIPS_CPLUSPLUS_API VImage &
operator+=( VImage &a, const VImage b );
friend VIPS_CPLUSPLUS_API VImage &
operator+=( VImage &a, const double b );
friend VIPS_CPLUSPLUS_API VImage &
operator+=( VImage &a, const std::vector<double> b );
friend VIPS_CPLUSPLUS_API VImage operator-( VImage a, VImage b );
friend VIPS_CPLUSPLUS_API VImage operator-( double a, VImage b );
friend VIPS_CPLUSPLUS_API VImage operator-( VImage a, double b );
friend VIPS_CPLUSPLUS_API VImage operator-( std::vector<double> a, VImage b );
friend VIPS_CPLUSPLUS_API VImage operator-( VImage a, std::vector<double> b );
friend VIPS_CPLUSPLUS_API VImage
operator-( const VImage a, const VImage b );
friend VIPS_CPLUSPLUS_API VImage
operator-( const double a, const VImage b );
friend VIPS_CPLUSPLUS_API VImage
operator-( const VImage a, const double b );
friend VIPS_CPLUSPLUS_API VImage
operator-( const std::vector<double> a, const VImage b );
friend VIPS_CPLUSPLUS_API VImage
operator-( const VImage a, const std::vector<double> b );
friend VIPS_CPLUSPLUS_API VImage & operator-=( VImage &a, const VImage b );
friend VIPS_CPLUSPLUS_API VImage & operator-=( VImage &a, const double b );
friend VIPS_CPLUSPLUS_API VImage & operator-=( VImage &a, const std::vector<double> b );
friend VIPS_CPLUSPLUS_API VImage &
operator-=( VImage &a, const VImage b );
friend VIPS_CPLUSPLUS_API VImage &
operator-=( VImage &a, const double b );
friend VIPS_CPLUSPLUS_API VImage &
operator-=( VImage &a, const std::vector<double> b );
friend VIPS_CPLUSPLUS_API VImage operator-( VImage a );
friend VIPS_CPLUSPLUS_API VImage
operator-( const VImage a );
friend VIPS_CPLUSPLUS_API VImage operator*( VImage a, VImage b );
friend VIPS_CPLUSPLUS_API VImage operator*( double a, VImage b );
friend VIPS_CPLUSPLUS_API VImage operator*( VImage a, double b );
friend VIPS_CPLUSPLUS_API VImage operator*( std::vector<double> a, VImage b );
friend VIPS_CPLUSPLUS_API VImage operator*( VImage a, std::vector<double> b );
friend VIPS_CPLUSPLUS_API VImage
operator*( const VImage a, const VImage b );
friend VIPS_CPLUSPLUS_API VImage
operator*( const double a, const VImage b );
friend VIPS_CPLUSPLUS_API VImage
operator*( const VImage a, const double b );
friend VIPS_CPLUSPLUS_API VImage
operator*( const std::vector<double> a, const VImage b );
friend VIPS_CPLUSPLUS_API VImage
operator*( const VImage a, const std::vector<double> b );
friend VIPS_CPLUSPLUS_API VImage & operator*=( VImage &a, const VImage b );
friend VIPS_CPLUSPLUS_API VImage & operator*=( VImage &a, const double b );
friend VIPS_CPLUSPLUS_API VImage & operator*=( VImage &a, const std::vector<double> b );
friend VIPS_CPLUSPLUS_API VImage &
operator*=( VImage &a, const VImage b );
friend VIPS_CPLUSPLUS_API VImage &
operator*=( VImage &a, const double b );
friend VIPS_CPLUSPLUS_API VImage &
operator*=( VImage &a, const std::vector<double> b );
friend VIPS_CPLUSPLUS_API VImage operator/( VImage a, VImage b );
friend VIPS_CPLUSPLUS_API VImage operator/( double a, VImage b );
friend VIPS_CPLUSPLUS_API VImage operator/( VImage a, double b );
friend VIPS_CPLUSPLUS_API VImage operator/( std::vector<double> a, VImage b );
friend VIPS_CPLUSPLUS_API VImage operator/( VImage a, std::vector<double> b );
friend VIPS_CPLUSPLUS_API VImage
operator/( const VImage a, const VImage b );
friend VIPS_CPLUSPLUS_API VImage
operator/( const double a, const VImage b );
friend VIPS_CPLUSPLUS_API VImage
operator/( const VImage a, const double b );
friend VIPS_CPLUSPLUS_API VImage
operator/( const std::vector<double> a, const VImage b );
friend VIPS_CPLUSPLUS_API VImage
operator/( const VImage a, const std::vector<double> b );
friend VIPS_CPLUSPLUS_API VImage & operator/=( VImage &a, const VImage b );
friend VIPS_CPLUSPLUS_API VImage & operator/=( VImage &a, const double b );
friend VIPS_CPLUSPLUS_API VImage & operator/=( VImage &a, const std::vector<double> b );
friend VIPS_CPLUSPLUS_API VImage &
operator/=( VImage &a, const VImage b );
friend VIPS_CPLUSPLUS_API VImage &
operator/=( VImage &a, const double b );
friend VIPS_CPLUSPLUS_API VImage &
operator/=( VImage &a, const std::vector<double> b );
friend VIPS_CPLUSPLUS_API VImage operator%( VImage a, VImage b );
friend VIPS_CPLUSPLUS_API VImage operator%( VImage a, double b );
friend VIPS_CPLUSPLUS_API VImage operator%( VImage a, std::vector<double> b );
friend VIPS_CPLUSPLUS_API VImage
operator%( const VImage a, const VImage b );
friend VIPS_CPLUSPLUS_API VImage
operator%( const VImage a, const double b );
friend VIPS_CPLUSPLUS_API VImage
operator%( const VImage a, const std::vector<double> b );
friend VIPS_CPLUSPLUS_API VImage & operator%=( VImage &a, const VImage b );
friend VIPS_CPLUSPLUS_API VImage & operator%=( VImage &a, const double b );
friend VIPS_CPLUSPLUS_API VImage & operator%=( VImage &a, const std::vector<double> b );
friend VIPS_CPLUSPLUS_API VImage &
operator%=( VImage &a, const VImage b );
friend VIPS_CPLUSPLUS_API VImage &
operator%=( VImage &a, const double b );
friend VIPS_CPLUSPLUS_API VImage &
operator%=( VImage &a, const std::vector<double> b );
friend VIPS_CPLUSPLUS_API VImage operator<( VImage a, VImage b );
friend VIPS_CPLUSPLUS_API VImage operator<( double a, VImage b );
friend VIPS_CPLUSPLUS_API VImage operator<( VImage a, double b );
friend VIPS_CPLUSPLUS_API VImage operator<( std::vector<double> a, VImage b );
friend VIPS_CPLUSPLUS_API VImage operator<( VImage a, std::vector<double> b );
friend VIPS_CPLUSPLUS_API VImage
operator<( const VImage a, const VImage b );
friend VIPS_CPLUSPLUS_API VImage
operator<( const double a, const VImage b );
friend VIPS_CPLUSPLUS_API VImage
operator<( const VImage a, const double b );
friend VIPS_CPLUSPLUS_API VImage
operator<( const std::vector<double> a, const VImage b );
friend VIPS_CPLUSPLUS_API VImage
operator<( const VImage a, const std::vector<double> b );
friend VIPS_CPLUSPLUS_API VImage operator<=( VImage a, VImage b );
friend VIPS_CPLUSPLUS_API VImage operator<=( double a, VImage b );
friend VIPS_CPLUSPLUS_API VImage operator<=( VImage a, double b );
friend VIPS_CPLUSPLUS_API VImage operator<=( std::vector<double> a, VImage b );
friend VIPS_CPLUSPLUS_API VImage operator<=( VImage a, std::vector<double> b );
friend VIPS_CPLUSPLUS_API VImage
operator<=( const VImage a, const VImage b );
friend VIPS_CPLUSPLUS_API VImage
operator<=( const double a, const VImage b );
friend VIPS_CPLUSPLUS_API VImage
operator<=( const VImage a, const double b );
friend VIPS_CPLUSPLUS_API VImage
operator<=( const std::vector<double> a, const VImage b );
friend VIPS_CPLUSPLUS_API VImage
operator<=( const VImage a, const std::vector<double> b );
friend VIPS_CPLUSPLUS_API VImage operator>( VImage a, VImage b );
friend VIPS_CPLUSPLUS_API VImage operator>( double a, VImage b );
friend VIPS_CPLUSPLUS_API VImage operator>( VImage a, double b );
friend VIPS_CPLUSPLUS_API VImage operator>( std::vector<double> a, VImage b );
friend VIPS_CPLUSPLUS_API VImage operator>( VImage a, std::vector<double> b );
friend VIPS_CPLUSPLUS_API VImage
operator>( const VImage a, const VImage b );
friend VIPS_CPLUSPLUS_API VImage
operator>( const double a, const VImage b );
friend VIPS_CPLUSPLUS_API VImage
operator>( const VImage a, const double b );
friend VIPS_CPLUSPLUS_API VImage
operator>( const std::vector<double> a, const VImage b );
friend VIPS_CPLUSPLUS_API VImage
operator>( const VImage a, const std::vector<double> b );
friend VIPS_CPLUSPLUS_API VImage operator>=( VImage a, VImage b );
friend VIPS_CPLUSPLUS_API VImage operator>=( double a, VImage b );
friend VIPS_CPLUSPLUS_API VImage operator>=( VImage a, double b );
friend VIPS_CPLUSPLUS_API VImage operator>=( std::vector<double> a, VImage b );
friend VIPS_CPLUSPLUS_API VImage operator>=( VImage a, std::vector<double> b );
friend VIPS_CPLUSPLUS_API VImage
operator>=( const VImage a, const VImage b );
friend VIPS_CPLUSPLUS_API VImage
operator>=( const double a, const VImage b );
friend VIPS_CPLUSPLUS_API VImage
operator>=( const VImage a, const double b );
friend VIPS_CPLUSPLUS_API VImage
operator>=( const std::vector<double> a, const VImage b );
friend VIPS_CPLUSPLUS_API VImage
operator>=( const VImage a, const std::vector<double> b );
friend VIPS_CPLUSPLUS_API VImage operator==( VImage a, VImage b );
friend VIPS_CPLUSPLUS_API VImage operator==( double a, VImage b );
friend VIPS_CPLUSPLUS_API VImage operator==( VImage a, double b );
friend VIPS_CPLUSPLUS_API VImage operator==( std::vector<double> a, VImage b );
friend VIPS_CPLUSPLUS_API VImage operator==( VImage a, std::vector<double> b );
friend VIPS_CPLUSPLUS_API VImage
operator==( const VImage a, const VImage b );
friend VIPS_CPLUSPLUS_API VImage
operator==( const double a, const VImage b );
friend VIPS_CPLUSPLUS_API VImage
operator==( const VImage a, const double b );
friend VIPS_CPLUSPLUS_API VImage
operator==( const std::vector<double> a, const VImage b );
friend VIPS_CPLUSPLUS_API VImage
operator==( const VImage a, const std::vector<double> b );
friend VIPS_CPLUSPLUS_API VImage operator!=( VImage a, VImage b );
friend VIPS_CPLUSPLUS_API VImage operator!=( double a, VImage b );
friend VIPS_CPLUSPLUS_API VImage operator!=( VImage a, double b );
friend VIPS_CPLUSPLUS_API VImage operator!=( std::vector<double> a, VImage b );
friend VIPS_CPLUSPLUS_API VImage operator!=( VImage a, std::vector<double> b );
friend VIPS_CPLUSPLUS_API VImage
operator!=( const VImage a, const VImage b );
friend VIPS_CPLUSPLUS_API VImage
operator!=( const double a, const VImage b );
friend VIPS_CPLUSPLUS_API VImage
operator!=( const VImage a, const double b );
friend VIPS_CPLUSPLUS_API VImage
operator!=( const std::vector<double> a, const VImage b );
friend VIPS_CPLUSPLUS_API VImage
operator!=( const VImage a, const std::vector<double> b );
friend VIPS_CPLUSPLUS_API VImage operator&( VImage a, VImage b );
friend VIPS_CPLUSPLUS_API VImage operator&( double a, VImage b );
friend VIPS_CPLUSPLUS_API VImage operator&( VImage a, double b );
friend VIPS_CPLUSPLUS_API VImage operator&( std::vector<double> a, VImage b );
friend VIPS_CPLUSPLUS_API VImage operator&( VImage a, std::vector<double> b );
friend VIPS_CPLUSPLUS_API VImage
operator&( const VImage a, const VImage b );
friend VIPS_CPLUSPLUS_API VImage
operator&( const double a, const VImage b );
friend VIPS_CPLUSPLUS_API VImage
operator&( const VImage a, const double b );
friend VIPS_CPLUSPLUS_API VImage
operator&( const std::vector<double> a, const VImage b );
friend VIPS_CPLUSPLUS_API VImage
operator&( const VImage a, const std::vector<double> b );
friend VIPS_CPLUSPLUS_API VImage & operator&=( VImage &a, const VImage b );
friend VIPS_CPLUSPLUS_API VImage & operator&=( VImage &a, const double b );
friend VIPS_CPLUSPLUS_API VImage & operator&=( VImage &a, const std::vector<double> b );
friend VIPS_CPLUSPLUS_API VImage &
operator&=( VImage &a, const VImage b );
friend VIPS_CPLUSPLUS_API VImage &
operator&=( VImage &a, const double b );
friend VIPS_CPLUSPLUS_API VImage &
operator&=( VImage &a, const std::vector<double> b );
friend VIPS_CPLUSPLUS_API VImage operator|( VImage a, VImage b );
friend VIPS_CPLUSPLUS_API VImage operator|( double a, VImage b );
friend VIPS_CPLUSPLUS_API VImage operator|( VImage a, double b );
friend VIPS_CPLUSPLUS_API VImage operator|( std::vector<double> a, VImage b );
friend VIPS_CPLUSPLUS_API VImage operator|( VImage a, std::vector<double> b );
friend VIPS_CPLUSPLUS_API VImage
operator|( const VImage a, const VImage b );
friend VIPS_CPLUSPLUS_API VImage
operator|( const double a, const VImage b );
friend VIPS_CPLUSPLUS_API VImage
operator|( const VImage a, const double b );
friend VIPS_CPLUSPLUS_API VImage
operator|( const std::vector<double> a, const VImage b );
friend VIPS_CPLUSPLUS_API VImage
operator|( const VImage a, const std::vector<double> b );
friend VIPS_CPLUSPLUS_API VImage & operator|=( VImage &a, const VImage b );
friend VIPS_CPLUSPLUS_API VImage & operator|=( VImage &a, const double b );
friend VIPS_CPLUSPLUS_API VImage & operator|=( VImage &a, const std::vector<double> b );
friend VIPS_CPLUSPLUS_API VImage &
operator|=( VImage &a, const VImage b );
friend VIPS_CPLUSPLUS_API VImage &
operator|=( VImage &a, const double b );
friend VIPS_CPLUSPLUS_API VImage &
operator|=( VImage &a, const std::vector<double> b );
friend VIPS_CPLUSPLUS_API VImage operator^( VImage a, VImage b );
friend VIPS_CPLUSPLUS_API VImage operator^( double a, VImage b );
friend VIPS_CPLUSPLUS_API VImage operator^( VImage a, double b );
friend VIPS_CPLUSPLUS_API VImage operator^( std::vector<double> a, VImage b );
friend VIPS_CPLUSPLUS_API VImage operator^( VImage a, std::vector<double> b );
friend VIPS_CPLUSPLUS_API VImage
operator^( const VImage a, const VImage b );
friend VIPS_CPLUSPLUS_API VImage
operator^( const double a, const VImage b );
friend VIPS_CPLUSPLUS_API VImage
operator^( const VImage a, const double b );
friend VIPS_CPLUSPLUS_API VImage
operator^( const std::vector<double> a, const VImage b );
friend VIPS_CPLUSPLUS_API VImage
operator^( const VImage a, const std::vector<double> b );
friend VIPS_CPLUSPLUS_API VImage & operator^=( VImage &a, const VImage b );
friend VIPS_CPLUSPLUS_API VImage & operator^=( VImage &a, const double b );
friend VIPS_CPLUSPLUS_API VImage & operator^=( VImage &a, const std::vector<double> b );
friend VIPS_CPLUSPLUS_API VImage &
operator^=( VImage &a, const VImage b );
friend VIPS_CPLUSPLUS_API VImage &
operator^=( VImage &a, const double b );
friend VIPS_CPLUSPLUS_API VImage &
operator^=( VImage &a, const std::vector<double> b );
friend VIPS_CPLUSPLUS_API VImage operator<<( VImage a, VImage b );
friend VIPS_CPLUSPLUS_API VImage operator<<( VImage a, double b );
friend VIPS_CPLUSPLUS_API VImage operator<<( VImage a, std::vector<double> b );
friend VIPS_CPLUSPLUS_API VImage
operator<<( const VImage a, const VImage b );
friend VIPS_CPLUSPLUS_API VImage
operator<<( const VImage a, const double b );
friend VIPS_CPLUSPLUS_API VImage
operator<<( const VImage a, const std::vector<double> b );
friend VIPS_CPLUSPLUS_API VImage & operator<<=( VImage &a, const VImage b );
friend VIPS_CPLUSPLUS_API VImage & operator<<=( VImage &a, const double b );
friend VIPS_CPLUSPLUS_API VImage & operator<<=( VImage &a, const std::vector<double> b );
friend VIPS_CPLUSPLUS_API VImage &
operator<<=( VImage &a, const VImage b );
friend VIPS_CPLUSPLUS_API VImage &
operator<<=( VImage &a, const double b );
friend VIPS_CPLUSPLUS_API VImage &
operator<<=( VImage &a, const std::vector<double> b );
friend VIPS_CPLUSPLUS_API VImage operator>>( VImage a, VImage b );
friend VIPS_CPLUSPLUS_API VImage operator>>( VImage a, double b );
friend VIPS_CPLUSPLUS_API VImage operator>>( VImage a, std::vector<double> b );
friend VIPS_CPLUSPLUS_API VImage
operator>>( const VImage a, const VImage b );
friend VIPS_CPLUSPLUS_API VImage
operator>>( const VImage a, const double b );
friend VIPS_CPLUSPLUS_API VImage
operator>>( const VImage a, const std::vector<double> b );
friend VIPS_CPLUSPLUS_API VImage & operator>>=( VImage &a, const VImage b );
friend VIPS_CPLUSPLUS_API VImage & operator>>=( VImage &a, const double b );
friend VIPS_CPLUSPLUS_API VImage & operator>>=( VImage &a, const std::vector<double> b );
friend VIPS_CPLUSPLUS_API VImage &
operator>>=( VImage &a, const VImage b );
friend VIPS_CPLUSPLUS_API VImage &
operator>>=( VImage &a, const double b );
friend VIPS_CPLUSPLUS_API VImage &
operator>>=( VImage &a, const std::vector<double> b );
};

View File

@ -52,7 +52,7 @@ public:
VInterpolate new_from_name( const char *name, VOption *options = 0 );
VipsInterpolate *
get_interpolate()
get_interpolate() const
{
return( (VipsInterpolate *) VObject::get_object() );
}