sharp 0.25.4 → 0.26.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/binding.gyp +53 -66
- package/install/dll-copy.js +3 -1
- package/install/libvips.js +18 -13
- package/lib/constructor.js +7 -1
- package/lib/input.js +10 -1
- package/lib/libvips.js +1 -7
- package/lib/output.js +89 -7
- package/lib/platform.js +2 -1
- package/lib/utility.js +1 -1
- package/package.json +19 -15
- package/src/common.cc +113 -50
- package/src/common.h +21 -2
- package/src/libvips/cplusplus/VImage.cpp +451 -450
- package/src/libvips/cplusplus/vips-operators.cpp +117 -1
- package/src/metadata.cc +1 -1
- package/src/operations.cc +0 -23
- package/src/operations.h +0 -10
- package/src/pipeline.cc +70 -11
- package/src/pipeline.h +9 -2
- package/src/stats.cc +17 -0
- package/src/stats.h +7 -1
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* 10/6/16
|
|
6
6
|
* - missing implementation of VImage::write()
|
|
7
7
|
* 11/6/16
|
|
8
|
-
* - added arithmetic assignment overloads, += etc.
|
|
8
|
+
* - added arithmetic assignment overloads, += etc.
|
|
9
9
|
*/
|
|
10
10
|
|
|
11
11
|
/*
|
|
@@ -51,7 +51,7 @@
|
|
|
51
51
|
|
|
52
52
|
VIPS_NAMESPACE_START
|
|
53
53
|
|
|
54
|
-
std::vector<double>
|
|
54
|
+
std::vector<double>
|
|
55
55
|
to_vectorv( int n, ... )
|
|
56
56
|
{
|
|
57
57
|
std::vector<double> vector( n );
|
|
@@ -65,13 +65,13 @@ to_vectorv( int n, ... )
|
|
|
65
65
|
return( vector );
|
|
66
66
|
}
|
|
67
67
|
|
|
68
|
-
std::vector<double>
|
|
68
|
+
std::vector<double>
|
|
69
69
|
to_vector( double value )
|
|
70
70
|
{
|
|
71
71
|
return( to_vectorv( 1, value ) );
|
|
72
72
|
}
|
|
73
73
|
|
|
74
|
-
std::vector<double>
|
|
74
|
+
std::vector<double>
|
|
75
75
|
to_vector( int n, double array[] )
|
|
76
76
|
{
|
|
77
77
|
std::vector<double> vector( n );
|
|
@@ -82,10 +82,10 @@ to_vector( int n, double array[] )
|
|
|
82
82
|
return( vector );
|
|
83
83
|
}
|
|
84
84
|
|
|
85
|
-
std::vector<double>
|
|
85
|
+
std::vector<double>
|
|
86
86
|
negate( std::vector<double> vector )
|
|
87
87
|
{
|
|
88
|
-
std::vector<double> new_vector( vector.size() );
|
|
88
|
+
std::vector<double> new_vector( vector.size() );
|
|
89
89
|
|
|
90
90
|
for( unsigned int i = 0; i < vector.size(); i++ )
|
|
91
91
|
new_vector[i] = vector[i] * -1;
|
|
@@ -93,7 +93,7 @@ negate( std::vector<double> vector )
|
|
|
93
93
|
return( new_vector );
|
|
94
94
|
}
|
|
95
95
|
|
|
96
|
-
std::vector<double>
|
|
96
|
+
std::vector<double>
|
|
97
97
|
invert( std::vector<double> vector )
|
|
98
98
|
{
|
|
99
99
|
std::vector<double> new_vector( vector.size() );
|
|
@@ -108,7 +108,7 @@ VOption::~VOption()
|
|
|
108
108
|
{
|
|
109
109
|
std::list<Pair *>::iterator i;
|
|
110
110
|
|
|
111
|
-
for( i = options.begin(); i != options.end(); ++i )
|
|
111
|
+
for( i = options.begin(); i != options.end(); ++i )
|
|
112
112
|
delete *i;
|
|
113
113
|
}
|
|
114
114
|
|
|
@@ -140,7 +140,7 @@ VOption::set( const char *name, int value )
|
|
|
140
140
|
return( this );
|
|
141
141
|
}
|
|
142
142
|
|
|
143
|
-
// input double
|
|
143
|
+
// input double
|
|
144
144
|
VOption *
|
|
145
145
|
VOption::set( const char *name, double value )
|
|
146
146
|
{
|
|
@@ -188,17 +188,17 @@ VOption::set( const char *name, std::vector<double> value )
|
|
|
188
188
|
Pair *pair = new Pair( name );
|
|
189
189
|
|
|
190
190
|
double *array;
|
|
191
|
-
unsigned int i;
|
|
191
|
+
unsigned int i;
|
|
192
192
|
|
|
193
193
|
pair->input = true;
|
|
194
194
|
|
|
195
195
|
g_value_init( &pair->value, VIPS_TYPE_ARRAY_DOUBLE );
|
|
196
196
|
vips_value_set_array_double( &pair->value, NULL,
|
|
197
197
|
static_cast< int >( value.size() ) );
|
|
198
|
-
array = vips_value_get_array_double( &pair->value, NULL );
|
|
198
|
+
array = vips_value_get_array_double( &pair->value, NULL );
|
|
199
199
|
|
|
200
|
-
for( i = 0; i < value.size(); i++ )
|
|
201
|
-
array[i] = value[i];
|
|
200
|
+
for( i = 0; i < value.size(); i++ )
|
|
201
|
+
array[i] = value[i];
|
|
202
202
|
|
|
203
203
|
options.push_back( pair );
|
|
204
204
|
|
|
@@ -212,17 +212,17 @@ VOption::set( const char *name, std::vector<int> value )
|
|
|
212
212
|
Pair *pair = new Pair( name );
|
|
213
213
|
|
|
214
214
|
int *array;
|
|
215
|
-
unsigned int i;
|
|
215
|
+
unsigned int i;
|
|
216
216
|
|
|
217
217
|
pair->input = true;
|
|
218
218
|
|
|
219
219
|
g_value_init( &pair->value, VIPS_TYPE_ARRAY_INT );
|
|
220
220
|
vips_value_set_array_int( &pair->value, NULL,
|
|
221
221
|
static_cast< int >( value.size() ) );
|
|
222
|
-
array = vips_value_get_array_int( &pair->value, NULL );
|
|
222
|
+
array = vips_value_get_array_int( &pair->value, NULL );
|
|
223
223
|
|
|
224
|
-
for( i = 0; i < value.size(); i++ )
|
|
225
|
-
array[i] = value[i];
|
|
224
|
+
for( i = 0; i < value.size(); i++ )
|
|
225
|
+
array[i] = value[i];
|
|
226
226
|
|
|
227
227
|
options.push_back( pair );
|
|
228
228
|
|
|
@@ -236,7 +236,7 @@ VOption::set( const char *name, std::vector<VImage> value )
|
|
|
236
236
|
Pair *pair = new Pair( name );
|
|
237
237
|
|
|
238
238
|
VipsImage **array;
|
|
239
|
-
unsigned int i;
|
|
239
|
+
unsigned int i;
|
|
240
240
|
|
|
241
241
|
pair->input = true;
|
|
242
242
|
|
|
@@ -245,11 +245,11 @@ VOption::set( const char *name, std::vector<VImage> value )
|
|
|
245
245
|
static_cast< int >( value.size() ) );
|
|
246
246
|
array = vips_value_get_array_image( &pair->value, NULL );
|
|
247
247
|
|
|
248
|
-
for( i = 0; i < value.size(); i++ ) {
|
|
248
|
+
for( i = 0; i < value.size(); i++ ) {
|
|
249
249
|
VipsImage *vips_image = value[i].get_image();
|
|
250
250
|
|
|
251
|
-
array[i] = vips_image;
|
|
252
|
-
g_object_ref( vips_image );
|
|
251
|
+
array[i] = vips_image;
|
|
252
|
+
g_object_ref( vips_image );
|
|
253
253
|
}
|
|
254
254
|
|
|
255
255
|
options.push_back( pair );
|
|
@@ -279,7 +279,7 @@ VOption::set( const char *name, bool *value )
|
|
|
279
279
|
|
|
280
280
|
pair->input = false;
|
|
281
281
|
pair->vbool = value;
|
|
282
|
-
g_value_init( &pair->value, G_TYPE_BOOLEAN );
|
|
282
|
+
g_value_init( &pair->value, G_TYPE_BOOLEAN );
|
|
283
283
|
|
|
284
284
|
options.push_back( pair );
|
|
285
285
|
|
|
@@ -294,7 +294,7 @@ VOption::set( const char *name, int *value )
|
|
|
294
294
|
|
|
295
295
|
pair->input = false;
|
|
296
296
|
pair->vint = value;
|
|
297
|
-
g_value_init( &pair->value, G_TYPE_INT );
|
|
297
|
+
g_value_init( &pair->value, G_TYPE_INT );
|
|
298
298
|
|
|
299
299
|
options.push_back( pair );
|
|
300
300
|
|
|
@@ -309,7 +309,7 @@ VOption::set( const char *name, double *value )
|
|
|
309
309
|
|
|
310
310
|
pair->input = false;
|
|
311
311
|
pair->vdouble = value;
|
|
312
|
-
g_value_init( &pair->value, G_TYPE_DOUBLE );
|
|
312
|
+
g_value_init( &pair->value, G_TYPE_DOUBLE );
|
|
313
313
|
|
|
314
314
|
options.push_back( pair );
|
|
315
315
|
|
|
@@ -339,7 +339,7 @@ VOption::set( const char *name, std::vector<double> *value )
|
|
|
339
339
|
|
|
340
340
|
pair->input = false;
|
|
341
341
|
pair->vvector = value;
|
|
342
|
-
g_value_init( &pair->value, VIPS_TYPE_ARRAY_DOUBLE );
|
|
342
|
+
g_value_init( &pair->value, VIPS_TYPE_ARRAY_DOUBLE );
|
|
343
343
|
|
|
344
344
|
options.push_back( pair );
|
|
345
345
|
|
|
@@ -354,7 +354,7 @@ VOption::set( const char *name, VipsBlob **value )
|
|
|
354
354
|
|
|
355
355
|
pair->input = false;
|
|
356
356
|
pair->vblob = value;
|
|
357
|
-
g_value_init( &pair->value, VIPS_TYPE_BLOB );
|
|
357
|
+
g_value_init( &pair->value, VIPS_TYPE_BLOB );
|
|
358
358
|
|
|
359
359
|
options.push_back( pair );
|
|
360
360
|
|
|
@@ -362,7 +362,7 @@ VOption::set( const char *name, VipsBlob **value )
|
|
|
362
362
|
}
|
|
363
363
|
|
|
364
364
|
// just g_object_set_property(), except we allow set enum from string
|
|
365
|
-
static void
|
|
365
|
+
static void
|
|
366
366
|
set_property( VipsObject *object, const char *name, const GValue *value )
|
|
367
367
|
{
|
|
368
368
|
VipsObjectClass *object_class = VIPS_OBJECT_GET_CLASS( object );
|
|
@@ -372,7 +372,7 @@ set_property( VipsObject *object, const char *name, const GValue *value )
|
|
|
372
372
|
VipsArgumentClass *argument_class;
|
|
373
373
|
VipsArgumentInstance *argument_instance;
|
|
374
374
|
|
|
375
|
-
if( vips_object_get_argument( object, name,
|
|
375
|
+
if( vips_object_get_argument( object, name,
|
|
376
376
|
&pspec, &argument_class, &argument_instance ) ) {
|
|
377
377
|
g_warning( "%s", vips_error_buffer() );
|
|
378
378
|
vips_error_clear();
|
|
@@ -384,17 +384,17 @@ set_property( VipsObject *object, const char *name, const GValue *value )
|
|
|
384
384
|
GType pspec_type = G_PARAM_SPEC_VALUE_TYPE( pspec );
|
|
385
385
|
|
|
386
386
|
int enum_value;
|
|
387
|
-
GValue value2 = { 0 };
|
|
387
|
+
GValue value2 = { 0 };
|
|
388
388
|
|
|
389
|
-
if( (enum_value = vips_enum_from_nick( object_class->nickname,
|
|
389
|
+
if( (enum_value = vips_enum_from_nick( object_class->nickname,
|
|
390
390
|
pspec_type, g_value_get_string( value ) )) < 0 ) {
|
|
391
391
|
g_warning( "%s", vips_error_buffer() );
|
|
392
392
|
vips_error_clear();
|
|
393
393
|
return;
|
|
394
394
|
}
|
|
395
395
|
|
|
396
|
-
g_value_init( &value2, pspec_type );
|
|
397
|
-
g_value_set_enum( &value2, enum_value );
|
|
396
|
+
g_value_init( &value2, pspec_type );
|
|
397
|
+
g_value_set_enum( &value2, enum_value );
|
|
398
398
|
g_object_set_property( G_OBJECT( object ), name, &value2 );
|
|
399
399
|
g_value_unset( &value2 );
|
|
400
400
|
}
|
|
@@ -402,18 +402,19 @@ set_property( VipsObject *object, const char *name, const GValue *value )
|
|
|
402
402
|
g_object_set_property( G_OBJECT( object ), name, value );
|
|
403
403
|
}
|
|
404
404
|
|
|
405
|
-
// walk the options and set props on the operation
|
|
406
|
-
void
|
|
405
|
+
// walk the options and set props on the operation
|
|
406
|
+
void
|
|
407
407
|
VOption::set_operation( VipsOperation *operation )
|
|
408
408
|
{
|
|
409
409
|
std::list<Pair *>::iterator i;
|
|
410
410
|
|
|
411
|
-
for( i = options.begin(); i != options.end(); ++i )
|
|
411
|
+
for( i = options.begin(); i != options.end(); ++i )
|
|
412
412
|
if( (*i)->input ) {
|
|
413
413
|
#ifdef VIPS_DEBUG_VERBOSE
|
|
414
414
|
printf( "set_operation: " );
|
|
415
415
|
vips_object_print_name( VIPS_OBJECT( operation ) );
|
|
416
|
-
char *str_value =
|
|
416
|
+
char *str_value =
|
|
417
|
+
g_strdup_value_contents( &(*i)->value );
|
|
417
418
|
printf( ".%s = %s\n", (*i)->name, str_value );
|
|
418
419
|
g_free( str_value );
|
|
419
420
|
#endif /*VIPS_DEBUG_VERBOSE*/
|
|
@@ -424,12 +425,12 @@ VOption::set_operation( VipsOperation *operation )
|
|
|
424
425
|
}
|
|
425
426
|
|
|
426
427
|
// walk the options and fetch any requested outputs
|
|
427
|
-
void
|
|
428
|
+
void
|
|
428
429
|
VOption::get_operation( VipsOperation *operation )
|
|
429
430
|
{
|
|
430
431
|
std::list<Pair *>::iterator i;
|
|
431
432
|
|
|
432
|
-
for( i = options.begin(); i != options.end(); ++i )
|
|
433
|
+
for( i = options.begin(); i != options.end(); ++i )
|
|
433
434
|
if( ! (*i)->input ) {
|
|
434
435
|
const char *name = (*i)->name;
|
|
435
436
|
|
|
@@ -439,7 +440,7 @@ VOption::get_operation( VipsOperation *operation )
|
|
|
439
440
|
#ifdef VIPS_DEBUG_VERBOSE
|
|
440
441
|
printf( "get_operation: " );
|
|
441
442
|
vips_object_print_name( VIPS_OBJECT( operation ) );
|
|
442
|
-
char *str_value = g_strdup_value_contents(
|
|
443
|
+
char *str_value = g_strdup_value_contents(
|
|
443
444
|
&(*i)->value );
|
|
444
445
|
printf( ".%s = %s\n", name, str_value );
|
|
445
446
|
g_free( str_value );
|
|
@@ -450,59 +451,59 @@ VOption::get_operation( VipsOperation *operation )
|
|
|
450
451
|
|
|
451
452
|
if( type == VIPS_TYPE_IMAGE ) {
|
|
452
453
|
// rebox object
|
|
453
|
-
VipsImage *image = VIPS_IMAGE(
|
|
454
|
-
g_value_get_object( value ) );
|
|
455
|
-
*((*i)->vimage) = VImage( image );
|
|
454
|
+
VipsImage *image = VIPS_IMAGE(
|
|
455
|
+
g_value_get_object( value ) );
|
|
456
|
+
*((*i)->vimage) = VImage( image );
|
|
456
457
|
}
|
|
457
|
-
else if( type == G_TYPE_INT )
|
|
458
|
-
*((*i)->vint) = g_value_get_int( value );
|
|
459
|
-
else if( type == G_TYPE_BOOLEAN )
|
|
460
|
-
*((*i)->vbool) = g_value_get_boolean( value );
|
|
461
|
-
else if( type == G_TYPE_DOUBLE )
|
|
462
|
-
*((*i)->vdouble) = g_value_get_double( value );
|
|
458
|
+
else if( type == G_TYPE_INT )
|
|
459
|
+
*((*i)->vint) = g_value_get_int( value );
|
|
460
|
+
else if( type == G_TYPE_BOOLEAN )
|
|
461
|
+
*((*i)->vbool) = g_value_get_boolean( value );
|
|
462
|
+
else if( type == G_TYPE_DOUBLE )
|
|
463
|
+
*((*i)->vdouble) = g_value_get_double( value );
|
|
463
464
|
else if( type == VIPS_TYPE_ARRAY_DOUBLE ) {
|
|
464
465
|
int length;
|
|
465
|
-
double *array =
|
|
466
|
-
vips_value_get_array_double( value,
|
|
466
|
+
double *array =
|
|
467
|
+
vips_value_get_array_double( value,
|
|
467
468
|
&length );
|
|
468
469
|
int j;
|
|
469
470
|
|
|
470
|
-
((*i)->vvector)->resize( length );
|
|
471
|
+
((*i)->vvector)->resize( length );
|
|
471
472
|
for( j = 0; j < length; j++ )
|
|
472
473
|
(*((*i)->vvector))[j] = array[j];
|
|
473
474
|
}
|
|
474
475
|
else if( type == VIPS_TYPE_BLOB ) {
|
|
475
476
|
// our caller gets a reference
|
|
476
|
-
*((*i)->vblob) =
|
|
477
|
+
*((*i)->vblob) =
|
|
477
478
|
(VipsBlob *) g_value_dup_boxed( value );
|
|
478
479
|
}
|
|
479
480
|
}
|
|
480
481
|
}
|
|
481
482
|
|
|
482
|
-
void
|
|
483
|
-
VImage::call_option_string( const char *operation_name,
|
|
484
|
-
const char *option_string, VOption *options )
|
|
483
|
+
void
|
|
484
|
+
VImage::call_option_string( const char *operation_name,
|
|
485
|
+
const char *option_string, VOption *options )
|
|
485
486
|
{
|
|
486
487
|
VipsOperation *operation;
|
|
487
488
|
|
|
488
|
-
VIPS_DEBUG_MSG( "call_option_string: starting for %s ...\n",
|
|
489
|
+
VIPS_DEBUG_MSG( "call_option_string: starting for %s ...\n",
|
|
489
490
|
operation_name );
|
|
490
491
|
|
|
491
492
|
if( !(operation = vips_operation_new( operation_name )) ) {
|
|
492
493
|
delete options;
|
|
493
|
-
throw( VError() );
|
|
494
|
+
throw( VError() );
|
|
494
495
|
}
|
|
495
496
|
|
|
496
|
-
/* Set str options before vargs options, so the user can't
|
|
497
|
+
/* Set str options before vargs options, so the user can't
|
|
497
498
|
* override things we set deliberately.
|
|
498
499
|
*/
|
|
499
500
|
if( option_string &&
|
|
500
|
-
vips_object_set_from_string( VIPS_OBJECT( operation ),
|
|
501
|
+
vips_object_set_from_string( VIPS_OBJECT( operation ),
|
|
501
502
|
option_string ) ) {
|
|
502
503
|
vips_object_unref_outputs( VIPS_OBJECT( operation ) );
|
|
503
|
-
g_object_unref( operation );
|
|
504
|
-
delete options;
|
|
505
|
-
throw( VError() );
|
|
504
|
+
g_object_unref( operation );
|
|
505
|
+
delete options;
|
|
506
|
+
throw( VError() );
|
|
506
507
|
}
|
|
507
508
|
|
|
508
509
|
if( options )
|
|
@@ -512,9 +513,9 @@ VImage::call_option_string( const char *operation_name,
|
|
|
512
513
|
*/
|
|
513
514
|
if( vips_cache_operation_buildp( &operation ) ) {
|
|
514
515
|
vips_object_unref_outputs( VIPS_OBJECT( operation ) );
|
|
515
|
-
g_object_unref( operation );
|
|
516
|
-
delete options;
|
|
517
|
-
throw( VError() );
|
|
516
|
+
g_object_unref( operation );
|
|
517
|
+
delete options;
|
|
518
|
+
throw( VError() );
|
|
518
519
|
}
|
|
519
520
|
|
|
520
521
|
/* Walk args again, writing output.
|
|
@@ -524,46 +525,46 @@ VImage::call_option_string( const char *operation_name,
|
|
|
524
525
|
|
|
525
526
|
/* We're done with options!
|
|
526
527
|
*/
|
|
527
|
-
delete options;
|
|
528
|
+
delete options;
|
|
528
529
|
|
|
529
|
-
/* The operation we have built should now have been reffed by
|
|
530
|
-
* one of its arguments or have finished its work. Either
|
|
530
|
+
/* The operation we have built should now have been reffed by
|
|
531
|
+
* one of its arguments or have finished its work. Either
|
|
531
532
|
* way, we can unref.
|
|
532
533
|
*/
|
|
533
534
|
g_object_unref( operation );
|
|
534
535
|
}
|
|
535
536
|
|
|
536
|
-
void
|
|
537
|
-
VImage::call( const char *operation_name, VOption *options )
|
|
537
|
+
void
|
|
538
|
+
VImage::call( const char *operation_name, VOption *options )
|
|
538
539
|
{
|
|
539
|
-
call_option_string( operation_name, NULL, options );
|
|
540
|
+
call_option_string( operation_name, NULL, options );
|
|
540
541
|
}
|
|
541
542
|
|
|
542
|
-
VImage
|
|
543
|
+
VImage
|
|
543
544
|
VImage::new_from_file( const char *name, VOption *options )
|
|
544
545
|
{
|
|
545
546
|
char filename[VIPS_PATH_MAX];
|
|
546
547
|
char option_string[VIPS_PATH_MAX];
|
|
547
548
|
const char *operation_name;
|
|
548
549
|
|
|
549
|
-
VImage out;
|
|
550
|
+
VImage out;
|
|
550
551
|
|
|
551
552
|
vips__filename_split8( name, filename, option_string );
|
|
552
553
|
if( !(operation_name = vips_foreign_find_load( filename )) ) {
|
|
553
|
-
delete options;
|
|
554
|
-
throw VError();
|
|
554
|
+
delete options;
|
|
555
|
+
throw VError();
|
|
555
556
|
}
|
|
556
557
|
|
|
557
558
|
call_option_string( operation_name, option_string,
|
|
558
|
-
(options ? options : VImage::option())->
|
|
559
|
+
(options ? options : VImage::option())->
|
|
559
560
|
set( "filename", filename )->
|
|
560
561
|
set( "out", &out ) );
|
|
561
562
|
|
|
562
|
-
return( out );
|
|
563
|
+
return( out );
|
|
563
564
|
}
|
|
564
565
|
|
|
565
|
-
VImage
|
|
566
|
-
VImage::new_from_buffer( const void *buf, size_t len, const char *option_string,
|
|
566
|
+
VImage
|
|
567
|
+
VImage::new_from_buffer( const void *buf, size_t len, const char *option_string,
|
|
567
568
|
VOption *options )
|
|
568
569
|
{
|
|
569
570
|
const char *operation_name;
|
|
@@ -571,87 +572,87 @@ VImage::new_from_buffer( const void *buf, size_t len, const char *option_string,
|
|
|
571
572
|
VImage out;
|
|
572
573
|
|
|
573
574
|
if( !(operation_name = vips_foreign_find_load_buffer( buf, len )) ) {
|
|
574
|
-
delete options;
|
|
575
|
-
throw( VError() );
|
|
575
|
+
delete options;
|
|
576
|
+
throw( VError() );
|
|
576
577
|
}
|
|
577
578
|
|
|
578
579
|
/* We don't take a copy of the data or free it.
|
|
579
580
|
*/
|
|
580
581
|
blob = vips_blob_new( NULL, buf, len );
|
|
581
|
-
options = (options ? options : VImage::option())->
|
|
582
|
+
options = (options ? options : VImage::option())->
|
|
582
583
|
set( "buffer", blob )->
|
|
583
584
|
set( "out", &out );
|
|
584
585
|
vips_area_unref( VIPS_AREA( blob ) );
|
|
585
586
|
|
|
586
|
-
call_option_string( operation_name, option_string, options );
|
|
587
|
+
call_option_string( operation_name, option_string, options );
|
|
587
588
|
|
|
588
589
|
return( out );
|
|
589
590
|
}
|
|
590
591
|
|
|
591
|
-
VImage
|
|
592
|
-
VImage::new_from_buffer( const std::string &buf, const char *option_string,
|
|
592
|
+
VImage
|
|
593
|
+
VImage::new_from_buffer( const std::string &buf, const char *option_string,
|
|
593
594
|
VOption *options )
|
|
594
595
|
{
|
|
595
|
-
return( new_from_buffer( buf.c_str(), buf.size(),
|
|
596
|
+
return( new_from_buffer( buf.c_str(), buf.size(),
|
|
596
597
|
option_string, options ) );
|
|
597
598
|
}
|
|
598
599
|
|
|
599
|
-
VImage
|
|
600
|
-
VImage::new_from_source( VSource source, const char *option_string,
|
|
600
|
+
VImage
|
|
601
|
+
VImage::new_from_source( VSource source, const char *option_string,
|
|
601
602
|
VOption *options )
|
|
602
603
|
{
|
|
603
604
|
const char *operation_name;
|
|
604
605
|
VImage out;
|
|
605
606
|
|
|
606
|
-
if( !(operation_name = vips_foreign_find_load_source(
|
|
607
|
+
if( !(operation_name = vips_foreign_find_load_source(
|
|
607
608
|
source.get_source() )) ) {
|
|
608
|
-
delete options;
|
|
609
|
-
throw( VError() );
|
|
609
|
+
delete options;
|
|
610
|
+
throw( VError() );
|
|
610
611
|
}
|
|
611
612
|
|
|
612
|
-
options = (options ? options : VImage::option())->
|
|
613
|
+
options = (options ? options : VImage::option())->
|
|
613
614
|
set( "source", source )->
|
|
614
615
|
set( "out", &out );
|
|
615
616
|
|
|
616
|
-
call_option_string( operation_name, option_string, options );
|
|
617
|
+
call_option_string( operation_name, option_string, options );
|
|
617
618
|
|
|
618
619
|
return( out );
|
|
619
620
|
}
|
|
620
621
|
|
|
621
|
-
VImage
|
|
622
|
-
VImage::new_matrix( int width, int height )
|
|
622
|
+
VImage
|
|
623
|
+
VImage::new_matrix( int width, int height )
|
|
623
624
|
{
|
|
624
|
-
return( VImage( vips_image_new_matrix( width, height ) ) );
|
|
625
|
+
return( VImage( vips_image_new_matrix( width, height ) ) );
|
|
625
626
|
}
|
|
626
627
|
|
|
627
|
-
VImage
|
|
628
|
+
VImage
|
|
628
629
|
VImage::new_matrixv( int width, int height, ... )
|
|
629
630
|
{
|
|
630
631
|
VImage matrix = new_matrix( width, height );
|
|
631
|
-
VipsImage *vips_matrix = matrix.get_image();
|
|
632
|
+
VipsImage *vips_matrix = matrix.get_image();
|
|
632
633
|
|
|
633
634
|
va_list ap;
|
|
634
635
|
|
|
635
636
|
va_start( ap, height );
|
|
636
637
|
for( int y = 0; y < height; y++ )
|
|
637
638
|
for( int x = 0; x < width; x++ )
|
|
638
|
-
*VIPS_MATRIX( vips_matrix, x, y ) =
|
|
639
|
+
*VIPS_MATRIX( vips_matrix, x, y ) =
|
|
639
640
|
va_arg( ap, double );
|
|
640
641
|
va_end( ap );
|
|
641
642
|
|
|
642
|
-
return( matrix );
|
|
643
|
+
return( matrix );
|
|
643
644
|
}
|
|
644
645
|
|
|
645
646
|
VImage
|
|
646
647
|
VImage::write( VImage out ) const
|
|
647
648
|
{
|
|
648
649
|
if( vips_image_write( this->get_image(), out.get_image() ) )
|
|
649
|
-
throw VError();
|
|
650
|
+
throw VError();
|
|
650
651
|
|
|
651
|
-
return( out );
|
|
652
|
+
return( out );
|
|
652
653
|
}
|
|
653
654
|
|
|
654
|
-
void
|
|
655
|
+
void
|
|
655
656
|
VImage::write_to_file( const char *name, VOption *options ) const
|
|
656
657
|
{
|
|
657
658
|
char filename[VIPS_PATH_MAX];
|
|
@@ -660,18 +661,18 @@ VImage::write_to_file( const char *name, VOption *options ) const
|
|
|
660
661
|
|
|
661
662
|
vips__filename_split8( name, filename, option_string );
|
|
662
663
|
if( !(operation_name = vips_foreign_find_save( filename )) ) {
|
|
663
|
-
delete options;
|
|
664
|
-
throw VError();
|
|
664
|
+
delete options;
|
|
665
|
+
throw VError();
|
|
665
666
|
}
|
|
666
667
|
|
|
667
|
-
call_option_string( operation_name, option_string,
|
|
668
|
-
(options ? options : VImage::option())->
|
|
668
|
+
call_option_string( operation_name, option_string,
|
|
669
|
+
(options ? options : VImage::option())->
|
|
669
670
|
set( "in", *this )->
|
|
670
671
|
set( "filename", filename ) );
|
|
671
672
|
}
|
|
672
673
|
|
|
673
|
-
void
|
|
674
|
-
VImage::write_to_buffer( const char *suffix, void **buf, size_t *size,
|
|
674
|
+
void
|
|
675
|
+
VImage::write_to_buffer( const char *suffix, void **buf, size_t *size,
|
|
675
676
|
VOption *options ) const
|
|
676
677
|
{
|
|
677
678
|
char filename[VIPS_PATH_MAX];
|
|
@@ -681,16 +682,16 @@ VImage::write_to_buffer( const char *suffix, void **buf, size_t *size,
|
|
|
681
682
|
|
|
682
683
|
vips__filename_split8( suffix, filename, option_string );
|
|
683
684
|
if( !(operation_name = vips_foreign_find_save_buffer( filename )) ) {
|
|
684
|
-
delete options;
|
|
685
|
-
throw VError();
|
|
685
|
+
delete options;
|
|
686
|
+
throw VError();
|
|
686
687
|
}
|
|
687
688
|
|
|
688
|
-
call_option_string( operation_name, option_string,
|
|
689
|
-
(options ? options : VImage::option())->
|
|
689
|
+
call_option_string( operation_name, option_string,
|
|
690
|
+
(options ? options : VImage::option())->
|
|
690
691
|
set( "in", *this )->
|
|
691
692
|
set( "buffer", &blob ) );
|
|
692
693
|
|
|
693
|
-
if( blob ) {
|
|
694
|
+
if( blob ) {
|
|
694
695
|
if( buf ) {
|
|
695
696
|
*buf = VIPS_AREA( blob )->data;
|
|
696
697
|
VIPS_AREA( blob )->free_fn = NULL;
|
|
@@ -702,8 +703,8 @@ VImage::write_to_buffer( const char *suffix, void **buf, size_t *size,
|
|
|
702
703
|
}
|
|
703
704
|
}
|
|
704
705
|
|
|
705
|
-
void
|
|
706
|
-
VImage::write_to_target( const char *suffix, VTarget target,
|
|
706
|
+
void
|
|
707
|
+
VImage::write_to_target( const char *suffix, VTarget target,
|
|
707
708
|
VOption *options ) const
|
|
708
709
|
{
|
|
709
710
|
char filename[VIPS_PATH_MAX];
|
|
@@ -712,755 +713,755 @@ VImage::write_to_target( const char *suffix, VTarget target,
|
|
|
712
713
|
|
|
713
714
|
vips__filename_split8( suffix, filename, option_string );
|
|
714
715
|
if( !(operation_name = vips_foreign_find_save_target( filename )) ) {
|
|
715
|
-
delete options;
|
|
716
|
-
throw VError();
|
|
716
|
+
delete options;
|
|
717
|
+
throw VError();
|
|
717
718
|
}
|
|
718
719
|
|
|
719
|
-
call_option_string( operation_name, option_string,
|
|
720
|
-
(options ? options : VImage::option())->
|
|
720
|
+
call_option_string( operation_name, option_string,
|
|
721
|
+
(options ? options : VImage::option())->
|
|
721
722
|
set( "in", *this )->
|
|
722
723
|
set( "target", target ) );
|
|
723
724
|
}
|
|
724
725
|
|
|
725
726
|
#include "vips-operators.cpp"
|
|
726
727
|
|
|
727
|
-
std::vector<VImage>
|
|
728
|
+
std::vector<VImage>
|
|
728
729
|
VImage::bandsplit( VOption *options ) const
|
|
729
730
|
{
|
|
730
|
-
std::vector<VImage> b;
|
|
731
|
+
std::vector<VImage> b;
|
|
731
732
|
|
|
732
733
|
for( int i = 0; i < bands(); i++ )
|
|
733
|
-
b.push_back( extract_band( i ) );
|
|
734
|
+
b.push_back( extract_band( i ) );
|
|
734
735
|
|
|
735
|
-
return( b );
|
|
736
|
+
return( b );
|
|
736
737
|
}
|
|
737
738
|
|
|
738
|
-
VImage
|
|
739
|
+
VImage
|
|
739
740
|
VImage::bandjoin( VImage other, VOption *options ) const
|
|
740
741
|
{
|
|
741
|
-
VImage v[2] = { *this, other };
|
|
742
|
+
VImage v[2] = { *this, other };
|
|
742
743
|
std::vector<VImage> vec( v, v + VIPS_NUMBER( v ) );
|
|
743
744
|
|
|
744
|
-
return( bandjoin( vec, options ) );
|
|
745
|
+
return( bandjoin( vec, options ) );
|
|
745
746
|
}
|
|
746
747
|
|
|
747
|
-
VImage
|
|
748
|
+
VImage
|
|
748
749
|
VImage::composite( VImage other, VipsBlendMode mode, VOption *options ) const
|
|
749
750
|
{
|
|
750
|
-
VImage v[2] = { *this, other };
|
|
751
|
+
VImage v[2] = { *this, other };
|
|
751
752
|
std::vector<VImage> ivec( v, v + VIPS_NUMBER( v ) );
|
|
752
|
-
int m[1] = { static_cast<int>( mode ) };
|
|
753
|
+
int m[1] = { static_cast<int>( mode ) };
|
|
753
754
|
std::vector<int> mvec( m, m + VIPS_NUMBER( m ) );
|
|
754
755
|
|
|
755
|
-
return( composite( ivec, mvec, options ) );
|
|
756
|
+
return( composite( ivec, mvec, options ) );
|
|
756
757
|
}
|
|
757
758
|
|
|
758
|
-
std::complex<double>
|
|
759
|
+
std::complex<double>
|
|
759
760
|
VImage::minpos( VOption *options ) const
|
|
760
761
|
{
|
|
761
762
|
double x, y;
|
|
762
763
|
|
|
763
|
-
(void) min(
|
|
764
|
+
(void) min(
|
|
764
765
|
(options ? options : VImage::option()) ->
|
|
765
766
|
set( "x", &x ) ->
|
|
766
767
|
set( "y", &y ) );
|
|
767
768
|
|
|
768
|
-
return( std::complex<double>( x, y ) );
|
|
769
|
+
return( std::complex<double>( x, y ) );
|
|
769
770
|
}
|
|
770
771
|
|
|
771
|
-
std::complex<double>
|
|
772
|
+
std::complex<double>
|
|
772
773
|
VImage::maxpos( VOption *options ) const
|
|
773
774
|
{
|
|
774
775
|
double x, y;
|
|
775
776
|
|
|
776
|
-
(void) max(
|
|
777
|
+
(void) max(
|
|
777
778
|
(options ? options : VImage::option()) ->
|
|
778
779
|
set( "x", &x ) ->
|
|
779
780
|
set( "y", &y ) );
|
|
780
781
|
|
|
781
|
-
return( std::complex<double>( x, y ) );
|
|
782
|
+
return( std::complex<double>( x, y ) );
|
|
782
783
|
}
|
|
783
784
|
|
|
784
785
|
// Operator overloads
|
|
785
786
|
|
|
786
|
-
VImage
|
|
787
|
+
VImage
|
|
787
788
|
VImage::operator[]( int index ) const
|
|
788
789
|
{
|
|
789
|
-
return( this->extract_band( index ) );
|
|
790
|
+
return( this->extract_band( index ) );
|
|
790
791
|
}
|
|
791
792
|
|
|
792
|
-
std::vector<double>
|
|
793
|
+
std::vector<double>
|
|
793
794
|
VImage::operator()( int x, int y ) const
|
|
794
795
|
{
|
|
795
|
-
return( this->getpoint( x, y ) );
|
|
796
|
+
return( this->getpoint( x, y ) );
|
|
796
797
|
}
|
|
797
798
|
|
|
798
|
-
VImage
|
|
799
|
+
VImage
|
|
799
800
|
operator+( const VImage a, const VImage b )
|
|
800
801
|
{
|
|
801
802
|
return( a.add( b ) );
|
|
802
803
|
}
|
|
803
804
|
|
|
804
|
-
VImage
|
|
805
|
-
operator+( double a, const VImage b )
|
|
805
|
+
VImage
|
|
806
|
+
operator+( double a, const VImage b )
|
|
806
807
|
{
|
|
807
|
-
return( b.linear( 1.0, a ) );
|
|
808
|
+
return( b.linear( 1.0, a ) );
|
|
808
809
|
}
|
|
809
810
|
|
|
810
|
-
VImage
|
|
811
|
-
operator+( const VImage a, double b )
|
|
812
|
-
{
|
|
813
|
-
return( a.linear( 1.0, b ) );
|
|
811
|
+
VImage
|
|
812
|
+
operator+( const VImage a, double b )
|
|
813
|
+
{
|
|
814
|
+
return( a.linear( 1.0, b ) );
|
|
814
815
|
}
|
|
815
816
|
|
|
816
|
-
VImage
|
|
817
|
-
operator+( const std::vector<double> a, const VImage b )
|
|
817
|
+
VImage
|
|
818
|
+
operator+( const std::vector<double> a, const VImage b )
|
|
818
819
|
{
|
|
819
|
-
return( b.linear( 1.0, a ) );
|
|
820
|
+
return( b.linear( 1.0, a ) );
|
|
820
821
|
}
|
|
821
822
|
|
|
822
|
-
VImage
|
|
823
|
-
operator+( const VImage a, const std::vector<double> b )
|
|
824
|
-
{
|
|
825
|
-
return( a.linear( 1.0, b ) );
|
|
823
|
+
VImage
|
|
824
|
+
operator+( const VImage a, const std::vector<double> b )
|
|
825
|
+
{
|
|
826
|
+
return( a.linear( 1.0, b ) );
|
|
826
827
|
}
|
|
827
828
|
|
|
828
|
-
VImage &
|
|
829
|
+
VImage &
|
|
829
830
|
operator+=( VImage &a, const VImage b )
|
|
830
831
|
{
|
|
831
|
-
return( a = a + b );
|
|
832
|
+
return( a = a + b );
|
|
832
833
|
}
|
|
833
834
|
|
|
834
|
-
VImage &
|
|
835
|
+
VImage &
|
|
835
836
|
operator+=( VImage &a, const double b )
|
|
836
837
|
{
|
|
837
|
-
return( a = a + b );
|
|
838
|
+
return( a = a + b );
|
|
838
839
|
}
|
|
839
840
|
|
|
840
|
-
VImage &
|
|
841
|
+
VImage &
|
|
841
842
|
operator+=( VImage &a, const std::vector<double> b )
|
|
842
843
|
{
|
|
843
|
-
return( a = a + b );
|
|
844
|
+
return( a = a + b );
|
|
844
845
|
}
|
|
845
846
|
|
|
846
|
-
VImage
|
|
847
|
-
operator-( const VImage a, const VImage b )
|
|
847
|
+
VImage
|
|
848
|
+
operator-( const VImage a, const VImage b )
|
|
848
849
|
{
|
|
849
850
|
return( a.subtract( b ) );
|
|
850
851
|
}
|
|
851
852
|
|
|
852
|
-
VImage
|
|
853
|
-
operator-( double a, const VImage b )
|
|
853
|
+
VImage
|
|
854
|
+
operator-( double a, const VImage b )
|
|
854
855
|
{
|
|
855
|
-
return( b.linear( -1.0, a ) );
|
|
856
|
+
return( b.linear( -1.0, a ) );
|
|
856
857
|
}
|
|
857
858
|
|
|
858
|
-
VImage
|
|
859
|
-
operator-( const VImage a, double b )
|
|
860
|
-
{
|
|
861
|
-
return( a.linear( 1.0, -b ) );
|
|
859
|
+
VImage
|
|
860
|
+
operator-( const VImage a, double b )
|
|
861
|
+
{
|
|
862
|
+
return( a.linear( 1.0, -b ) );
|
|
862
863
|
}
|
|
863
864
|
|
|
864
|
-
VImage
|
|
865
|
-
operator-( const std::vector<double> a, const VImage b )
|
|
865
|
+
VImage
|
|
866
|
+
operator-( const std::vector<double> a, const VImage b )
|
|
866
867
|
{
|
|
867
|
-
return( b.linear( -1.0, a ) );
|
|
868
|
+
return( b.linear( -1.0, a ) );
|
|
868
869
|
}
|
|
869
870
|
|
|
870
|
-
VImage
|
|
871
|
-
operator-( const VImage a, const std::vector<double> b )
|
|
872
|
-
{
|
|
873
|
-
return( a.linear( 1.0, vips::negate( b ) ) );
|
|
871
|
+
VImage
|
|
872
|
+
operator-( const VImage a, const std::vector<double> b )
|
|
873
|
+
{
|
|
874
|
+
return( a.linear( 1.0, vips::negate( b ) ) );
|
|
874
875
|
}
|
|
875
876
|
|
|
876
|
-
VImage &
|
|
877
|
+
VImage &
|
|
877
878
|
operator-=( VImage &a, const VImage b )
|
|
878
879
|
{
|
|
879
|
-
return( a = a - b );
|
|
880
|
+
return( a = a - b );
|
|
880
881
|
}
|
|
881
882
|
|
|
882
|
-
VImage &
|
|
883
|
+
VImage &
|
|
883
884
|
operator-=( VImage &a, const double b )
|
|
884
885
|
{
|
|
885
|
-
return( a = a - b );
|
|
886
|
+
return( a = a - b );
|
|
886
887
|
}
|
|
887
888
|
|
|
888
|
-
VImage &
|
|
889
|
+
VImage &
|
|
889
890
|
operator-=( VImage &a, const std::vector<double> b )
|
|
890
891
|
{
|
|
891
|
-
return( a = a - b );
|
|
892
|
+
return( a = a - b );
|
|
892
893
|
}
|
|
893
894
|
|
|
894
|
-
VImage
|
|
895
|
-
operator-( const VImage a )
|
|
896
|
-
{
|
|
895
|
+
VImage
|
|
896
|
+
operator-( const VImage a )
|
|
897
|
+
{
|
|
897
898
|
return( a * -1 );
|
|
898
899
|
}
|
|
899
900
|
|
|
900
|
-
VImage
|
|
901
|
-
operator*( const VImage a, const VImage b )
|
|
901
|
+
VImage
|
|
902
|
+
operator*( const VImage a, const VImage b )
|
|
902
903
|
{
|
|
903
904
|
return( a.multiply( b ) );
|
|
904
905
|
}
|
|
905
906
|
|
|
906
|
-
VImage
|
|
907
|
-
operator*( double a, const VImage b )
|
|
907
|
+
VImage
|
|
908
|
+
operator*( double a, const VImage b )
|
|
908
909
|
{
|
|
909
|
-
return( b.linear( a, 0.0 ) );
|
|
910
|
+
return( b.linear( a, 0.0 ) );
|
|
910
911
|
}
|
|
911
912
|
|
|
912
|
-
VImage
|
|
913
|
-
operator*( const VImage a, double b )
|
|
914
|
-
{
|
|
915
|
-
return( a.linear( b, 0.0 ) );
|
|
913
|
+
VImage
|
|
914
|
+
operator*( const VImage a, double b )
|
|
915
|
+
{
|
|
916
|
+
return( a.linear( b, 0.0 ) );
|
|
916
917
|
}
|
|
917
918
|
|
|
918
|
-
VImage
|
|
919
|
-
operator*( const std::vector<double> a, const VImage b )
|
|
919
|
+
VImage
|
|
920
|
+
operator*( const std::vector<double> a, const VImage b )
|
|
920
921
|
{
|
|
921
|
-
return( b.linear( a, 0.0 ) );
|
|
922
|
+
return( b.linear( a, 0.0 ) );
|
|
922
923
|
}
|
|
923
924
|
|
|
924
|
-
VImage
|
|
925
|
-
operator*( const VImage a, const std::vector<double> b )
|
|
926
|
-
{
|
|
927
|
-
return( a.linear( b, 0.0 ) );
|
|
925
|
+
VImage
|
|
926
|
+
operator*( const VImage a, const std::vector<double> b )
|
|
927
|
+
{
|
|
928
|
+
return( a.linear( b, 0.0 ) );
|
|
928
929
|
}
|
|
929
930
|
|
|
930
|
-
VImage &
|
|
931
|
+
VImage &
|
|
931
932
|
operator*=( VImage &a, const VImage b )
|
|
932
933
|
{
|
|
933
|
-
return( a = a * b );
|
|
934
|
+
return( a = a * b );
|
|
934
935
|
}
|
|
935
936
|
|
|
936
|
-
VImage &
|
|
937
|
+
VImage &
|
|
937
938
|
operator*=( VImage &a, const double b )
|
|
938
939
|
{
|
|
939
|
-
return( a = a * b );
|
|
940
|
+
return( a = a * b );
|
|
940
941
|
}
|
|
941
942
|
|
|
942
|
-
VImage &
|
|
943
|
+
VImage &
|
|
943
944
|
operator*=( VImage &a, const std::vector<double> b )
|
|
944
945
|
{
|
|
945
|
-
return( a = a * b );
|
|
946
|
+
return( a = a * b );
|
|
946
947
|
}
|
|
947
948
|
|
|
948
|
-
VImage
|
|
949
|
-
operator/( const VImage a, const VImage b )
|
|
949
|
+
VImage
|
|
950
|
+
operator/( const VImage a, const VImage b )
|
|
950
951
|
{
|
|
951
952
|
return( a.divide( b ) );
|
|
952
953
|
}
|
|
953
954
|
|
|
954
|
-
VImage
|
|
955
|
-
operator/( double a, const VImage b )
|
|
955
|
+
VImage
|
|
956
|
+
operator/( double a, const VImage b )
|
|
956
957
|
{
|
|
957
|
-
return( b.pow( -1.0 ).linear( a, 0.0 ) );
|
|
958
|
+
return( b.pow( -1.0 ).linear( a, 0.0 ) );
|
|
958
959
|
}
|
|
959
960
|
|
|
960
|
-
VImage
|
|
961
|
-
operator/( const VImage a, double b )
|
|
962
|
-
{
|
|
963
|
-
return( a.linear( 1.0 / b, 0.0 ) );
|
|
961
|
+
VImage
|
|
962
|
+
operator/( const VImage a, double b )
|
|
963
|
+
{
|
|
964
|
+
return( a.linear( 1.0 / b, 0.0 ) );
|
|
964
965
|
}
|
|
965
966
|
|
|
966
|
-
VImage
|
|
967
|
-
operator/( const std::vector<double> a, const VImage b )
|
|
967
|
+
VImage
|
|
968
|
+
operator/( const std::vector<double> a, const VImage b )
|
|
968
969
|
{
|
|
969
|
-
return( b.pow( -1.0 ).linear( a, 0.0 ) );
|
|
970
|
+
return( b.pow( -1.0 ).linear( a, 0.0 ) );
|
|
970
971
|
}
|
|
971
972
|
|
|
972
|
-
VImage
|
|
973
|
-
operator/( const VImage a, const std::vector<double> b )
|
|
974
|
-
{
|
|
975
|
-
return( a.linear( vips::invert( b ), 0.0 ) );
|
|
973
|
+
VImage
|
|
974
|
+
operator/( const VImage a, const std::vector<double> b )
|
|
975
|
+
{
|
|
976
|
+
return( a.linear( vips::invert( b ), 0.0 ) );
|
|
976
977
|
}
|
|
977
978
|
|
|
978
|
-
VImage &
|
|
979
|
+
VImage &
|
|
979
980
|
operator/=( VImage &a, const VImage b )
|
|
980
981
|
{
|
|
981
|
-
return( a = a / b );
|
|
982
|
+
return( a = a / b );
|
|
982
983
|
}
|
|
983
984
|
|
|
984
|
-
VImage &
|
|
985
|
+
VImage &
|
|
985
986
|
operator/=( VImage &a, const double b )
|
|
986
987
|
{
|
|
987
|
-
return( a = a / b );
|
|
988
|
+
return( a = a / b );
|
|
988
989
|
}
|
|
989
990
|
|
|
990
|
-
VImage &
|
|
991
|
+
VImage &
|
|
991
992
|
operator/=( VImage &a, const std::vector<double> b )
|
|
992
993
|
{
|
|
993
|
-
return( a = a / b );
|
|
994
|
+
return( a = a / b );
|
|
994
995
|
}
|
|
995
996
|
|
|
996
|
-
VImage
|
|
997
|
-
operator%( const VImage a, const VImage b )
|
|
997
|
+
VImage
|
|
998
|
+
operator%( const VImage a, const VImage b )
|
|
998
999
|
{
|
|
999
1000
|
return( a.remainder( b ) );
|
|
1000
1001
|
}
|
|
1001
1002
|
|
|
1002
|
-
VImage
|
|
1003
|
-
operator%( const VImage a, const double b )
|
|
1004
|
-
{
|
|
1005
|
-
return( a.remainder_const( to_vector( b ) ) );
|
|
1003
|
+
VImage
|
|
1004
|
+
operator%( const VImage a, const double b )
|
|
1005
|
+
{
|
|
1006
|
+
return( a.remainder_const( to_vector( b ) ) );
|
|
1006
1007
|
}
|
|
1007
1008
|
|
|
1008
|
-
VImage
|
|
1009
|
-
operator%( const VImage a, const std::vector<double> b )
|
|
1010
|
-
{
|
|
1011
|
-
return( a.remainder_const( b ) );
|
|
1009
|
+
VImage
|
|
1010
|
+
operator%( const VImage a, const std::vector<double> b )
|
|
1011
|
+
{
|
|
1012
|
+
return( a.remainder_const( b ) );
|
|
1012
1013
|
}
|
|
1013
1014
|
|
|
1014
|
-
VImage &
|
|
1015
|
+
VImage &
|
|
1015
1016
|
operator%=( VImage &a, const VImage b )
|
|
1016
1017
|
{
|
|
1017
|
-
return( a = a % b );
|
|
1018
|
+
return( a = a % b );
|
|
1018
1019
|
}
|
|
1019
1020
|
|
|
1020
|
-
VImage &
|
|
1021
|
+
VImage &
|
|
1021
1022
|
operator%=( VImage &a, const double b )
|
|
1022
1023
|
{
|
|
1023
|
-
return( a = a % b );
|
|
1024
|
+
return( a = a % b );
|
|
1024
1025
|
}
|
|
1025
1026
|
|
|
1026
|
-
VImage &
|
|
1027
|
+
VImage &
|
|
1027
1028
|
operator%=( VImage &a, const std::vector<double> b )
|
|
1028
1029
|
{
|
|
1029
|
-
return( a = a % b );
|
|
1030
|
+
return( a = a % b );
|
|
1030
1031
|
}
|
|
1031
1032
|
|
|
1032
|
-
VImage
|
|
1033
|
-
operator<( const VImage a, const VImage b )
|
|
1033
|
+
VImage
|
|
1034
|
+
operator<( const VImage a, const VImage b )
|
|
1034
1035
|
{
|
|
1035
1036
|
return( a.relational( b, VIPS_OPERATION_RELATIONAL_LESS ) );
|
|
1036
1037
|
}
|
|
1037
1038
|
|
|
1038
|
-
VImage
|
|
1039
|
-
operator<( const double a, const VImage b )
|
|
1039
|
+
VImage
|
|
1040
|
+
operator<( const double a, const VImage b )
|
|
1040
1041
|
{
|
|
1041
|
-
return( b.relational_const( VIPS_OPERATION_RELATIONAL_MORE,
|
|
1042
|
-
to_vector( a ) ) );
|
|
1042
|
+
return( b.relational_const( VIPS_OPERATION_RELATIONAL_MORE,
|
|
1043
|
+
to_vector( a ) ) );
|
|
1043
1044
|
}
|
|
1044
1045
|
|
|
1045
|
-
VImage
|
|
1046
|
-
operator<( const VImage a, const double b )
|
|
1047
|
-
{
|
|
1048
|
-
return( a.relational_const( VIPS_OPERATION_RELATIONAL_LESS,
|
|
1049
|
-
to_vector( b ) ) );
|
|
1046
|
+
VImage
|
|
1047
|
+
operator<( const VImage a, const double b )
|
|
1048
|
+
{
|
|
1049
|
+
return( a.relational_const( VIPS_OPERATION_RELATIONAL_LESS,
|
|
1050
|
+
to_vector( b ) ) );
|
|
1050
1051
|
}
|
|
1051
1052
|
|
|
1052
|
-
VImage
|
|
1053
|
-
operator<( const std::vector<double> a, const VImage b )
|
|
1053
|
+
VImage
|
|
1054
|
+
operator<( const std::vector<double> a, const VImage b )
|
|
1054
1055
|
{
|
|
1055
|
-
return( b.relational_const( VIPS_OPERATION_RELATIONAL_MORE,
|
|
1056
|
-
a ) );
|
|
1056
|
+
return( b.relational_const( VIPS_OPERATION_RELATIONAL_MORE,
|
|
1057
|
+
a ) );
|
|
1057
1058
|
}
|
|
1058
1059
|
|
|
1059
|
-
VImage
|
|
1060
|
-
operator<( const VImage a, const std::vector<double> b )
|
|
1061
|
-
{
|
|
1062
|
-
return( a.relational_const( VIPS_OPERATION_RELATIONAL_LESS,
|
|
1063
|
-
b ) );
|
|
1060
|
+
VImage
|
|
1061
|
+
operator<( const VImage a, const std::vector<double> b )
|
|
1062
|
+
{
|
|
1063
|
+
return( a.relational_const( VIPS_OPERATION_RELATIONAL_LESS,
|
|
1064
|
+
b ) );
|
|
1064
1065
|
}
|
|
1065
1066
|
|
|
1066
|
-
VImage
|
|
1067
|
-
operator<=( const VImage a, const VImage b )
|
|
1067
|
+
VImage
|
|
1068
|
+
operator<=( const VImage a, const VImage b )
|
|
1068
1069
|
{
|
|
1069
1070
|
return( a.relational( b, VIPS_OPERATION_RELATIONAL_LESSEQ ) );
|
|
1070
1071
|
}
|
|
1071
1072
|
|
|
1072
|
-
VImage
|
|
1073
|
-
operator<=( const double a, const VImage b )
|
|
1073
|
+
VImage
|
|
1074
|
+
operator<=( const double a, const VImage b )
|
|
1074
1075
|
{
|
|
1075
|
-
return( b.relational_const( VIPS_OPERATION_RELATIONAL_MOREEQ,
|
|
1076
|
-
to_vector( a ) ) );
|
|
1076
|
+
return( b.relational_const( VIPS_OPERATION_RELATIONAL_MOREEQ,
|
|
1077
|
+
to_vector( a ) ) );
|
|
1077
1078
|
}
|
|
1078
1079
|
|
|
1079
|
-
VImage
|
|
1080
|
-
operator<=( const VImage a, const double b )
|
|
1081
|
-
{
|
|
1082
|
-
return( a.relational_const( VIPS_OPERATION_RELATIONAL_LESSEQ,
|
|
1083
|
-
to_vector( b ) ) );
|
|
1080
|
+
VImage
|
|
1081
|
+
operator<=( const VImage a, const double b )
|
|
1082
|
+
{
|
|
1083
|
+
return( a.relational_const( VIPS_OPERATION_RELATIONAL_LESSEQ,
|
|
1084
|
+
to_vector( b ) ) );
|
|
1084
1085
|
}
|
|
1085
1086
|
|
|
1086
|
-
VImage
|
|
1087
|
-
operator<=( const std::vector<double> a, const VImage b )
|
|
1087
|
+
VImage
|
|
1088
|
+
operator<=( const std::vector<double> a, const VImage b )
|
|
1088
1089
|
{
|
|
1089
|
-
return( b.relational_const( VIPS_OPERATION_RELATIONAL_MOREEQ,
|
|
1090
|
+
return( b.relational_const( VIPS_OPERATION_RELATIONAL_MOREEQ,
|
|
1090
1091
|
a ) );
|
|
1091
1092
|
}
|
|
1092
1093
|
|
|
1093
|
-
VImage
|
|
1094
|
-
operator<=( const VImage a, const std::vector<double> b )
|
|
1095
|
-
{
|
|
1094
|
+
VImage
|
|
1095
|
+
operator<=( const VImage a, const std::vector<double> b )
|
|
1096
|
+
{
|
|
1096
1097
|
return( a.relational_const( VIPS_OPERATION_RELATIONAL_LESSEQ,
|
|
1097
1098
|
b ) );
|
|
1098
1099
|
}
|
|
1099
1100
|
|
|
1100
|
-
VImage
|
|
1101
|
-
operator>( const VImage a, const VImage b )
|
|
1101
|
+
VImage
|
|
1102
|
+
operator>( const VImage a, const VImage b )
|
|
1102
1103
|
{
|
|
1103
1104
|
return( a.relational( b, VIPS_OPERATION_RELATIONAL_MORE ) );
|
|
1104
1105
|
}
|
|
1105
1106
|
|
|
1106
|
-
VImage
|
|
1107
|
-
operator>( const double a, const VImage b )
|
|
1107
|
+
VImage
|
|
1108
|
+
operator>( const double a, const VImage b )
|
|
1108
1109
|
{
|
|
1109
|
-
return( b.relational_const( VIPS_OPERATION_RELATIONAL_LESS,
|
|
1110
|
-
to_vector( a ) ) );
|
|
1110
|
+
return( b.relational_const( VIPS_OPERATION_RELATIONAL_LESS,
|
|
1111
|
+
to_vector( a ) ) );
|
|
1111
1112
|
}
|
|
1112
1113
|
|
|
1113
|
-
VImage
|
|
1114
|
-
operator>( const VImage a, const double b )
|
|
1115
|
-
{
|
|
1116
|
-
return( a.relational_const( VIPS_OPERATION_RELATIONAL_MORE,
|
|
1114
|
+
VImage
|
|
1115
|
+
operator>( const VImage a, const double b )
|
|
1116
|
+
{
|
|
1117
|
+
return( a.relational_const( VIPS_OPERATION_RELATIONAL_MORE,
|
|
1117
1118
|
to_vector( b ) ) );
|
|
1118
1119
|
}
|
|
1119
1120
|
|
|
1120
|
-
VImage
|
|
1121
|
-
operator>( const std::vector<double> a, const VImage b )
|
|
1121
|
+
VImage
|
|
1122
|
+
operator>( const std::vector<double> a, const VImage b )
|
|
1122
1123
|
{
|
|
1123
|
-
return( b.relational_const( VIPS_OPERATION_RELATIONAL_LESS,
|
|
1124
|
+
return( b.relational_const( VIPS_OPERATION_RELATIONAL_LESS,
|
|
1124
1125
|
a ) );
|
|
1125
1126
|
}
|
|
1126
1127
|
|
|
1127
|
-
VImage
|
|
1128
|
-
operator>( const VImage a, const std::vector<double> b )
|
|
1129
|
-
{
|
|
1130
|
-
return( a.relational_const( VIPS_OPERATION_RELATIONAL_MORE,
|
|
1128
|
+
VImage
|
|
1129
|
+
operator>( const VImage a, const std::vector<double> b )
|
|
1130
|
+
{
|
|
1131
|
+
return( a.relational_const( VIPS_OPERATION_RELATIONAL_MORE,
|
|
1131
1132
|
b ) );
|
|
1132
1133
|
}
|
|
1133
1134
|
|
|
1134
|
-
VImage
|
|
1135
|
-
operator>=( const VImage a, const VImage b )
|
|
1135
|
+
VImage
|
|
1136
|
+
operator>=( const VImage a, const VImage b )
|
|
1136
1137
|
{
|
|
1137
1138
|
return( a.relational( b, VIPS_OPERATION_RELATIONAL_MOREEQ ) );
|
|
1138
1139
|
}
|
|
1139
1140
|
|
|
1140
|
-
VImage
|
|
1141
|
-
operator>=( const double a, const VImage b )
|
|
1141
|
+
VImage
|
|
1142
|
+
operator>=( const double a, const VImage b )
|
|
1142
1143
|
{
|
|
1143
|
-
return( b.relational_const( VIPS_OPERATION_RELATIONAL_LESSEQ,
|
|
1144
|
-
to_vector( a ) ) );
|
|
1144
|
+
return( b.relational_const( VIPS_OPERATION_RELATIONAL_LESSEQ,
|
|
1145
|
+
to_vector( a ) ) );
|
|
1145
1146
|
}
|
|
1146
1147
|
|
|
1147
|
-
VImage
|
|
1148
|
-
operator>=( const VImage a, const double b )
|
|
1149
|
-
{
|
|
1150
|
-
return( a.relational_const( VIPS_OPERATION_RELATIONAL_MOREEQ,
|
|
1151
|
-
to_vector( b ) ) );
|
|
1148
|
+
VImage
|
|
1149
|
+
operator>=( const VImage a, const double b )
|
|
1150
|
+
{
|
|
1151
|
+
return( a.relational_const( VIPS_OPERATION_RELATIONAL_MOREEQ,
|
|
1152
|
+
to_vector( b ) ) );
|
|
1152
1153
|
}
|
|
1153
1154
|
|
|
1154
|
-
VImage
|
|
1155
|
-
operator>=( const std::vector<double> a, const VImage b )
|
|
1155
|
+
VImage
|
|
1156
|
+
operator>=( const std::vector<double> a, const VImage b )
|
|
1156
1157
|
{
|
|
1157
|
-
return( b.relational_const( VIPS_OPERATION_RELATIONAL_LESSEQ,
|
|
1158
|
+
return( b.relational_const( VIPS_OPERATION_RELATIONAL_LESSEQ,
|
|
1158
1159
|
a ) );
|
|
1159
1160
|
}
|
|
1160
1161
|
|
|
1161
|
-
VImage
|
|
1162
|
-
operator>=( const VImage a, const std::vector<double> b )
|
|
1163
|
-
{
|
|
1164
|
-
return( a.relational_const( VIPS_OPERATION_RELATIONAL_MOREEQ,
|
|
1162
|
+
VImage
|
|
1163
|
+
operator>=( const VImage a, const std::vector<double> b )
|
|
1164
|
+
{
|
|
1165
|
+
return( a.relational_const( VIPS_OPERATION_RELATIONAL_MOREEQ,
|
|
1165
1166
|
b ) );
|
|
1166
1167
|
}
|
|
1167
1168
|
|
|
1168
|
-
VImage
|
|
1169
|
-
operator==( const VImage a, const VImage b )
|
|
1169
|
+
VImage
|
|
1170
|
+
operator==( const VImage a, const VImage b )
|
|
1170
1171
|
{
|
|
1171
1172
|
return( a.relational( b, VIPS_OPERATION_RELATIONAL_EQUAL ) );
|
|
1172
1173
|
}
|
|
1173
1174
|
|
|
1174
|
-
VImage
|
|
1175
|
-
operator==( const double a, const VImage b )
|
|
1175
|
+
VImage
|
|
1176
|
+
operator==( const double a, const VImage b )
|
|
1176
1177
|
{
|
|
1177
|
-
return( b.relational_const( VIPS_OPERATION_RELATIONAL_EQUAL,
|
|
1178
|
+
return( b.relational_const( VIPS_OPERATION_RELATIONAL_EQUAL,
|
|
1178
1179
|
to_vector( a ) ) );
|
|
1179
1180
|
}
|
|
1180
1181
|
|
|
1181
|
-
VImage
|
|
1182
|
-
operator==( const VImage a, const double b )
|
|
1183
|
-
{
|
|
1184
|
-
return( a.relational_const( VIPS_OPERATION_RELATIONAL_EQUAL,
|
|
1182
|
+
VImage
|
|
1183
|
+
operator==( const VImage a, const double b )
|
|
1184
|
+
{
|
|
1185
|
+
return( a.relational_const( VIPS_OPERATION_RELATIONAL_EQUAL,
|
|
1185
1186
|
to_vector( b ) ) );
|
|
1186
1187
|
}
|
|
1187
1188
|
|
|
1188
|
-
VImage
|
|
1189
|
-
operator==( const std::vector<double> a, const VImage b )
|
|
1189
|
+
VImage
|
|
1190
|
+
operator==( const std::vector<double> a, const VImage b )
|
|
1190
1191
|
{
|
|
1191
|
-
return( b.relational_const( VIPS_OPERATION_RELATIONAL_EQUAL,
|
|
1192
|
+
return( b.relational_const( VIPS_OPERATION_RELATIONAL_EQUAL,
|
|
1192
1193
|
a ) );
|
|
1193
1194
|
}
|
|
1194
1195
|
|
|
1195
|
-
VImage
|
|
1196
|
-
operator==( const VImage a, const std::vector<double> b )
|
|
1197
|
-
{
|
|
1198
|
-
return( a.relational_const( VIPS_OPERATION_RELATIONAL_EQUAL,
|
|
1196
|
+
VImage
|
|
1197
|
+
operator==( const VImage a, const std::vector<double> b )
|
|
1198
|
+
{
|
|
1199
|
+
return( a.relational_const( VIPS_OPERATION_RELATIONAL_EQUAL,
|
|
1199
1200
|
b ) );
|
|
1200
1201
|
}
|
|
1201
1202
|
|
|
1202
|
-
VImage
|
|
1203
|
-
operator!=( const VImage a, const VImage b )
|
|
1203
|
+
VImage
|
|
1204
|
+
operator!=( const VImage a, const VImage b )
|
|
1204
1205
|
{
|
|
1205
1206
|
return( a.relational( b, VIPS_OPERATION_RELATIONAL_NOTEQ ) );
|
|
1206
1207
|
}
|
|
1207
1208
|
|
|
1208
|
-
VImage
|
|
1209
|
-
operator!=( const double a, const VImage b )
|
|
1209
|
+
VImage
|
|
1210
|
+
operator!=( const double a, const VImage b )
|
|
1210
1211
|
{
|
|
1211
1212
|
return( b.relational_const( VIPS_OPERATION_RELATIONAL_NOTEQ,
|
|
1212
|
-
to_vector( a ) ) );
|
|
1213
|
+
to_vector( a ) ) );
|
|
1213
1214
|
}
|
|
1214
1215
|
|
|
1215
|
-
VImage
|
|
1216
|
-
operator!=( const VImage a, const double b )
|
|
1217
|
-
{
|
|
1218
|
-
return( a.relational_const( VIPS_OPERATION_RELATIONAL_NOTEQ,
|
|
1216
|
+
VImage
|
|
1217
|
+
operator!=( const VImage a, const double b )
|
|
1218
|
+
{
|
|
1219
|
+
return( a.relational_const( VIPS_OPERATION_RELATIONAL_NOTEQ,
|
|
1219
1220
|
to_vector( b ) ) );
|
|
1220
1221
|
}
|
|
1221
1222
|
|
|
1222
|
-
VImage
|
|
1223
|
-
operator!=( const std::vector<double> a, const VImage b )
|
|
1223
|
+
VImage
|
|
1224
|
+
operator!=( const std::vector<double> a, const VImage b )
|
|
1224
1225
|
{
|
|
1225
1226
|
return( b.relational_const( VIPS_OPERATION_RELATIONAL_NOTEQ,
|
|
1226
1227
|
a ) );
|
|
1227
1228
|
}
|
|
1228
1229
|
|
|
1229
|
-
VImage
|
|
1230
|
-
operator!=( const VImage a, const std::vector<double> b )
|
|
1231
|
-
{
|
|
1230
|
+
VImage
|
|
1231
|
+
operator!=( const VImage a, const std::vector<double> b )
|
|
1232
|
+
{
|
|
1232
1233
|
return( a.relational_const( VIPS_OPERATION_RELATIONAL_NOTEQ,
|
|
1233
1234
|
b ) );
|
|
1234
1235
|
}
|
|
1235
1236
|
|
|
1236
|
-
VImage
|
|
1237
|
-
operator&( const VImage a, const VImage b )
|
|
1237
|
+
VImage
|
|
1238
|
+
operator&( const VImage a, const VImage b )
|
|
1238
1239
|
{
|
|
1239
1240
|
return( a.boolean( b, VIPS_OPERATION_BOOLEAN_AND ) );
|
|
1240
1241
|
}
|
|
1241
1242
|
|
|
1242
|
-
VImage
|
|
1243
|
-
operator&( const double a, const VImage b )
|
|
1243
|
+
VImage
|
|
1244
|
+
operator&( const double a, const VImage b )
|
|
1244
1245
|
{
|
|
1245
|
-
return( b.boolean_const( VIPS_OPERATION_BOOLEAN_AND,
|
|
1246
|
-
to_vector( a ) ) );
|
|
1246
|
+
return( b.boolean_const( VIPS_OPERATION_BOOLEAN_AND,
|
|
1247
|
+
to_vector( a ) ) );
|
|
1247
1248
|
}
|
|
1248
1249
|
|
|
1249
|
-
VImage
|
|
1250
|
-
operator&( const VImage a, const double b )
|
|
1251
|
-
{
|
|
1252
|
-
return( a.boolean_const( VIPS_OPERATION_BOOLEAN_AND,
|
|
1250
|
+
VImage
|
|
1251
|
+
operator&( const VImage a, const double b )
|
|
1252
|
+
{
|
|
1253
|
+
return( a.boolean_const( VIPS_OPERATION_BOOLEAN_AND,
|
|
1253
1254
|
to_vector( b ) ) );
|
|
1254
1255
|
}
|
|
1255
1256
|
|
|
1256
|
-
VImage
|
|
1257
|
-
operator&( const std::vector<double> a, const VImage b )
|
|
1257
|
+
VImage
|
|
1258
|
+
operator&( const std::vector<double> a, const VImage b )
|
|
1258
1259
|
{
|
|
1259
1260
|
return( b.boolean_const( VIPS_OPERATION_BOOLEAN_AND, a ) );
|
|
1260
1261
|
}
|
|
1261
1262
|
|
|
1262
|
-
VImage
|
|
1263
|
-
operator&( const VImage a, const std::vector<double> b )
|
|
1264
|
-
{
|
|
1263
|
+
VImage
|
|
1264
|
+
operator&( const VImage a, const std::vector<double> b )
|
|
1265
|
+
{
|
|
1265
1266
|
return( a.boolean_const( VIPS_OPERATION_BOOLEAN_AND, b ) );
|
|
1266
1267
|
}
|
|
1267
1268
|
|
|
1268
|
-
VImage &
|
|
1269
|
+
VImage &
|
|
1269
1270
|
operator&=( VImage &a, const VImage b )
|
|
1270
1271
|
{
|
|
1271
|
-
return( a = a & b );
|
|
1272
|
+
return( a = a & b );
|
|
1272
1273
|
}
|
|
1273
1274
|
|
|
1274
|
-
VImage &
|
|
1275
|
+
VImage &
|
|
1275
1276
|
operator&=( VImage &a, const double b )
|
|
1276
1277
|
{
|
|
1277
|
-
return( a = a & b );
|
|
1278
|
+
return( a = a & b );
|
|
1278
1279
|
}
|
|
1279
1280
|
|
|
1280
|
-
VImage &
|
|
1281
|
+
VImage &
|
|
1281
1282
|
operator&=( VImage &a, const std::vector<double> b )
|
|
1282
1283
|
{
|
|
1283
|
-
return( a = a & b );
|
|
1284
|
+
return( a = a & b );
|
|
1284
1285
|
}
|
|
1285
1286
|
|
|
1286
|
-
VImage
|
|
1287
|
-
operator|( const VImage a, const VImage b )
|
|
1287
|
+
VImage
|
|
1288
|
+
operator|( const VImage a, const VImage b )
|
|
1288
1289
|
{
|
|
1289
1290
|
return( a.boolean( b, VIPS_OPERATION_BOOLEAN_OR ) );
|
|
1290
1291
|
}
|
|
1291
1292
|
|
|
1292
|
-
VImage
|
|
1293
|
-
operator|( const double a, const VImage b )
|
|
1293
|
+
VImage
|
|
1294
|
+
operator|( const double a, const VImage b )
|
|
1294
1295
|
{
|
|
1295
|
-
return( b.boolean_const( VIPS_OPERATION_BOOLEAN_OR,
|
|
1296
|
-
to_vector( a ) ) );
|
|
1296
|
+
return( b.boolean_const( VIPS_OPERATION_BOOLEAN_OR,
|
|
1297
|
+
to_vector( a ) ) );
|
|
1297
1298
|
}
|
|
1298
1299
|
|
|
1299
|
-
VImage
|
|
1300
|
-
operator|( const VImage a, const double b )
|
|
1301
|
-
{
|
|
1302
|
-
return( a.boolean_const( VIPS_OPERATION_BOOLEAN_OR,
|
|
1300
|
+
VImage
|
|
1301
|
+
operator|( const VImage a, const double b )
|
|
1302
|
+
{
|
|
1303
|
+
return( a.boolean_const( VIPS_OPERATION_BOOLEAN_OR,
|
|
1303
1304
|
to_vector( b ) ) );
|
|
1304
1305
|
}
|
|
1305
1306
|
|
|
1306
|
-
VImage
|
|
1307
|
-
operator|( const std::vector<double> a, const VImage b )
|
|
1307
|
+
VImage
|
|
1308
|
+
operator|( const std::vector<double> a, const VImage b )
|
|
1308
1309
|
{
|
|
1309
|
-
return( b.boolean_const( VIPS_OPERATION_BOOLEAN_OR,
|
|
1310
|
+
return( b.boolean_const( VIPS_OPERATION_BOOLEAN_OR,
|
|
1310
1311
|
a ) );
|
|
1311
1312
|
}
|
|
1312
1313
|
|
|
1313
|
-
VImage
|
|
1314
|
-
operator|( const VImage a, const std::vector<double> b )
|
|
1315
|
-
{
|
|
1316
|
-
return( a.boolean_const( VIPS_OPERATION_BOOLEAN_OR,
|
|
1314
|
+
VImage
|
|
1315
|
+
operator|( const VImage a, const std::vector<double> b )
|
|
1316
|
+
{
|
|
1317
|
+
return( a.boolean_const( VIPS_OPERATION_BOOLEAN_OR,
|
|
1317
1318
|
b ) );
|
|
1318
1319
|
}
|
|
1319
1320
|
|
|
1320
|
-
VImage &
|
|
1321
|
+
VImage &
|
|
1321
1322
|
operator|=( VImage &a, const VImage b )
|
|
1322
1323
|
{
|
|
1323
|
-
return( a = a | b );
|
|
1324
|
+
return( a = a | b );
|
|
1324
1325
|
}
|
|
1325
1326
|
|
|
1326
|
-
VImage &
|
|
1327
|
+
VImage &
|
|
1327
1328
|
operator|=( VImage &a, const double b )
|
|
1328
1329
|
{
|
|
1329
|
-
return( a = a | b );
|
|
1330
|
+
return( a = a | b );
|
|
1330
1331
|
}
|
|
1331
1332
|
|
|
1332
|
-
VImage &
|
|
1333
|
+
VImage &
|
|
1333
1334
|
operator|=( VImage &a, const std::vector<double> b )
|
|
1334
1335
|
{
|
|
1335
|
-
return( a = a | b );
|
|
1336
|
+
return( a = a | b );
|
|
1336
1337
|
}
|
|
1337
1338
|
|
|
1338
|
-
VImage
|
|
1339
|
-
operator^( const VImage a, const VImage b )
|
|
1339
|
+
VImage
|
|
1340
|
+
operator^( const VImage a, const VImage b )
|
|
1340
1341
|
{
|
|
1341
1342
|
return( a.boolean( b, VIPS_OPERATION_BOOLEAN_EOR ) );
|
|
1342
1343
|
}
|
|
1343
1344
|
|
|
1344
|
-
VImage
|
|
1345
|
-
operator^( const double a, const VImage b )
|
|
1345
|
+
VImage
|
|
1346
|
+
operator^( const double a, const VImage b )
|
|
1346
1347
|
{
|
|
1347
|
-
return( b.boolean_const( VIPS_OPERATION_BOOLEAN_EOR,
|
|
1348
|
-
to_vector( a ) ) );
|
|
1348
|
+
return( b.boolean_const( VIPS_OPERATION_BOOLEAN_EOR,
|
|
1349
|
+
to_vector( a ) ) );
|
|
1349
1350
|
}
|
|
1350
1351
|
|
|
1351
|
-
VImage
|
|
1352
|
-
operator^( const VImage a, const double b )
|
|
1353
|
-
{
|
|
1354
|
-
return( a.boolean_const( VIPS_OPERATION_BOOLEAN_EOR,
|
|
1355
|
-
to_vector( b ) ) );
|
|
1352
|
+
VImage
|
|
1353
|
+
operator^( const VImage a, const double b )
|
|
1354
|
+
{
|
|
1355
|
+
return( a.boolean_const( VIPS_OPERATION_BOOLEAN_EOR,
|
|
1356
|
+
to_vector( b ) ) );
|
|
1356
1357
|
}
|
|
1357
1358
|
|
|
1358
|
-
VImage
|
|
1359
|
-
operator^( const std::vector<double> a, const VImage b )
|
|
1359
|
+
VImage
|
|
1360
|
+
operator^( const std::vector<double> a, const VImage b )
|
|
1360
1361
|
{
|
|
1361
1362
|
return( b.boolean_const( VIPS_OPERATION_BOOLEAN_EOR,
|
|
1362
1363
|
a ) );
|
|
1363
1364
|
}
|
|
1364
1365
|
|
|
1365
|
-
VImage
|
|
1366
|
-
operator^( const VImage a, const std::vector<double> b )
|
|
1367
|
-
{
|
|
1366
|
+
VImage
|
|
1367
|
+
operator^( const VImage a, const std::vector<double> b )
|
|
1368
|
+
{
|
|
1368
1369
|
return( a.boolean_const( VIPS_OPERATION_BOOLEAN_EOR,
|
|
1369
1370
|
b ) );
|
|
1370
1371
|
}
|
|
1371
1372
|
|
|
1372
|
-
VImage &
|
|
1373
|
+
VImage &
|
|
1373
1374
|
operator^=( VImage &a, const VImage b )
|
|
1374
1375
|
{
|
|
1375
|
-
return( a = a ^ b );
|
|
1376
|
+
return( a = a ^ b );
|
|
1376
1377
|
}
|
|
1377
1378
|
|
|
1378
|
-
VImage &
|
|
1379
|
+
VImage &
|
|
1379
1380
|
operator^=( VImage &a, const double b )
|
|
1380
1381
|
{
|
|
1381
|
-
return( a = a ^ b );
|
|
1382
|
+
return( a = a ^ b );
|
|
1382
1383
|
}
|
|
1383
1384
|
|
|
1384
|
-
VImage &
|
|
1385
|
+
VImage &
|
|
1385
1386
|
operator^=( VImage &a, const std::vector<double> b )
|
|
1386
1387
|
{
|
|
1387
|
-
return( a = a ^ b );
|
|
1388
|
+
return( a = a ^ b );
|
|
1388
1389
|
}
|
|
1389
1390
|
|
|
1390
|
-
VImage
|
|
1391
|
-
operator<<( const VImage a, const VImage b )
|
|
1391
|
+
VImage
|
|
1392
|
+
operator<<( const VImage a, const VImage b )
|
|
1392
1393
|
{
|
|
1393
1394
|
return( a.boolean( b, VIPS_OPERATION_BOOLEAN_LSHIFT ) );
|
|
1394
1395
|
}
|
|
1395
1396
|
|
|
1396
|
-
VImage
|
|
1397
|
-
operator<<( const VImage a, const double b )
|
|
1398
|
-
{
|
|
1399
|
-
return( a.boolean_const( VIPS_OPERATION_BOOLEAN_LSHIFT,
|
|
1400
|
-
to_vector( b ) ) );
|
|
1397
|
+
VImage
|
|
1398
|
+
operator<<( const VImage a, const double b )
|
|
1399
|
+
{
|
|
1400
|
+
return( a.boolean_const( VIPS_OPERATION_BOOLEAN_LSHIFT,
|
|
1401
|
+
to_vector( b ) ) );
|
|
1401
1402
|
}
|
|
1402
1403
|
|
|
1403
|
-
VImage
|
|
1404
|
-
operator<<( const VImage a, const std::vector<double> b )
|
|
1405
|
-
{
|
|
1406
|
-
return( a.boolean_const( VIPS_OPERATION_BOOLEAN_LSHIFT,
|
|
1407
|
-
b ) );
|
|
1404
|
+
VImage
|
|
1405
|
+
operator<<( const VImage a, const std::vector<double> b )
|
|
1406
|
+
{
|
|
1407
|
+
return( a.boolean_const( VIPS_OPERATION_BOOLEAN_LSHIFT,
|
|
1408
|
+
b ) );
|
|
1408
1409
|
}
|
|
1409
1410
|
|
|
1410
|
-
VImage &
|
|
1411
|
+
VImage &
|
|
1411
1412
|
operator<<=( VImage &a, const VImage b )
|
|
1412
1413
|
{
|
|
1413
|
-
return( a = a << b );
|
|
1414
|
+
return( a = a << b );
|
|
1414
1415
|
}
|
|
1415
1416
|
|
|
1416
|
-
VImage &
|
|
1417
|
+
VImage &
|
|
1417
1418
|
operator<<=( VImage &a, const double b )
|
|
1418
1419
|
{
|
|
1419
|
-
return( a = a << b );
|
|
1420
|
+
return( a = a << b );
|
|
1420
1421
|
}
|
|
1421
1422
|
|
|
1422
|
-
VImage &
|
|
1423
|
+
VImage &
|
|
1423
1424
|
operator<<=( VImage &a, const std::vector<double> b )
|
|
1424
1425
|
{
|
|
1425
|
-
return( a = a << b );
|
|
1426
|
+
return( a = a << b );
|
|
1426
1427
|
}
|
|
1427
1428
|
|
|
1428
|
-
VImage
|
|
1429
|
-
operator>>( const VImage a, const VImage b )
|
|
1429
|
+
VImage
|
|
1430
|
+
operator>>( const VImage a, const VImage b )
|
|
1430
1431
|
{
|
|
1431
1432
|
return( a.boolean( b, VIPS_OPERATION_BOOLEAN_RSHIFT ) );
|
|
1432
1433
|
}
|
|
1433
1434
|
|
|
1434
|
-
VImage
|
|
1435
|
-
operator>>( const VImage a, const double b )
|
|
1436
|
-
{
|
|
1437
|
-
return( a.boolean_const( VIPS_OPERATION_BOOLEAN_RSHIFT,
|
|
1438
|
-
to_vector( b ) ) );
|
|
1435
|
+
VImage
|
|
1436
|
+
operator>>( const VImage a, const double b )
|
|
1437
|
+
{
|
|
1438
|
+
return( a.boolean_const( VIPS_OPERATION_BOOLEAN_RSHIFT,
|
|
1439
|
+
to_vector( b ) ) );
|
|
1439
1440
|
}
|
|
1440
1441
|
|
|
1441
|
-
VImage
|
|
1442
|
-
operator>>( const VImage a, const std::vector<double> b )
|
|
1443
|
-
{
|
|
1442
|
+
VImage
|
|
1443
|
+
operator>>( const VImage a, const std::vector<double> b )
|
|
1444
|
+
{
|
|
1444
1445
|
return( a.boolean_const( VIPS_OPERATION_BOOLEAN_RSHIFT,
|
|
1445
|
-
b ) );
|
|
1446
|
+
b ) );
|
|
1446
1447
|
}
|
|
1447
1448
|
|
|
1448
|
-
VImage &
|
|
1449
|
+
VImage &
|
|
1449
1450
|
operator>>=( VImage &a, const VImage b )
|
|
1450
1451
|
{
|
|
1451
|
-
return( a = a << b );
|
|
1452
|
+
return( a = a << b );
|
|
1452
1453
|
}
|
|
1453
1454
|
|
|
1454
|
-
VImage &
|
|
1455
|
+
VImage &
|
|
1455
1456
|
operator>>=( VImage &a, const double b )
|
|
1456
1457
|
{
|
|
1457
|
-
return( a = a << b );
|
|
1458
|
+
return( a = a << b );
|
|
1458
1459
|
}
|
|
1459
1460
|
|
|
1460
|
-
VImage &
|
|
1461
|
+
VImage &
|
|
1461
1462
|
operator>>=( VImage &a, const std::vector<double> b )
|
|
1462
1463
|
{
|
|
1463
|
-
return( a = a << b );
|
|
1464
|
+
return( a = a << b );
|
|
1464
1465
|
}
|
|
1465
1466
|
|
|
1466
1467
|
VIPS_NAMESPACE_END
|