sharp 0.20.5 → 0.21.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.
@@ -1,5 +1,5 @@
1
1
  // bodies for vips operations
2
- // Sun 26 Nov 17:44:23 GMT 2017
2
+ // Mon 11 Jun 14:28:56 BST 2018
3
3
  // this file is generated automatically, do not edit!
4
4
 
5
5
  void VImage::system( char * cmd_format , VOption *options )
@@ -9,7 +9,7 @@ void VImage::system( char * cmd_format , VOption *options )
9
9
  set( "cmd-format", cmd_format ) );
10
10
  }
11
11
 
12
- VImage VImage::add( VImage right , VOption *options )
12
+ VImage VImage::add( VImage right , VOption *options ) const
13
13
  {
14
14
  VImage out;
15
15
 
@@ -22,7 +22,7 @@ VImage VImage::add( VImage right , VOption *options )
22
22
  return( out );
23
23
  }
24
24
 
25
- VImage VImage::subtract( VImage right , VOption *options )
25
+ VImage VImage::subtract( VImage right , VOption *options ) const
26
26
  {
27
27
  VImage out;
28
28
 
@@ -35,7 +35,7 @@ VImage VImage::subtract( VImage right , VOption *options )
35
35
  return( out );
36
36
  }
37
37
 
38
- VImage VImage::multiply( VImage right , VOption *options )
38
+ VImage VImage::multiply( VImage right , VOption *options ) const
39
39
  {
40
40
  VImage out;
41
41
 
@@ -48,7 +48,7 @@ VImage VImage::multiply( VImage right , VOption *options )
48
48
  return( out );
49
49
  }
50
50
 
51
- VImage VImage::divide( VImage right , VOption *options )
51
+ VImage VImage::divide( VImage right , VOption *options ) const
52
52
  {
53
53
  VImage out;
54
54
 
@@ -61,7 +61,7 @@ VImage VImage::divide( VImage right , VOption *options )
61
61
  return( out );
62
62
  }
63
63
 
64
- VImage VImage::relational( VImage right , VipsOperationRelational relational , VOption *options )
64
+ VImage VImage::relational( VImage right , VipsOperationRelational relational , VOption *options ) const
65
65
  {
66
66
  VImage out;
67
67
 
@@ -75,7 +75,7 @@ VImage VImage::relational( VImage right , VipsOperationRelational relational , V
75
75
  return( out );
76
76
  }
77
77
 
78
- VImage VImage::remainder( VImage right , VOption *options )
78
+ VImage VImage::remainder( VImage right , VOption *options ) const
79
79
  {
80
80
  VImage out;
81
81
 
@@ -88,7 +88,7 @@ VImage VImage::remainder( VImage right , VOption *options )
88
88
  return( out );
89
89
  }
90
90
 
91
- VImage VImage::boolean( VImage right , VipsOperationBoolean boolean , VOption *options )
91
+ VImage VImage::boolean( VImage right , VipsOperationBoolean boolean , VOption *options ) const
92
92
  {
93
93
  VImage out;
94
94
 
@@ -102,7 +102,7 @@ VImage VImage::boolean( VImage right , VipsOperationBoolean boolean , VOption *o
102
102
  return( out );
103
103
  }
104
104
 
105
- VImage VImage::math2( VImage right , VipsOperationMath2 math2 , VOption *options )
105
+ VImage VImage::math2( VImage right , VipsOperationMath2 math2 , VOption *options ) const
106
106
  {
107
107
  VImage out;
108
108
 
@@ -116,7 +116,7 @@ VImage VImage::math2( VImage right , VipsOperationMath2 math2 , VOption *options
116
116
  return( out );
117
117
  }
118
118
 
119
- VImage VImage::complex2( VImage right , VipsOperationComplex2 cmplx , VOption *options )
119
+ VImage VImage::complex2( VImage right , VipsOperationComplex2 cmplx , VOption *options ) const
120
120
  {
121
121
  VImage out;
122
122
 
@@ -130,7 +130,7 @@ VImage VImage::complex2( VImage right , VipsOperationComplex2 cmplx , VOption *o
130
130
  return( out );
131
131
  }
132
132
 
133
- VImage VImage::complexform( VImage right , VOption *options )
133
+ VImage VImage::complexform( VImage right , VOption *options ) const
134
134
  {
135
135
  VImage out;
136
136
 
@@ -155,7 +155,7 @@ VImage VImage::sum( std::vector<VImage> in , VOption *options )
155
155
  return( out );
156
156
  }
157
157
 
158
- VImage VImage::invert( VOption *options )
158
+ VImage VImage::invert( VOption *options ) const
159
159
  {
160
160
  VImage out;
161
161
 
@@ -167,7 +167,7 @@ VImage VImage::invert( VOption *options )
167
167
  return( out );
168
168
  }
169
169
 
170
- VImage VImage::linear( std::vector<double> a , std::vector<double> b , VOption *options )
170
+ VImage VImage::linear( std::vector<double> a , std::vector<double> b , VOption *options ) const
171
171
  {
172
172
  VImage out;
173
173
 
@@ -181,7 +181,7 @@ VImage VImage::linear( std::vector<double> a , std::vector<double> b , VOption *
181
181
  return( out );
182
182
  }
183
183
 
184
- VImage VImage::math( VipsOperationMath math , VOption *options )
184
+ VImage VImage::math( VipsOperationMath math , VOption *options ) const
185
185
  {
186
186
  VImage out;
187
187
 
@@ -194,7 +194,7 @@ VImage VImage::math( VipsOperationMath math , VOption *options )
194
194
  return( out );
195
195
  }
196
196
 
197
- VImage VImage::abs( VOption *options )
197
+ VImage VImage::abs( VOption *options ) const
198
198
  {
199
199
  VImage out;
200
200
 
@@ -206,7 +206,7 @@ VImage VImage::abs( VOption *options )
206
206
  return( out );
207
207
  }
208
208
 
209
- VImage VImage::sign( VOption *options )
209
+ VImage VImage::sign( VOption *options ) const
210
210
  {
211
211
  VImage out;
212
212
 
@@ -218,7 +218,7 @@ VImage VImage::sign( VOption *options )
218
218
  return( out );
219
219
  }
220
220
 
221
- VImage VImage::round( VipsOperationRound round , VOption *options )
221
+ VImage VImage::round( VipsOperationRound round , VOption *options ) const
222
222
  {
223
223
  VImage out;
224
224
 
@@ -231,7 +231,7 @@ VImage VImage::round( VipsOperationRound round , VOption *options )
231
231
  return( out );
232
232
  }
233
233
 
234
- VImage VImage::relational_const( VipsOperationRelational relational , std::vector<double> c , VOption *options )
234
+ VImage VImage::relational_const( VipsOperationRelational relational , std::vector<double> c , VOption *options ) const
235
235
  {
236
236
  VImage out;
237
237
 
@@ -245,7 +245,7 @@ VImage VImage::relational_const( VipsOperationRelational relational , std::vecto
245
245
  return( out );
246
246
  }
247
247
 
248
- VImage VImage::remainder_const( std::vector<double> c , VOption *options )
248
+ VImage VImage::remainder_const( std::vector<double> c , VOption *options ) const
249
249
  {
250
250
  VImage out;
251
251
 
@@ -258,7 +258,7 @@ VImage VImage::remainder_const( std::vector<double> c , VOption *options )
258
258
  return( out );
259
259
  }
260
260
 
261
- VImage VImage::boolean_const( VipsOperationBoolean boolean , std::vector<double> c , VOption *options )
261
+ VImage VImage::boolean_const( VipsOperationBoolean boolean , std::vector<double> c , VOption *options ) const
262
262
  {
263
263
  VImage out;
264
264
 
@@ -272,7 +272,7 @@ VImage VImage::boolean_const( VipsOperationBoolean boolean , std::vector<double>
272
272
  return( out );
273
273
  }
274
274
 
275
- VImage VImage::math2_const( VipsOperationMath2 math2 , std::vector<double> c , VOption *options )
275
+ VImage VImage::math2_const( VipsOperationMath2 math2 , std::vector<double> c , VOption *options ) const
276
276
  {
277
277
  VImage out;
278
278
 
@@ -286,7 +286,7 @@ VImage VImage::math2_const( VipsOperationMath2 math2 , std::vector<double> c , V
286
286
  return( out );
287
287
  }
288
288
 
289
- VImage VImage::complex( VipsOperationComplex cmplx , VOption *options )
289
+ VImage VImage::complex( VipsOperationComplex cmplx , VOption *options ) const
290
290
  {
291
291
  VImage out;
292
292
 
@@ -299,7 +299,7 @@ VImage VImage::complex( VipsOperationComplex cmplx , VOption *options )
299
299
  return( out );
300
300
  }
301
301
 
302
- VImage VImage::complexget( VipsOperationComplexget get , VOption *options )
302
+ VImage VImage::complexget( VipsOperationComplexget get , VOption *options ) const
303
303
  {
304
304
  VImage out;
305
305
 
@@ -312,7 +312,7 @@ VImage VImage::complexget( VipsOperationComplexget get , VOption *options )
312
312
  return( out );
313
313
  }
314
314
 
315
- double VImage::avg( VOption *options )
315
+ double VImage::avg( VOption *options ) const
316
316
  {
317
317
  double out;
318
318
 
@@ -324,7 +324,7 @@ double VImage::avg( VOption *options )
324
324
  return( out );
325
325
  }
326
326
 
327
- double VImage::min( VOption *options )
327
+ double VImage::min( VOption *options ) const
328
328
  {
329
329
  double out;
330
330
 
@@ -336,7 +336,7 @@ double VImage::min( VOption *options )
336
336
  return( out );
337
337
  }
338
338
 
339
- double VImage::max( VOption *options )
339
+ double VImage::max( VOption *options ) const
340
340
  {
341
341
  double out;
342
342
 
@@ -348,7 +348,7 @@ double VImage::max( VOption *options )
348
348
  return( out );
349
349
  }
350
350
 
351
- double VImage::deviate( VOption *options )
351
+ double VImage::deviate( VOption *options ) const
352
352
  {
353
353
  double out;
354
354
 
@@ -360,7 +360,7 @@ double VImage::deviate( VOption *options )
360
360
  return( out );
361
361
  }
362
362
 
363
- VImage VImage::stats( VOption *options )
363
+ VImage VImage::stats( VOption *options ) const
364
364
  {
365
365
  VImage out;
366
366
 
@@ -372,7 +372,7 @@ VImage VImage::stats( VOption *options )
372
372
  return( out );
373
373
  }
374
374
 
375
- VImage VImage::hist_find( VOption *options )
375
+ VImage VImage::hist_find( VOption *options ) const
376
376
  {
377
377
  VImage out;
378
378
 
@@ -384,7 +384,7 @@ VImage VImage::hist_find( VOption *options )
384
384
  return( out );
385
385
  }
386
386
 
387
- VImage VImage::hist_find_ndim( VOption *options )
387
+ VImage VImage::hist_find_ndim( VOption *options ) const
388
388
  {
389
389
  VImage out;
390
390
 
@@ -396,7 +396,7 @@ VImage VImage::hist_find_ndim( VOption *options )
396
396
  return( out );
397
397
  }
398
398
 
399
- VImage VImage::hist_find_indexed( VImage index , VOption *options )
399
+ VImage VImage::hist_find_indexed( VImage index , VOption *options ) const
400
400
  {
401
401
  VImage out;
402
402
 
@@ -409,7 +409,7 @@ VImage VImage::hist_find_indexed( VImage index , VOption *options )
409
409
  return( out );
410
410
  }
411
411
 
412
- VImage VImage::hough_line( VOption *options )
412
+ VImage VImage::hough_line( VOption *options ) const
413
413
  {
414
414
  VImage out;
415
415
 
@@ -421,7 +421,7 @@ VImage VImage::hough_line( VOption *options )
421
421
  return( out );
422
422
  }
423
423
 
424
- VImage VImage::hough_circle( VOption *options )
424
+ VImage VImage::hough_circle( VOption *options ) const
425
425
  {
426
426
  VImage out;
427
427
 
@@ -433,7 +433,7 @@ VImage VImage::hough_circle( VOption *options )
433
433
  return( out );
434
434
  }
435
435
 
436
- VImage VImage::project( VImage * rows , VOption *options )
436
+ VImage VImage::project( VImage * rows , VOption *options ) const
437
437
  {
438
438
  VImage columns;
439
439
 
@@ -446,7 +446,7 @@ VImage VImage::project( VImage * rows , VOption *options )
446
446
  return( columns );
447
447
  }
448
448
 
449
- VImage VImage::profile( VImage * rows , VOption *options )
449
+ VImage VImage::profile( VImage * rows , VOption *options ) const
450
450
  {
451
451
  VImage columns;
452
452
 
@@ -459,7 +459,7 @@ VImage VImage::profile( VImage * rows , VOption *options )
459
459
  return( columns );
460
460
  }
461
461
 
462
- VImage VImage::measure( int h , int v , VOption *options )
462
+ VImage VImage::measure( int h , int v , VOption *options ) const
463
463
  {
464
464
  VImage out;
465
465
 
@@ -473,7 +473,7 @@ VImage VImage::measure( int h , int v , VOption *options )
473
473
  return( out );
474
474
  }
475
475
 
476
- std::vector<double> VImage::getpoint( int x , int y , VOption *options )
476
+ std::vector<double> VImage::getpoint( int x , int y , VOption *options ) const
477
477
  {
478
478
  std::vector<double> out_array;
479
479
 
@@ -487,7 +487,7 @@ std::vector<double> VImage::getpoint( int x , int y , VOption *options )
487
487
  return( out_array );
488
488
  }
489
489
 
490
- int VImage::find_trim( int * top , int * width , int * height , VOption *options )
490
+ int VImage::find_trim( int * top , int * width , int * height , VOption *options ) const
491
491
  {
492
492
  int left;
493
493
 
@@ -502,7 +502,7 @@ int VImage::find_trim( int * top , int * width , int * height , VOption *options
502
502
  return( left );
503
503
  }
504
504
 
505
- VImage VImage::copy( VOption *options )
505
+ VImage VImage::copy( VOption *options ) const
506
506
  {
507
507
  VImage out;
508
508
 
@@ -514,7 +514,7 @@ VImage VImage::copy( VOption *options )
514
514
  return( out );
515
515
  }
516
516
 
517
- VImage VImage::tilecache( VOption *options )
517
+ VImage VImage::tilecache( VOption *options ) const
518
518
  {
519
519
  VImage out;
520
520
 
@@ -526,7 +526,7 @@ VImage VImage::tilecache( VOption *options )
526
526
  return( out );
527
527
  }
528
528
 
529
- VImage VImage::linecache( VOption *options )
529
+ VImage VImage::linecache( VOption *options ) const
530
530
  {
531
531
  VImage out;
532
532
 
@@ -538,7 +538,7 @@ VImage VImage::linecache( VOption *options )
538
538
  return( out );
539
539
  }
540
540
 
541
- VImage VImage::sequential( VOption *options )
541
+ VImage VImage::sequential( VOption *options ) const
542
542
  {
543
543
  VImage out;
544
544
 
@@ -550,7 +550,7 @@ VImage VImage::sequential( VOption *options )
550
550
  return( out );
551
551
  }
552
552
 
553
- VImage VImage::cache( VOption *options )
553
+ VImage VImage::cache( VOption *options ) const
554
554
  {
555
555
  VImage out;
556
556
 
@@ -562,7 +562,7 @@ VImage VImage::cache( VOption *options )
562
562
  return( out );
563
563
  }
564
564
 
565
- VImage VImage::embed( int x , int y , int width , int height , VOption *options )
565
+ VImage VImage::embed( int x , int y , int width , int height , VOption *options ) const
566
566
  {
567
567
  VImage out;
568
568
 
@@ -578,7 +578,7 @@ VImage VImage::embed( int x , int y , int width , int height , VOption *options
578
578
  return( out );
579
579
  }
580
580
 
581
- VImage VImage::gravity( VipsCompassDirection direction , int width , int height , VOption *options )
581
+ VImage VImage::gravity( VipsCompassDirection direction , int width , int height , VOption *options ) const
582
582
  {
583
583
  VImage out;
584
584
 
@@ -593,7 +593,7 @@ VImage VImage::gravity( VipsCompassDirection direction , int width , int height
593
593
  return( out );
594
594
  }
595
595
 
596
- VImage VImage::flip( VipsDirection direction , VOption *options )
596
+ VImage VImage::flip( VipsDirection direction , VOption *options ) const
597
597
  {
598
598
  VImage out;
599
599
 
@@ -606,7 +606,7 @@ VImage VImage::flip( VipsDirection direction , VOption *options )
606
606
  return( out );
607
607
  }
608
608
 
609
- VImage VImage::insert( VImage sub , int x , int y , VOption *options )
609
+ VImage VImage::insert( VImage sub , int x , int y , VOption *options ) const
610
610
  {
611
611
  VImage out;
612
612
 
@@ -621,7 +621,7 @@ VImage VImage::insert( VImage sub , int x , int y , VOption *options )
621
621
  return( out );
622
622
  }
623
623
 
624
- VImage VImage::join( VImage in2 , VipsDirection direction , VOption *options )
624
+ VImage VImage::join( VImage in2 , VipsDirection direction , VOption *options ) const
625
625
  {
626
626
  VImage out;
627
627
 
@@ -647,7 +647,7 @@ VImage VImage::arrayjoin( std::vector<VImage> in , VOption *options )
647
647
  return( out );
648
648
  }
649
649
 
650
- VImage VImage::extract_area( int left , int top , int width , int height , VOption *options )
650
+ VImage VImage::extract_area( int left , int top , int width , int height , VOption *options ) const
651
651
  {
652
652
  VImage out;
653
653
 
@@ -663,7 +663,7 @@ VImage VImage::extract_area( int left , int top , int width , int height , VOpti
663
663
  return( out );
664
664
  }
665
665
 
666
- VImage VImage::smartcrop( int width , int height , VOption *options )
666
+ VImage VImage::smartcrop( int width , int height , VOption *options ) const
667
667
  {
668
668
  VImage out;
669
669
 
@@ -677,7 +677,7 @@ VImage VImage::smartcrop( int width , int height , VOption *options )
677
677
  return( out );
678
678
  }
679
679
 
680
- VImage VImage::extract_band( int band , VOption *options )
680
+ VImage VImage::extract_band( int band , VOption *options ) const
681
681
  {
682
682
  VImage out;
683
683
 
@@ -702,7 +702,7 @@ VImage VImage::bandjoin( std::vector<VImage> in , VOption *options )
702
702
  return( out );
703
703
  }
704
704
 
705
- VImage VImage::bandjoin_const( std::vector<double> c , VOption *options )
705
+ VImage VImage::bandjoin_const( std::vector<double> c , VOption *options ) const
706
706
  {
707
707
  VImage out;
708
708
 
@@ -727,7 +727,7 @@ VImage VImage::bandrank( std::vector<VImage> in , VOption *options )
727
727
  return( out );
728
728
  }
729
729
 
730
- VImage VImage::bandmean( VOption *options )
730
+ VImage VImage::bandmean( VOption *options ) const
731
731
  {
732
732
  VImage out;
733
733
 
@@ -739,7 +739,7 @@ VImage VImage::bandmean( VOption *options )
739
739
  return( out );
740
740
  }
741
741
 
742
- VImage VImage::bandbool( VipsOperationBoolean boolean , VOption *options )
742
+ VImage VImage::bandbool( VipsOperationBoolean boolean , VOption *options ) const
743
743
  {
744
744
  VImage out;
745
745
 
@@ -752,7 +752,7 @@ VImage VImage::bandbool( VipsOperationBoolean boolean , VOption *options )
752
752
  return( out );
753
753
  }
754
754
 
755
- VImage VImage::replicate( int across , int down , VOption *options )
755
+ VImage VImage::replicate( int across , int down , VOption *options ) const
756
756
  {
757
757
  VImage out;
758
758
 
@@ -766,7 +766,7 @@ VImage VImage::replicate( int across , int down , VOption *options )
766
766
  return( out );
767
767
  }
768
768
 
769
- VImage VImage::cast( VipsBandFormat format , VOption *options )
769
+ VImage VImage::cast( VipsBandFormat format , VOption *options ) const
770
770
  {
771
771
  VImage out;
772
772
 
@@ -779,7 +779,7 @@ VImage VImage::cast( VipsBandFormat format , VOption *options )
779
779
  return( out );
780
780
  }
781
781
 
782
- VImage VImage::rot( VipsAngle angle , VOption *options )
782
+ VImage VImage::rot( VipsAngle angle , VOption *options ) const
783
783
  {
784
784
  VImage out;
785
785
 
@@ -792,7 +792,7 @@ VImage VImage::rot( VipsAngle angle , VOption *options )
792
792
  return( out );
793
793
  }
794
794
 
795
- VImage VImage::rot45( VOption *options )
795
+ VImage VImage::rot45( VOption *options ) const
796
796
  {
797
797
  VImage out;
798
798
 
@@ -804,7 +804,7 @@ VImage VImage::rot45( VOption *options )
804
804
  return( out );
805
805
  }
806
806
 
807
- VImage VImage::autorot( VOption *options )
807
+ VImage VImage::autorot( VOption *options ) const
808
808
  {
809
809
  VImage out;
810
810
 
@@ -816,7 +816,7 @@ VImage VImage::autorot( VOption *options )
816
816
  return( out );
817
817
  }
818
818
 
819
- VImage VImage::ifthenelse( VImage in1 , VImage in2 , VOption *options )
819
+ VImage VImage::ifthenelse( VImage in1 , VImage in2 , VOption *options ) const
820
820
  {
821
821
  VImage out;
822
822
 
@@ -830,7 +830,7 @@ VImage VImage::ifthenelse( VImage in1 , VImage in2 , VOption *options )
830
830
  return( out );
831
831
  }
832
832
 
833
- VImage VImage::recomb( VImage m , VOption *options )
833
+ VImage VImage::recomb( VImage m , VOption *options ) const
834
834
  {
835
835
  VImage out;
836
836
 
@@ -843,7 +843,7 @@ VImage VImage::recomb( VImage m , VOption *options )
843
843
  return( out );
844
844
  }
845
845
 
846
- VImage VImage::bandfold( VOption *options )
846
+ VImage VImage::bandfold( VOption *options ) const
847
847
  {
848
848
  VImage out;
849
849
 
@@ -855,7 +855,7 @@ VImage VImage::bandfold( VOption *options )
855
855
  return( out );
856
856
  }
857
857
 
858
- VImage VImage::bandunfold( VOption *options )
858
+ VImage VImage::bandunfold( VOption *options ) const
859
859
  {
860
860
  VImage out;
861
861
 
@@ -867,7 +867,7 @@ VImage VImage::bandunfold( VOption *options )
867
867
  return( out );
868
868
  }
869
869
 
870
- VImage VImage::flatten( VOption *options )
870
+ VImage VImage::flatten( VOption *options ) const
871
871
  {
872
872
  VImage out;
873
873
 
@@ -879,7 +879,7 @@ VImage VImage::flatten( VOption *options )
879
879
  return( out );
880
880
  }
881
881
 
882
- VImage VImage::premultiply( VOption *options )
882
+ VImage VImage::premultiply( VOption *options ) const
883
883
  {
884
884
  VImage out;
885
885
 
@@ -891,7 +891,7 @@ VImage VImage::premultiply( VOption *options )
891
891
  return( out );
892
892
  }
893
893
 
894
- VImage VImage::unpremultiply( VOption *options )
894
+ VImage VImage::unpremultiply( VOption *options ) const
895
895
  {
896
896
  VImage out;
897
897
 
@@ -903,7 +903,7 @@ VImage VImage::unpremultiply( VOption *options )
903
903
  return( out );
904
904
  }
905
905
 
906
- VImage VImage::grid( int tile_height , int across , int down , VOption *options )
906
+ VImage VImage::grid( int tile_height , int across , int down , VOption *options ) const
907
907
  {
908
908
  VImage out;
909
909
 
@@ -918,7 +918,19 @@ VImage VImage::grid( int tile_height , int across , int down , VOption *options
918
918
  return( out );
919
919
  }
920
920
 
921
- VImage VImage::scale( VOption *options )
921
+ VImage VImage::transpose3d( VOption *options ) const
922
+ {
923
+ VImage out;
924
+
925
+ call( "transpose3d" ,
926
+ (options ? options : VImage::option()) ->
927
+ set( "in", *this ) ->
928
+ set( "out", &out ) );
929
+
930
+ return( out );
931
+ }
932
+
933
+ VImage VImage::scale( VOption *options ) const
922
934
  {
923
935
  VImage out;
924
936
 
@@ -930,7 +942,7 @@ VImage VImage::scale( VOption *options )
930
942
  return( out );
931
943
  }
932
944
 
933
- VImage VImage::wrap( VOption *options )
945
+ VImage VImage::wrap( VOption *options ) const
934
946
  {
935
947
  VImage out;
936
948
 
@@ -942,7 +954,7 @@ VImage VImage::wrap( VOption *options )
942
954
  return( out );
943
955
  }
944
956
 
945
- VImage VImage::zoom( int xfac , int yfac , VOption *options )
957
+ VImage VImage::zoom( int xfac , int yfac , VOption *options ) const
946
958
  {
947
959
  VImage out;
948
960
 
@@ -956,7 +968,7 @@ VImage VImage::zoom( int xfac , int yfac , VOption *options )
956
968
  return( out );
957
969
  }
958
970
 
959
- VImage VImage::subsample( int xfac , int yfac , VOption *options )
971
+ VImage VImage::subsample( int xfac , int yfac , VOption *options ) const
960
972
  {
961
973
  VImage out;
962
974
 
@@ -970,7 +982,7 @@ VImage VImage::subsample( int xfac , int yfac , VOption *options )
970
982
  return( out );
971
983
  }
972
984
 
973
- VImage VImage::msb( VOption *options )
985
+ VImage VImage::msb( VOption *options ) const
974
986
  {
975
987
  VImage out;
976
988
 
@@ -982,7 +994,7 @@ VImage VImage::msb( VOption *options )
982
994
  return( out );
983
995
  }
984
996
 
985
- VImage VImage::byteswap( VOption *options )
997
+ VImage VImage::byteswap( VOption *options ) const
986
998
  {
987
999
  VImage out;
988
1000
 
@@ -994,7 +1006,7 @@ VImage VImage::byteswap( VOption *options )
994
1006
  return( out );
995
1007
  }
996
1008
 
997
- VImage VImage::falsecolour( VOption *options )
1009
+ VImage VImage::falsecolour( VOption *options ) const
998
1010
  {
999
1011
  VImage out;
1000
1012
 
@@ -1006,7 +1018,7 @@ VImage VImage::falsecolour( VOption *options )
1006
1018
  return( out );
1007
1019
  }
1008
1020
 
1009
- VImage VImage::gamma( VOption *options )
1021
+ VImage VImage::gamma( VOption *options ) const
1010
1022
  {
1011
1023
  VImage out;
1012
1024
 
@@ -1031,6 +1043,20 @@ VImage VImage::composite( std::vector<VImage> in , std::vector<int> mode , VOpti
1031
1043
  return( out );
1032
1044
  }
1033
1045
 
1046
+ VImage VImage::composite2( VImage overlay , VipsBlendMode mode , VOption *options ) const
1047
+ {
1048
+ VImage out;
1049
+
1050
+ call( "composite2" ,
1051
+ (options ? options : VImage::option()) ->
1052
+ set( "base", *this ) ->
1053
+ set( "overlay", overlay ) ->
1054
+ set( "out", &out ) ->
1055
+ set( "mode", mode ) );
1056
+
1057
+ return( out );
1058
+ }
1059
+
1034
1060
  VImage VImage::black( int width , int height , VOption *options )
1035
1061
  {
1036
1062
  VImage out;
@@ -1318,7 +1344,7 @@ VImage VImage::mask_fractal( int width , int height , double fractal_dimension ,
1318
1344
  return( out );
1319
1345
  }
1320
1346
 
1321
- VImage VImage::buildlut( VOption *options )
1347
+ VImage VImage::buildlut( VOption *options ) const
1322
1348
  {
1323
1349
  VImage out;
1324
1350
 
@@ -1330,7 +1356,7 @@ VImage VImage::buildlut( VOption *options )
1330
1356
  return( out );
1331
1357
  }
1332
1358
 
1333
- VImage VImage::invertlut( VOption *options )
1359
+ VImage VImage::invertlut( VOption *options ) const
1334
1360
  {
1335
1361
  VImage out;
1336
1362
 
@@ -1731,7 +1757,7 @@ VImage VImage::openexrload( char * filename , VOption *options )
1731
1757
  return( out );
1732
1758
  }
1733
1759
 
1734
- void VImage::csvsave( char * filename , VOption *options )
1760
+ void VImage::csvsave( char * filename , VOption *options ) const
1735
1761
  {
1736
1762
  call( "csvsave" ,
1737
1763
  (options ? options : VImage::option()) ->
@@ -1739,7 +1765,7 @@ void VImage::csvsave( char * filename , VOption *options )
1739
1765
  set( "filename", filename ) );
1740
1766
  }
1741
1767
 
1742
- void VImage::matrixsave( char * filename , VOption *options )
1768
+ void VImage::matrixsave( char * filename , VOption *options ) const
1743
1769
  {
1744
1770
  call( "matrixsave" ,
1745
1771
  (options ? options : VImage::option()) ->
@@ -1747,14 +1773,14 @@ void VImage::matrixsave( char * filename , VOption *options )
1747
1773
  set( "filename", filename ) );
1748
1774
  }
1749
1775
 
1750
- void VImage::matrixprint( VOption *options )
1776
+ void VImage::matrixprint( VOption *options ) const
1751
1777
  {
1752
1778
  call( "matrixprint" ,
1753
1779
  (options ? options : VImage::option()) ->
1754
1780
  set( "in", *this ) );
1755
1781
  }
1756
1782
 
1757
- void VImage::rawsave( char * filename , VOption *options )
1783
+ void VImage::rawsave( char * filename , VOption *options ) const
1758
1784
  {
1759
1785
  call( "rawsave" ,
1760
1786
  (options ? options : VImage::option()) ->
@@ -1762,7 +1788,7 @@ void VImage::rawsave( char * filename , VOption *options )
1762
1788
  set( "filename", filename ) );
1763
1789
  }
1764
1790
 
1765
- void VImage::rawsave_fd( int fd , VOption *options )
1791
+ void VImage::rawsave_fd( int fd , VOption *options ) const
1766
1792
  {
1767
1793
  call( "rawsave_fd" ,
1768
1794
  (options ? options : VImage::option()) ->
@@ -1770,7 +1796,7 @@ void VImage::rawsave_fd( int fd , VOption *options )
1770
1796
  set( "fd", fd ) );
1771
1797
  }
1772
1798
 
1773
- void VImage::vipssave( char * filename , VOption *options )
1799
+ void VImage::vipssave( char * filename , VOption *options ) const
1774
1800
  {
1775
1801
  call( "vipssave" ,
1776
1802
  (options ? options : VImage::option()) ->
@@ -1778,7 +1804,7 @@ void VImage::vipssave( char * filename , VOption *options )
1778
1804
  set( "filename", filename ) );
1779
1805
  }
1780
1806
 
1781
- void VImage::ppmsave( char * filename , VOption *options )
1807
+ void VImage::ppmsave( char * filename , VOption *options ) const
1782
1808
  {
1783
1809
  call( "ppmsave" ,
1784
1810
  (options ? options : VImage::option()) ->
@@ -1786,7 +1812,7 @@ void VImage::ppmsave( char * filename , VOption *options )
1786
1812
  set( "filename", filename ) );
1787
1813
  }
1788
1814
 
1789
- void VImage::radsave( char * filename , VOption *options )
1815
+ void VImage::radsave( char * filename , VOption *options ) const
1790
1816
  {
1791
1817
  call( "radsave" ,
1792
1818
  (options ? options : VImage::option()) ->
@@ -1794,7 +1820,7 @@ void VImage::radsave( char * filename , VOption *options )
1794
1820
  set( "filename", filename ) );
1795
1821
  }
1796
1822
 
1797
- VipsBlob * VImage::radsave_buffer( VOption *options )
1823
+ VipsBlob * VImage::radsave_buffer( VOption *options ) const
1798
1824
  {
1799
1825
  VipsBlob * buffer;
1800
1826
 
@@ -1806,7 +1832,7 @@ VipsBlob * VImage::radsave_buffer( VOption *options )
1806
1832
  return( buffer );
1807
1833
  }
1808
1834
 
1809
- void VImage::dzsave( char * filename , VOption *options )
1835
+ void VImage::dzsave( char * filename , VOption *options ) const
1810
1836
  {
1811
1837
  call( "dzsave" ,
1812
1838
  (options ? options : VImage::option()) ->
@@ -1814,7 +1840,7 @@ void VImage::dzsave( char * filename , VOption *options )
1814
1840
  set( "filename", filename ) );
1815
1841
  }
1816
1842
 
1817
- VipsBlob * VImage::dzsave_buffer( VOption *options )
1843
+ VipsBlob * VImage::dzsave_buffer( VOption *options ) const
1818
1844
  {
1819
1845
  VipsBlob * buffer;
1820
1846
 
@@ -1826,7 +1852,7 @@ VipsBlob * VImage::dzsave_buffer( VOption *options )
1826
1852
  return( buffer );
1827
1853
  }
1828
1854
 
1829
- void VImage::pngsave( char * filename , VOption *options )
1855
+ void VImage::pngsave( char * filename , VOption *options ) const
1830
1856
  {
1831
1857
  call( "pngsave" ,
1832
1858
  (options ? options : VImage::option()) ->
@@ -1834,7 +1860,7 @@ void VImage::pngsave( char * filename , VOption *options )
1834
1860
  set( "filename", filename ) );
1835
1861
  }
1836
1862
 
1837
- VipsBlob * VImage::pngsave_buffer( VOption *options )
1863
+ VipsBlob * VImage::pngsave_buffer( VOption *options ) const
1838
1864
  {
1839
1865
  VipsBlob * buffer;
1840
1866
 
@@ -1846,7 +1872,7 @@ VipsBlob * VImage::pngsave_buffer( VOption *options )
1846
1872
  return( buffer );
1847
1873
  }
1848
1874
 
1849
- void VImage::jpegsave( char * filename , VOption *options )
1875
+ void VImage::jpegsave( char * filename , VOption *options ) const
1850
1876
  {
1851
1877
  call( "jpegsave" ,
1852
1878
  (options ? options : VImage::option()) ->
@@ -1854,7 +1880,7 @@ void VImage::jpegsave( char * filename , VOption *options )
1854
1880
  set( "filename", filename ) );
1855
1881
  }
1856
1882
 
1857
- VipsBlob * VImage::jpegsave_buffer( VOption *options )
1883
+ VipsBlob * VImage::jpegsave_buffer( VOption *options ) const
1858
1884
  {
1859
1885
  VipsBlob * buffer;
1860
1886
 
@@ -1866,14 +1892,14 @@ VipsBlob * VImage::jpegsave_buffer( VOption *options )
1866
1892
  return( buffer );
1867
1893
  }
1868
1894
 
1869
- void VImage::jpegsave_mime( VOption *options )
1895
+ void VImage::jpegsave_mime( VOption *options ) const
1870
1896
  {
1871
1897
  call( "jpegsave_mime" ,
1872
1898
  (options ? options : VImage::option()) ->
1873
1899
  set( "in", *this ) );
1874
1900
  }
1875
1901
 
1876
- void VImage::webpsave( char * filename , VOption *options )
1902
+ void VImage::webpsave( char * filename , VOption *options ) const
1877
1903
  {
1878
1904
  call( "webpsave" ,
1879
1905
  (options ? options : VImage::option()) ->
@@ -1881,7 +1907,7 @@ void VImage::webpsave( char * filename , VOption *options )
1881
1907
  set( "filename", filename ) );
1882
1908
  }
1883
1909
 
1884
- VipsBlob * VImage::webpsave_buffer( VOption *options )
1910
+ VipsBlob * VImage::webpsave_buffer( VOption *options ) const
1885
1911
  {
1886
1912
  VipsBlob * buffer;
1887
1913
 
@@ -1893,7 +1919,7 @@ VipsBlob * VImage::webpsave_buffer( VOption *options )
1893
1919
  return( buffer );
1894
1920
  }
1895
1921
 
1896
- void VImage::tiffsave( char * filename , VOption *options )
1922
+ void VImage::tiffsave( char * filename , VOption *options ) const
1897
1923
  {
1898
1924
  call( "tiffsave" ,
1899
1925
  (options ? options : VImage::option()) ->
@@ -1901,7 +1927,7 @@ void VImage::tiffsave( char * filename , VOption *options )
1901
1927
  set( "filename", filename ) );
1902
1928
  }
1903
1929
 
1904
- VipsBlob * VImage::tiffsave_buffer( VOption *options )
1930
+ VipsBlob * VImage::tiffsave_buffer( VOption *options ) const
1905
1931
  {
1906
1932
  VipsBlob * buffer;
1907
1933
 
@@ -1913,7 +1939,27 @@ VipsBlob * VImage::tiffsave_buffer( VOption *options )
1913
1939
  return( buffer );
1914
1940
  }
1915
1941
 
1916
- void VImage::fitssave( char * filename , VOption *options )
1942
+ void VImage::magicksave( char * filename , VOption *options ) const
1943
+ {
1944
+ call( "magicksave" ,
1945
+ (options ? options : VImage::option()) ->
1946
+ set( "in", *this ) ->
1947
+ set( "filename", filename ) );
1948
+ }
1949
+
1950
+ VipsBlob * VImage::magicksave_buffer( VOption *options ) const
1951
+ {
1952
+ VipsBlob * buffer;
1953
+
1954
+ call( "magicksave_buffer" ,
1955
+ (options ? options : VImage::option()) ->
1956
+ set( "in", *this ) ->
1957
+ set( "buffer", &buffer ) );
1958
+
1959
+ return( buffer );
1960
+ }
1961
+
1962
+ void VImage::fitssave( char * filename , VOption *options ) const
1917
1963
  {
1918
1964
  call( "fitssave" ,
1919
1965
  (options ? options : VImage::option()) ->
@@ -1947,7 +1993,7 @@ VImage VImage::thumbnail_buffer( VipsBlob * buffer , int width , VOption *option
1947
1993
  return( out );
1948
1994
  }
1949
1995
 
1950
- VImage VImage::thumbnail_image( int width , VOption *options )
1996
+ VImage VImage::thumbnail_image( int width , VOption *options ) const
1951
1997
  {
1952
1998
  VImage out;
1953
1999
 
@@ -1960,7 +2006,7 @@ VImage VImage::thumbnail_image( int width , VOption *options )
1960
2006
  return( out );
1961
2007
  }
1962
2008
 
1963
- VImage VImage::mapim( VImage index , VOption *options )
2009
+ VImage VImage::mapim( VImage index , VOption *options ) const
1964
2010
  {
1965
2011
  VImage out;
1966
2012
 
@@ -1973,7 +2019,7 @@ VImage VImage::mapim( VImage index , VOption *options )
1973
2019
  return( out );
1974
2020
  }
1975
2021
 
1976
- VImage VImage::shrink( double hshrink , double vshrink , VOption *options )
2022
+ VImage VImage::shrink( double hshrink , double vshrink , VOption *options ) const
1977
2023
  {
1978
2024
  VImage out;
1979
2025
 
@@ -1987,7 +2033,7 @@ VImage VImage::shrink( double hshrink , double vshrink , VOption *options )
1987
2033
  return( out );
1988
2034
  }
1989
2035
 
1990
- VImage VImage::shrinkh( int hshrink , VOption *options )
2036
+ VImage VImage::shrinkh( int hshrink , VOption *options ) const
1991
2037
  {
1992
2038
  VImage out;
1993
2039
 
@@ -2000,7 +2046,7 @@ VImage VImage::shrinkh( int hshrink , VOption *options )
2000
2046
  return( out );
2001
2047
  }
2002
2048
 
2003
- VImage VImage::shrinkv( int vshrink , VOption *options )
2049
+ VImage VImage::shrinkv( int vshrink , VOption *options ) const
2004
2050
  {
2005
2051
  VImage out;
2006
2052
 
@@ -2013,7 +2059,7 @@ VImage VImage::shrinkv( int vshrink , VOption *options )
2013
2059
  return( out );
2014
2060
  }
2015
2061
 
2016
- VImage VImage::reduceh( double hshrink , VOption *options )
2062
+ VImage VImage::reduceh( double hshrink , VOption *options ) const
2017
2063
  {
2018
2064
  VImage out;
2019
2065
 
@@ -2026,7 +2072,7 @@ VImage VImage::reduceh( double hshrink , VOption *options )
2026
2072
  return( out );
2027
2073
  }
2028
2074
 
2029
- VImage VImage::reducev( double vshrink , VOption *options )
2075
+ VImage VImage::reducev( double vshrink , VOption *options ) const
2030
2076
  {
2031
2077
  VImage out;
2032
2078
 
@@ -2039,7 +2085,7 @@ VImage VImage::reducev( double vshrink , VOption *options )
2039
2085
  return( out );
2040
2086
  }
2041
2087
 
2042
- VImage VImage::reduce( double hshrink , double vshrink , VOption *options )
2088
+ VImage VImage::reduce( double hshrink , double vshrink , VOption *options ) const
2043
2089
  {
2044
2090
  VImage out;
2045
2091
 
@@ -2053,7 +2099,7 @@ VImage VImage::reduce( double hshrink , double vshrink , VOption *options )
2053
2099
  return( out );
2054
2100
  }
2055
2101
 
2056
- VImage VImage::quadratic( VImage coeff , VOption *options )
2102
+ VImage VImage::quadratic( VImage coeff , VOption *options ) const
2057
2103
  {
2058
2104
  VImage out;
2059
2105
 
@@ -2066,7 +2112,7 @@ VImage VImage::quadratic( VImage coeff , VOption *options )
2066
2112
  return( out );
2067
2113
  }
2068
2114
 
2069
- VImage VImage::affine( std::vector<double> matrix , VOption *options )
2115
+ VImage VImage::affine( std::vector<double> matrix , VOption *options ) const
2070
2116
  {
2071
2117
  VImage out;
2072
2118
 
@@ -2079,7 +2125,7 @@ VImage VImage::affine( std::vector<double> matrix , VOption *options )
2079
2125
  return( out );
2080
2126
  }
2081
2127
 
2082
- VImage VImage::similarity( VOption *options )
2128
+ VImage VImage::similarity( VOption *options ) const
2083
2129
  {
2084
2130
  VImage out;
2085
2131
 
@@ -2091,7 +2137,20 @@ VImage VImage::similarity( VOption *options )
2091
2137
  return( out );
2092
2138
  }
2093
2139
 
2094
- VImage VImage::resize( double scale , VOption *options )
2140
+ VImage VImage::rotate( double angle , VOption *options ) const
2141
+ {
2142
+ VImage out;
2143
+
2144
+ call( "rotate" ,
2145
+ (options ? options : VImage::option()) ->
2146
+ set( "in", *this ) ->
2147
+ set( "out", &out ) ->
2148
+ set( "angle", angle ) );
2149
+
2150
+ return( out );
2151
+ }
2152
+
2153
+ VImage VImage::resize( double scale , VOption *options ) const
2095
2154
  {
2096
2155
  VImage out;
2097
2156
 
@@ -2104,7 +2163,7 @@ VImage VImage::resize( double scale , VOption *options )
2104
2163
  return( out );
2105
2164
  }
2106
2165
 
2107
- VImage VImage::colourspace( VipsInterpretation space , VOption *options )
2166
+ VImage VImage::colourspace( VipsInterpretation space , VOption *options ) const
2108
2167
  {
2109
2168
  VImage out;
2110
2169
 
@@ -2117,7 +2176,7 @@ VImage VImage::colourspace( VipsInterpretation space , VOption *options )
2117
2176
  return( out );
2118
2177
  }
2119
2178
 
2120
- VImage VImage::Lab2XYZ( VOption *options )
2179
+ VImage VImage::Lab2XYZ( VOption *options ) const
2121
2180
  {
2122
2181
  VImage out;
2123
2182
 
@@ -2129,7 +2188,7 @@ VImage VImage::Lab2XYZ( VOption *options )
2129
2188
  return( out );
2130
2189
  }
2131
2190
 
2132
- VImage VImage::XYZ2Lab( VOption *options )
2191
+ VImage VImage::XYZ2Lab( VOption *options ) const
2133
2192
  {
2134
2193
  VImage out;
2135
2194
 
@@ -2141,7 +2200,7 @@ VImage VImage::XYZ2Lab( VOption *options )
2141
2200
  return( out );
2142
2201
  }
2143
2202
 
2144
- VImage VImage::Lab2LCh( VOption *options )
2203
+ VImage VImage::Lab2LCh( VOption *options ) const
2145
2204
  {
2146
2205
  VImage out;
2147
2206
 
@@ -2153,7 +2212,7 @@ VImage VImage::Lab2LCh( VOption *options )
2153
2212
  return( out );
2154
2213
  }
2155
2214
 
2156
- VImage VImage::LCh2Lab( VOption *options )
2215
+ VImage VImage::LCh2Lab( VOption *options ) const
2157
2216
  {
2158
2217
  VImage out;
2159
2218
 
@@ -2165,7 +2224,7 @@ VImage VImage::LCh2Lab( VOption *options )
2165
2224
  return( out );
2166
2225
  }
2167
2226
 
2168
- VImage VImage::LCh2CMC( VOption *options )
2227
+ VImage VImage::LCh2CMC( VOption *options ) const
2169
2228
  {
2170
2229
  VImage out;
2171
2230
 
@@ -2177,7 +2236,7 @@ VImage VImage::LCh2CMC( VOption *options )
2177
2236
  return( out );
2178
2237
  }
2179
2238
 
2180
- VImage VImage::CMC2LCh( VOption *options )
2239
+ VImage VImage::CMC2LCh( VOption *options ) const
2181
2240
  {
2182
2241
  VImage out;
2183
2242
 
@@ -2189,7 +2248,7 @@ VImage VImage::CMC2LCh( VOption *options )
2189
2248
  return( out );
2190
2249
  }
2191
2250
 
2192
- VImage VImage::XYZ2Yxy( VOption *options )
2251
+ VImage VImage::XYZ2Yxy( VOption *options ) const
2193
2252
  {
2194
2253
  VImage out;
2195
2254
 
@@ -2201,7 +2260,7 @@ VImage VImage::XYZ2Yxy( VOption *options )
2201
2260
  return( out );
2202
2261
  }
2203
2262
 
2204
- VImage VImage::Yxy2XYZ( VOption *options )
2263
+ VImage VImage::Yxy2XYZ( VOption *options ) const
2205
2264
  {
2206
2265
  VImage out;
2207
2266
 
@@ -2213,7 +2272,7 @@ VImage VImage::Yxy2XYZ( VOption *options )
2213
2272
  return( out );
2214
2273
  }
2215
2274
 
2216
- VImage VImage::scRGB2XYZ( VOption *options )
2275
+ VImage VImage::scRGB2XYZ( VOption *options ) const
2217
2276
  {
2218
2277
  VImage out;
2219
2278
 
@@ -2225,7 +2284,7 @@ VImage VImage::scRGB2XYZ( VOption *options )
2225
2284
  return( out );
2226
2285
  }
2227
2286
 
2228
- VImage VImage::XYZ2scRGB( VOption *options )
2287
+ VImage VImage::XYZ2scRGB( VOption *options ) const
2229
2288
  {
2230
2289
  VImage out;
2231
2290
 
@@ -2237,7 +2296,7 @@ VImage VImage::XYZ2scRGB( VOption *options )
2237
2296
  return( out );
2238
2297
  }
2239
2298
 
2240
- VImage VImage::LabQ2Lab( VOption *options )
2299
+ VImage VImage::LabQ2Lab( VOption *options ) const
2241
2300
  {
2242
2301
  VImage out;
2243
2302
 
@@ -2249,7 +2308,7 @@ VImage VImage::LabQ2Lab( VOption *options )
2249
2308
  return( out );
2250
2309
  }
2251
2310
 
2252
- VImage VImage::Lab2LabQ( VOption *options )
2311
+ VImage VImage::Lab2LabQ( VOption *options ) const
2253
2312
  {
2254
2313
  VImage out;
2255
2314
 
@@ -2261,7 +2320,7 @@ VImage VImage::Lab2LabQ( VOption *options )
2261
2320
  return( out );
2262
2321
  }
2263
2322
 
2264
- VImage VImage::LabQ2LabS( VOption *options )
2323
+ VImage VImage::LabQ2LabS( VOption *options ) const
2265
2324
  {
2266
2325
  VImage out;
2267
2326
 
@@ -2273,7 +2332,7 @@ VImage VImage::LabQ2LabS( VOption *options )
2273
2332
  return( out );
2274
2333
  }
2275
2334
 
2276
- VImage VImage::LabS2LabQ( VOption *options )
2335
+ VImage VImage::LabS2LabQ( VOption *options ) const
2277
2336
  {
2278
2337
  VImage out;
2279
2338
 
@@ -2285,7 +2344,7 @@ VImage VImage::LabS2LabQ( VOption *options )
2285
2344
  return( out );
2286
2345
  }
2287
2346
 
2288
- VImage VImage::LabS2Lab( VOption *options )
2347
+ VImage VImage::LabS2Lab( VOption *options ) const
2289
2348
  {
2290
2349
  VImage out;
2291
2350
 
@@ -2297,7 +2356,7 @@ VImage VImage::LabS2Lab( VOption *options )
2297
2356
  return( out );
2298
2357
  }
2299
2358
 
2300
- VImage VImage::Lab2LabS( VOption *options )
2359
+ VImage VImage::Lab2LabS( VOption *options ) const
2301
2360
  {
2302
2361
  VImage out;
2303
2362
 
@@ -2309,7 +2368,7 @@ VImage VImage::Lab2LabS( VOption *options )
2309
2368
  return( out );
2310
2369
  }
2311
2370
 
2312
- VImage VImage::rad2float( VOption *options )
2371
+ VImage VImage::rad2float( VOption *options ) const
2313
2372
  {
2314
2373
  VImage out;
2315
2374
 
@@ -2321,7 +2380,7 @@ VImage VImage::rad2float( VOption *options )
2321
2380
  return( out );
2322
2381
  }
2323
2382
 
2324
- VImage VImage::float2rad( VOption *options )
2383
+ VImage VImage::float2rad( VOption *options ) const
2325
2384
  {
2326
2385
  VImage out;
2327
2386
 
@@ -2333,7 +2392,7 @@ VImage VImage::float2rad( VOption *options )
2333
2392
  return( out );
2334
2393
  }
2335
2394
 
2336
- VImage VImage::LabQ2sRGB( VOption *options )
2395
+ VImage VImage::LabQ2sRGB( VOption *options ) const
2337
2396
  {
2338
2397
  VImage out;
2339
2398
 
@@ -2345,7 +2404,7 @@ VImage VImage::LabQ2sRGB( VOption *options )
2345
2404
  return( out );
2346
2405
  }
2347
2406
 
2348
- VImage VImage::sRGB2HSV( VOption *options )
2407
+ VImage VImage::sRGB2HSV( VOption *options ) const
2349
2408
  {
2350
2409
  VImage out;
2351
2410
 
@@ -2357,7 +2416,7 @@ VImage VImage::sRGB2HSV( VOption *options )
2357
2416
  return( out );
2358
2417
  }
2359
2418
 
2360
- VImage VImage::HSV2sRGB( VOption *options )
2419
+ VImage VImage::HSV2sRGB( VOption *options ) const
2361
2420
  {
2362
2421
  VImage out;
2363
2422
 
@@ -2369,7 +2428,7 @@ VImage VImage::HSV2sRGB( VOption *options )
2369
2428
  return( out );
2370
2429
  }
2371
2430
 
2372
- VImage VImage::icc_import( VOption *options )
2431
+ VImage VImage::icc_import( VOption *options ) const
2373
2432
  {
2374
2433
  VImage out;
2375
2434
 
@@ -2381,7 +2440,7 @@ VImage VImage::icc_import( VOption *options )
2381
2440
  return( out );
2382
2441
  }
2383
2442
 
2384
- VImage VImage::icc_export( VOption *options )
2443
+ VImage VImage::icc_export( VOption *options ) const
2385
2444
  {
2386
2445
  VImage out;
2387
2446
 
@@ -2393,7 +2452,7 @@ VImage VImage::icc_export( VOption *options )
2393
2452
  return( out );
2394
2453
  }
2395
2454
 
2396
- VImage VImage::icc_transform( char * output_profile , VOption *options )
2455
+ VImage VImage::icc_transform( char * output_profile , VOption *options ) const
2397
2456
  {
2398
2457
  VImage out;
2399
2458
 
@@ -2406,7 +2465,7 @@ VImage VImage::icc_transform( char * output_profile , VOption *options )
2406
2465
  return( out );
2407
2466
  }
2408
2467
 
2409
- VImage VImage::dE76( VImage right , VOption *options )
2468
+ VImage VImage::dE76( VImage right , VOption *options ) const
2410
2469
  {
2411
2470
  VImage out;
2412
2471
 
@@ -2419,7 +2478,7 @@ VImage VImage::dE76( VImage right , VOption *options )
2419
2478
  return( out );
2420
2479
  }
2421
2480
 
2422
- VImage VImage::dE00( VImage right , VOption *options )
2481
+ VImage VImage::dE00( VImage right , VOption *options ) const
2423
2482
  {
2424
2483
  VImage out;
2425
2484
 
@@ -2432,7 +2491,7 @@ VImage VImage::dE00( VImage right , VOption *options )
2432
2491
  return( out );
2433
2492
  }
2434
2493
 
2435
- VImage VImage::dECMC( VImage right , VOption *options )
2494
+ VImage VImage::dECMC( VImage right , VOption *options ) const
2436
2495
  {
2437
2496
  VImage out;
2438
2497
 
@@ -2445,7 +2504,7 @@ VImage VImage::dECMC( VImage right , VOption *options )
2445
2504
  return( out );
2446
2505
  }
2447
2506
 
2448
- VImage VImage::sRGB2scRGB( VOption *options )
2507
+ VImage VImage::sRGB2scRGB( VOption *options ) const
2449
2508
  {
2450
2509
  VImage out;
2451
2510
 
@@ -2457,7 +2516,7 @@ VImage VImage::sRGB2scRGB( VOption *options )
2457
2516
  return( out );
2458
2517
  }
2459
2518
 
2460
- VImage VImage::scRGB2BW( VOption *options )
2519
+ VImage VImage::scRGB2BW( VOption *options ) const
2461
2520
  {
2462
2521
  VImage out;
2463
2522
 
@@ -2469,7 +2528,7 @@ VImage VImage::scRGB2BW( VOption *options )
2469
2528
  return( out );
2470
2529
  }
2471
2530
 
2472
- VImage VImage::scRGB2sRGB( VOption *options )
2531
+ VImage VImage::scRGB2sRGB( VOption *options ) const
2473
2532
  {
2474
2533
  VImage out;
2475
2534
 
@@ -2481,7 +2540,7 @@ VImage VImage::scRGB2sRGB( VOption *options )
2481
2540
  return( out );
2482
2541
  }
2483
2542
 
2484
- VImage VImage::maplut( VImage lut , VOption *options )
2543
+ VImage VImage::maplut( VImage lut , VOption *options ) const
2485
2544
  {
2486
2545
  VImage out;
2487
2546
 
@@ -2494,7 +2553,7 @@ VImage VImage::maplut( VImage lut , VOption *options )
2494
2553
  return( out );
2495
2554
  }
2496
2555
 
2497
- int VImage::percent( double percent , VOption *options )
2556
+ int VImage::percent( double percent , VOption *options ) const
2498
2557
  {
2499
2558
  int threshold;
2500
2559
 
@@ -2507,7 +2566,7 @@ int VImage::percent( double percent , VOption *options )
2507
2566
  return( threshold );
2508
2567
  }
2509
2568
 
2510
- VImage VImage::stdif( int width , int height , VOption *options )
2569
+ VImage VImage::stdif( int width , int height , VOption *options ) const
2511
2570
  {
2512
2571
  VImage out;
2513
2572
 
@@ -2521,7 +2580,7 @@ VImage VImage::stdif( int width , int height , VOption *options )
2521
2580
  return( out );
2522
2581
  }
2523
2582
 
2524
- VImage VImage::hist_cum( VOption *options )
2583
+ VImage VImage::hist_cum( VOption *options ) const
2525
2584
  {
2526
2585
  VImage out;
2527
2586
 
@@ -2533,7 +2592,7 @@ VImage VImage::hist_cum( VOption *options )
2533
2592
  return( out );
2534
2593
  }
2535
2594
 
2536
- VImage VImage::hist_match( VImage ref , VOption *options )
2595
+ VImage VImage::hist_match( VImage ref , VOption *options ) const
2537
2596
  {
2538
2597
  VImage out;
2539
2598
 
@@ -2546,7 +2605,7 @@ VImage VImage::hist_match( VImage ref , VOption *options )
2546
2605
  return( out );
2547
2606
  }
2548
2607
 
2549
- VImage VImage::hist_norm( VOption *options )
2608
+ VImage VImage::hist_norm( VOption *options ) const
2550
2609
  {
2551
2610
  VImage out;
2552
2611
 
@@ -2558,7 +2617,7 @@ VImage VImage::hist_norm( VOption *options )
2558
2617
  return( out );
2559
2618
  }
2560
2619
 
2561
- VImage VImage::hist_equal( VOption *options )
2620
+ VImage VImage::hist_equal( VOption *options ) const
2562
2621
  {
2563
2622
  VImage out;
2564
2623
 
@@ -2570,7 +2629,7 @@ VImage VImage::hist_equal( VOption *options )
2570
2629
  return( out );
2571
2630
  }
2572
2631
 
2573
- VImage VImage::hist_plot( VOption *options )
2632
+ VImage VImage::hist_plot( VOption *options ) const
2574
2633
  {
2575
2634
  VImage out;
2576
2635
 
@@ -2582,7 +2641,7 @@ VImage VImage::hist_plot( VOption *options )
2582
2641
  return( out );
2583
2642
  }
2584
2643
 
2585
- VImage VImage::hist_local( int width , int height , VOption *options )
2644
+ VImage VImage::hist_local( int width , int height , VOption *options ) const
2586
2645
  {
2587
2646
  VImage out;
2588
2647
 
@@ -2596,7 +2655,7 @@ VImage VImage::hist_local( int width , int height , VOption *options )
2596
2655
  return( out );
2597
2656
  }
2598
2657
 
2599
- bool VImage::hist_ismonotonic( VOption *options )
2658
+ bool VImage::hist_ismonotonic( VOption *options ) const
2600
2659
  {
2601
2660
  bool monotonic;
2602
2661
 
@@ -2608,7 +2667,7 @@ bool VImage::hist_ismonotonic( VOption *options )
2608
2667
  return( monotonic );
2609
2668
  }
2610
2669
 
2611
- double VImage::hist_entropy( VOption *options )
2670
+ double VImage::hist_entropy( VOption *options ) const
2612
2671
  {
2613
2672
  double out;
2614
2673
 
@@ -2620,7 +2679,7 @@ double VImage::hist_entropy( VOption *options )
2620
2679
  return( out );
2621
2680
  }
2622
2681
 
2623
- VImage VImage::conv( VImage mask , VOption *options )
2682
+ VImage VImage::conv( VImage mask , VOption *options ) const
2624
2683
  {
2625
2684
  VImage out;
2626
2685
 
@@ -2633,7 +2692,7 @@ VImage VImage::conv( VImage mask , VOption *options )
2633
2692
  return( out );
2634
2693
  }
2635
2694
 
2636
- VImage VImage::conva( VImage mask , VOption *options )
2695
+ VImage VImage::conva( VImage mask , VOption *options ) const
2637
2696
  {
2638
2697
  VImage out;
2639
2698
 
@@ -2646,7 +2705,7 @@ VImage VImage::conva( VImage mask , VOption *options )
2646
2705
  return( out );
2647
2706
  }
2648
2707
 
2649
- VImage VImage::convf( VImage mask , VOption *options )
2708
+ VImage VImage::convf( VImage mask , VOption *options ) const
2650
2709
  {
2651
2710
  VImage out;
2652
2711
 
@@ -2659,7 +2718,7 @@ VImage VImage::convf( VImage mask , VOption *options )
2659
2718
  return( out );
2660
2719
  }
2661
2720
 
2662
- VImage VImage::convi( VImage mask , VOption *options )
2721
+ VImage VImage::convi( VImage mask , VOption *options ) const
2663
2722
  {
2664
2723
  VImage out;
2665
2724
 
@@ -2672,7 +2731,7 @@ VImage VImage::convi( VImage mask , VOption *options )
2672
2731
  return( out );
2673
2732
  }
2674
2733
 
2675
- VImage VImage::compass( VImage mask , VOption *options )
2734
+ VImage VImage::compass( VImage mask , VOption *options ) const
2676
2735
  {
2677
2736
  VImage out;
2678
2737
 
@@ -2685,7 +2744,7 @@ VImage VImage::compass( VImage mask , VOption *options )
2685
2744
  return( out );
2686
2745
  }
2687
2746
 
2688
- VImage VImage::convsep( VImage mask , VOption *options )
2747
+ VImage VImage::convsep( VImage mask , VOption *options ) const
2689
2748
  {
2690
2749
  VImage out;
2691
2750
 
@@ -2698,7 +2757,7 @@ VImage VImage::convsep( VImage mask , VOption *options )
2698
2757
  return( out );
2699
2758
  }
2700
2759
 
2701
- VImage VImage::convasep( VImage mask , VOption *options )
2760
+ VImage VImage::convasep( VImage mask , VOption *options ) const
2702
2761
  {
2703
2762
  VImage out;
2704
2763
 
@@ -2711,7 +2770,7 @@ VImage VImage::convasep( VImage mask , VOption *options )
2711
2770
  return( out );
2712
2771
  }
2713
2772
 
2714
- VImage VImage::fastcor( VImage ref , VOption *options )
2773
+ VImage VImage::fastcor( VImage ref , VOption *options ) const
2715
2774
  {
2716
2775
  VImage out;
2717
2776
 
@@ -2724,7 +2783,7 @@ VImage VImage::fastcor( VImage ref , VOption *options )
2724
2783
  return( out );
2725
2784
  }
2726
2785
 
2727
- VImage VImage::spcor( VImage ref , VOption *options )
2786
+ VImage VImage::spcor( VImage ref , VOption *options ) const
2728
2787
  {
2729
2788
  VImage out;
2730
2789
 
@@ -2737,7 +2796,7 @@ VImage VImage::spcor( VImage ref , VOption *options )
2737
2796
  return( out );
2738
2797
  }
2739
2798
 
2740
- VImage VImage::sharpen( VOption *options )
2799
+ VImage VImage::sharpen( VOption *options ) const
2741
2800
  {
2742
2801
  VImage out;
2743
2802
 
@@ -2749,7 +2808,7 @@ VImage VImage::sharpen( VOption *options )
2749
2808
  return( out );
2750
2809
  }
2751
2810
 
2752
- VImage VImage::gaussblur( double sigma , VOption *options )
2811
+ VImage VImage::gaussblur( double sigma , VOption *options ) const
2753
2812
  {
2754
2813
  VImage out;
2755
2814
 
@@ -2762,7 +2821,31 @@ VImage VImage::gaussblur( double sigma , VOption *options )
2762
2821
  return( out );
2763
2822
  }
2764
2823
 
2765
- VImage VImage::fwfft( VOption *options )
2824
+ VImage VImage::canny( VOption *options ) const
2825
+ {
2826
+ VImage out;
2827
+
2828
+ call( "canny" ,
2829
+ (options ? options : VImage::option()) ->
2830
+ set( "in", *this ) ->
2831
+ set( "out", &out ) );
2832
+
2833
+ return( out );
2834
+ }
2835
+
2836
+ VImage VImage::sobel( VOption *options ) const
2837
+ {
2838
+ VImage out;
2839
+
2840
+ call( "sobel" ,
2841
+ (options ? options : VImage::option()) ->
2842
+ set( "in", *this ) ->
2843
+ set( "out", &out ) );
2844
+
2845
+ return( out );
2846
+ }
2847
+
2848
+ VImage VImage::fwfft( VOption *options ) const
2766
2849
  {
2767
2850
  VImage out;
2768
2851
 
@@ -2774,7 +2857,7 @@ VImage VImage::fwfft( VOption *options )
2774
2857
  return( out );
2775
2858
  }
2776
2859
 
2777
- VImage VImage::invfft( VOption *options )
2860
+ VImage VImage::invfft( VOption *options ) const
2778
2861
  {
2779
2862
  VImage out;
2780
2863
 
@@ -2786,7 +2869,7 @@ VImage VImage::invfft( VOption *options )
2786
2869
  return( out );
2787
2870
  }
2788
2871
 
2789
- VImage VImage::freqmult( VImage mask , VOption *options )
2872
+ VImage VImage::freqmult( VImage mask , VOption *options ) const
2790
2873
  {
2791
2874
  VImage out;
2792
2875
 
@@ -2799,7 +2882,7 @@ VImage VImage::freqmult( VImage mask , VOption *options )
2799
2882
  return( out );
2800
2883
  }
2801
2884
 
2802
- VImage VImage::spectrum( VOption *options )
2885
+ VImage VImage::spectrum( VOption *options ) const
2803
2886
  {
2804
2887
  VImage out;
2805
2888
 
@@ -2811,7 +2894,7 @@ VImage VImage::spectrum( VOption *options )
2811
2894
  return( out );
2812
2895
  }
2813
2896
 
2814
- VImage VImage::phasecor( VImage in2 , VOption *options )
2897
+ VImage VImage::phasecor( VImage in2 , VOption *options ) const
2815
2898
  {
2816
2899
  VImage out;
2817
2900
 
@@ -2824,7 +2907,7 @@ VImage VImage::phasecor( VImage in2 , VOption *options )
2824
2907
  return( out );
2825
2908
  }
2826
2909
 
2827
- VImage VImage::morph( VImage mask , VipsOperationMorphology morph , VOption *options )
2910
+ VImage VImage::morph( VImage mask , VipsOperationMorphology morph , VOption *options ) const
2828
2911
  {
2829
2912
  VImage out;
2830
2913
 
@@ -2838,7 +2921,7 @@ VImage VImage::morph( VImage mask , VipsOperationMorphology morph , VOption *opt
2838
2921
  return( out );
2839
2922
  }
2840
2923
 
2841
- VImage VImage::rank( int width , int height , int index , VOption *options )
2924
+ VImage VImage::rank( int width , int height , int index , VOption *options ) const
2842
2925
  {
2843
2926
  VImage out;
2844
2927
 
@@ -2853,7 +2936,7 @@ VImage VImage::rank( int width , int height , int index , VOption *options )
2853
2936
  return( out );
2854
2937
  }
2855
2938
 
2856
- double VImage::countlines( VipsDirection direction , VOption *options )
2939
+ double VImage::countlines( VipsDirection direction , VOption *options ) const
2857
2940
  {
2858
2941
  double nolines;
2859
2942
 
@@ -2866,7 +2949,7 @@ double VImage::countlines( VipsDirection direction , VOption *options )
2866
2949
  return( nolines );
2867
2950
  }
2868
2951
 
2869
- VImage VImage::labelregions( VOption *options )
2952
+ VImage VImage::labelregions( VOption *options ) const
2870
2953
  {
2871
2954
  VImage mask;
2872
2955
 
@@ -2878,7 +2961,7 @@ VImage VImage::labelregions( VOption *options )
2878
2961
  return( mask );
2879
2962
  }
2880
2963
 
2881
- VImage VImage::fill_nearest( VOption *options )
2964
+ VImage VImage::fill_nearest( VOption *options ) const
2882
2965
  {
2883
2966
  VImage out;
2884
2967
 
@@ -2890,7 +2973,7 @@ VImage VImage::fill_nearest( VOption *options )
2890
2973
  return( out );
2891
2974
  }
2892
2975
 
2893
- void VImage::draw_rect( std::vector<double> ink , int left , int top , int width , int height , VOption *options )
2976
+ void VImage::draw_rect( std::vector<double> ink , int left , int top , int width , int height , VOption *options ) const
2894
2977
  {
2895
2978
  call( "draw_rect" ,
2896
2979
  (options ? options : VImage::option()) ->
@@ -2902,7 +2985,7 @@ void VImage::draw_rect( std::vector<double> ink , int left , int top , int width
2902
2985
  set( "height", height ) );
2903
2986
  }
2904
2987
 
2905
- void VImage::draw_mask( std::vector<double> ink , VImage mask , int x , int y , VOption *options )
2988
+ void VImage::draw_mask( std::vector<double> ink , VImage mask , int x , int y , VOption *options ) const
2906
2989
  {
2907
2990
  call( "draw_mask" ,
2908
2991
  (options ? options : VImage::option()) ->
@@ -2913,7 +2996,7 @@ void VImage::draw_mask( std::vector<double> ink , VImage mask , int x , int y ,
2913
2996
  set( "y", y ) );
2914
2997
  }
2915
2998
 
2916
- void VImage::draw_line( std::vector<double> ink , int x1 , int y1 , int x2 , int y2 , VOption *options )
2999
+ void VImage::draw_line( std::vector<double> ink , int x1 , int y1 , int x2 , int y2 , VOption *options ) const
2917
3000
  {
2918
3001
  call( "draw_line" ,
2919
3002
  (options ? options : VImage::option()) ->
@@ -2925,7 +3008,7 @@ void VImage::draw_line( std::vector<double> ink , int x1 , int y1 , int x2 , int
2925
3008
  set( "y2", y2 ) );
2926
3009
  }
2927
3010
 
2928
- void VImage::draw_circle( std::vector<double> ink , int cx , int cy , int radius , VOption *options )
3011
+ void VImage::draw_circle( std::vector<double> ink , int cx , int cy , int radius , VOption *options ) const
2929
3012
  {
2930
3013
  call( "draw_circle" ,
2931
3014
  (options ? options : VImage::option()) ->
@@ -2936,7 +3019,7 @@ void VImage::draw_circle( std::vector<double> ink , int cx , int cy , int radius
2936
3019
  set( "radius", radius ) );
2937
3020
  }
2938
3021
 
2939
- void VImage::draw_flood( std::vector<double> ink , int x , int y , VOption *options )
3022
+ void VImage::draw_flood( std::vector<double> ink , int x , int y , VOption *options ) const
2940
3023
  {
2941
3024
  call( "draw_flood" ,
2942
3025
  (options ? options : VImage::option()) ->
@@ -2946,7 +3029,7 @@ void VImage::draw_flood( std::vector<double> ink , int x , int y , VOption *opti
2946
3029
  set( "y", y ) );
2947
3030
  }
2948
3031
 
2949
- void VImage::draw_image( VImage sub , int x , int y , VOption *options )
3032
+ void VImage::draw_image( VImage sub , int x , int y , VOption *options ) const
2950
3033
  {
2951
3034
  call( "draw_image" ,
2952
3035
  (options ? options : VImage::option()) ->
@@ -2956,7 +3039,7 @@ void VImage::draw_image( VImage sub , int x , int y , VOption *options )
2956
3039
  set( "y", y ) );
2957
3040
  }
2958
3041
 
2959
- void VImage::draw_smudge( int left , int top , int width , int height , VOption *options )
3042
+ void VImage::draw_smudge( int left , int top , int width , int height , VOption *options ) const
2960
3043
  {
2961
3044
  call( "draw_smudge" ,
2962
3045
  (options ? options : VImage::option()) ->
@@ -2967,7 +3050,7 @@ void VImage::draw_smudge( int left , int top , int width , int height , VOption
2967
3050
  set( "height", height ) );
2968
3051
  }
2969
3052
 
2970
- VImage VImage::merge( VImage sec , VipsDirection direction , int dx , int dy , VOption *options )
3053
+ VImage VImage::merge( VImage sec , VipsDirection direction , int dx , int dy , VOption *options ) const
2971
3054
  {
2972
3055
  VImage out;
2973
3056
 
@@ -2983,7 +3066,7 @@ VImage VImage::merge( VImage sec , VipsDirection direction , int dx , int dy , V
2983
3066
  return( out );
2984
3067
  }
2985
3068
 
2986
- VImage VImage::mosaic( VImage sec , VipsDirection direction , int xref , int yref , int xsec , int ysec , VOption *options )
3069
+ VImage VImage::mosaic( VImage sec , VipsDirection direction , int xref , int yref , int xsec , int ysec , VOption *options ) const
2987
3070
  {
2988
3071
  VImage out;
2989
3072
 
@@ -3001,7 +3084,7 @@ VImage VImage::mosaic( VImage sec , VipsDirection direction , int xref , int yre
3001
3084
  return( out );
3002
3085
  }
3003
3086
 
3004
- VImage VImage::mosaic1( VImage sec , VipsDirection direction , int xr1 , int yr1 , int xs1 , int ys1 , int xr2 , int yr2 , int xs2 , int ys2 , VOption *options )
3087
+ VImage VImage::mosaic1( VImage sec , VipsDirection direction , int xr1 , int yr1 , int xs1 , int ys1 , int xr2 , int yr2 , int xs2 , int ys2 , VOption *options ) const
3005
3088
  {
3006
3089
  VImage out;
3007
3090
 
@@ -3023,7 +3106,7 @@ VImage VImage::mosaic1( VImage sec , VipsDirection direction , int xr1 , int yr1
3023
3106
  return( out );
3024
3107
  }
3025
3108
 
3026
- VImage VImage::match( VImage sec , int xr1 , int yr1 , int xs1 , int ys1 , int xr2 , int yr2 , int xs2 , int ys2 , VOption *options )
3109
+ VImage VImage::match( VImage sec , int xr1 , int yr1 , int xs1 , int ys1 , int xr2 , int yr2 , int xs2 , int ys2 , VOption *options ) const
3027
3110
  {
3028
3111
  VImage out;
3029
3112
 
@@ -3044,7 +3127,7 @@ VImage VImage::match( VImage sec , int xr1 , int yr1 , int xs1 , int ys1 , int x
3044
3127
  return( out );
3045
3128
  }
3046
3129
 
3047
- VImage VImage::globalbalance( VOption *options )
3130
+ VImage VImage::globalbalance( VOption *options ) const
3048
3131
  {
3049
3132
  VImage out;
3050
3133