@img/sharp-libvips-dev 1.2.4-rc.0 → 1.3.0-rc.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.
Files changed (55) hide show
  1. package/README.md +1 -1
  2. package/cplusplus/VError.cpp +1 -1
  3. package/cplusplus/VImage.cpp +66 -109
  4. package/cplusplus/vips-operators.cpp +172 -0
  5. package/include/archive.h +2 -2
  6. package/include/archive_entry.h +1 -1
  7. package/include/glib-2.0/gio/gdbusinterfaceskeleton.h +8 -1
  8. package/include/glib-2.0/gio/gfileinfo.h +7 -0
  9. package/include/glib-2.0/gio/gio-visibility.h +34 -0
  10. package/include/glib-2.0/girepository/gi-visibility.h +34 -0
  11. package/include/glib-2.0/glib/glib-visibility.h +34 -0
  12. package/include/glib-2.0/glib/gmacros.h +4 -0
  13. package/include/glib-2.0/glib/gmarkup.h +2 -0
  14. package/include/glib-2.0/glib/gtypes.h +46 -4
  15. package/include/glib-2.0/glib/gunicode.h +13 -1
  16. package/include/glib-2.0/glib/gversionmacros.h +9 -0
  17. package/include/glib-2.0/glib-unix.h +4 -0
  18. package/include/glib-2.0/gmodule/gmodule-visibility.h +34 -0
  19. package/include/glib-2.0/gobject/genums.h +2 -2
  20. package/include/glib-2.0/gobject/gobject-visibility.h +34 -0
  21. package/include/harfbuzz/hb-version.h +2 -2
  22. package/include/libpng16/png.h +7 -7
  23. package/include/libpng16/pngconf.h +1 -1
  24. package/include/libpng16/pnglibconf.h +1 -1
  25. package/include/librsvg-2.0/librsvg/rsvg-version.h +2 -2
  26. package/include/librsvg-2.0/librsvg/rsvg.h +6 -1
  27. package/include/png.h +7 -7
  28. package/include/pngconf.h +1 -1
  29. package/include/pnglibconf.h +1 -1
  30. package/include/ultrahdr_api.h +898 -0
  31. package/include/vips/VError8.h +17 -14
  32. package/include/vips/VImage8.h +235 -32
  33. package/include/vips/arithmetic.h +9 -9
  34. package/include/vips/basic.h +11 -1
  35. package/include/vips/colour.h +19 -2
  36. package/include/vips/conversion.h +8 -8
  37. package/include/vips/convolution.h +1 -1
  38. package/include/vips/create.h +2 -2
  39. package/include/vips/draw.h +1 -1
  40. package/include/vips/enumtypes.h +3 -0
  41. package/include/vips/foreign.h +74 -15
  42. package/include/vips/header.h +22 -0
  43. package/include/vips/image.h +8 -5
  44. package/include/vips/morphology.h +1 -1
  45. package/include/vips/operation.h +2 -1
  46. package/include/vips/private.h +5 -10
  47. package/include/vips/region.h +7 -1
  48. package/include/vips/resample.h +2 -2
  49. package/include/vips/semaphore.h +1 -5
  50. package/include/vips/threadpool.h +0 -1
  51. package/include/vips/version.h +8 -8
  52. package/include/zlib.h +5 -5
  53. package/package.json +1 -1
  54. package/versions.json +8 -8
  55. package/include/spng.h +0 -537
package/README.md CHANGED
@@ -28,8 +28,8 @@ used under the terms of the following licences:
28
28
  | libnsgif | MIT Licence |
29
29
  | libpng | [libpng License](https://github.com/pnggroup/libpng/blob/master/LICENSE) |
30
30
  | librsvg | LGPLv3 |
31
- | libspng | [BSD 2-Clause, libpng License](https://github.com/randy408/libspng/blob/master/LICENSE) |
32
31
  | libtiff | [libtiff License](https://gitlab.com/libtiff/libtiff/blob/master/LICENSE.md) (BSD-like) |
32
+ | libultrahdr | Apache-2.0 License |
33
33
  | libvips | LGPLv3 |
34
34
  | libwebp | New BSD License |
35
35
  | libxml2 | MIT Licence |
@@ -45,7 +45,7 @@ operator<<(std::ostream &file, const VError &err)
45
45
  void
46
46
  VError::ostream_print(std::ostream &file) const
47
47
  {
48
- file << _what;
48
+ file << what();
49
49
  }
50
50
 
51
51
  VIPS_NAMESPACE_END
@@ -431,8 +431,7 @@ VOption::set_operation(VipsOperation *operation)
431
431
  #ifdef VIPS_DEBUG_VERBOSE
432
432
  printf("set_operation: ");
433
433
  vips_object_print_name(VIPS_OBJECT(operation));
434
- char *str_value =
435
- g_strdup_value_contents(&(*i)->value);
434
+ char *str_value = g_strdup_value_contents(&(*i)->value);
436
435
  printf(".%s = %s\n", (*i)->name, str_value);
437
436
  g_free(str_value);
438
437
  #endif /*VIPS_DEBUG_VERBOSE*/
@@ -452,14 +451,12 @@ VOption::get_operation(VipsOperation *operation)
452
451
  if (!(*i)->input) {
453
452
  const char *name = (*i)->name;
454
453
 
455
- g_object_get_property(G_OBJECT(operation),
456
- name, &(*i)->value);
454
+ g_object_get_property(G_OBJECT(operation), name, &(*i)->value);
457
455
 
458
456
  #ifdef VIPS_DEBUG_VERBOSE
459
457
  printf("get_operation: ");
460
458
  vips_object_print_name(VIPS_OBJECT(operation));
461
- char *str_value = g_strdup_value_contents(
462
- &(*i)->value);
459
+ char *str_value = g_strdup_value_contents(&(*i)->value);
463
460
  printf(".%s = %s\n", name, str_value);
464
461
  g_free(str_value);
465
462
  #endif /*VIPS_DEBUG_VERBOSE*/
@@ -469,9 +466,8 @@ VOption::get_operation(VipsOperation *operation)
469
466
 
470
467
  if (type == VIPS_TYPE_IMAGE) {
471
468
  // rebox object
472
- VipsImage *image = VIPS_IMAGE(
473
- g_value_get_object(value));
474
- *((*i)->vimage) = VImage(image);
469
+ VipsImage *image = VIPS_IMAGE(g_value_get_object(value));
470
+ *((*i)->vimage) = VImage(image, NOSTEAL);
475
471
  }
476
472
  else if (type == G_TYPE_INT)
477
473
  *((*i)->vint) = g_value_get_int(value);
@@ -481,19 +477,15 @@ VOption::get_operation(VipsOperation *operation)
481
477
  *((*i)->vdouble) = g_value_get_double(value);
482
478
  else if (type == VIPS_TYPE_ARRAY_DOUBLE) {
483
479
  int length;
484
- double *array =
485
- vips_value_get_array_double(value,
486
- &length);
480
+ double *array = vips_value_get_array_double(value, &length);
487
481
 
488
482
  ((*i)->vvector)->resize(length);
489
483
  for (int j = 0; j < length; j++)
490
484
  (*((*i)->vvector))[j] = array[j];
491
485
  }
492
- else if (type == VIPS_TYPE_BLOB) {
486
+ else if (type == VIPS_TYPE_BLOB)
493
487
  // our caller gets a reference
494
- *((*i)->vblob) =
495
- (VipsBlob *) g_value_dup_boxed(value);
496
- }
488
+ *((*i)->vblob) = (VipsBlob *) g_value_dup_boxed(value);
497
489
  }
498
490
  }
499
491
 
@@ -515,8 +507,7 @@ VImage::call_option_string(const char *operation_name,
515
507
  * override things we set deliberately.
516
508
  */
517
509
  if (option_string &&
518
- vips_object_set_from_string(VIPS_OBJECT(operation),
519
- option_string)) {
510
+ vips_object_set_from_string(VIPS_OBJECT(operation), option_string)) {
520
511
  vips_object_unref_outputs(VIPS_OBJECT(operation));
521
512
  g_object_unref(operation);
522
513
  delete options;
@@ -540,15 +531,19 @@ VImage::call_option_string(const char *operation_name,
540
531
  if (options)
541
532
  options->get_operation(operation);
542
533
 
543
- /* We're done with options!
534
+ /* Unref all unassigned outputs.
544
535
  */
545
- delete options;
536
+ vips_object_unref_outputs(VIPS_OBJECT(operation));
546
537
 
547
538
  /* The operation we have built should now have been reffed by
548
539
  * one of its arguments or have finished its work. Either
549
540
  * way, we can unref.
550
541
  */
551
542
  g_object_unref(operation);
543
+
544
+ /* We're done with options!
545
+ */
546
+ delete options;
552
547
  }
553
548
 
554
549
  void
@@ -669,8 +664,7 @@ VImage::new_matrixv(int width, int height, ...)
669
664
  va_start(ap, height);
670
665
  for (int y = 0; y < height; y++)
671
666
  for (int x = 0; x < width; x++)
672
- *VIPS_MATRIX(vips_matrix, x, y) =
673
- va_arg(ap, double);
667
+ *VIPS_MATRIX(vips_matrix, x, y) = va_arg(ap, double);
674
668
  va_end(ap);
675
669
 
676
670
  return matrix;
@@ -786,7 +780,10 @@ VImage::thumbnail_buffer(void *buf, size_t len, int width, VOption *options)
786
780
  /* We don't take a copy of the data or free it.
787
781
  */
788
782
  blob = vips_blob_new(nullptr, buf, len);
789
- options = (options ? options : VImage::option())->set("buffer", blob)->set("width", width)->set("out", &out);
783
+ options = (options ? options : VImage::option())
784
+ ->set("buffer", blob)
785
+ ->set("width", width)
786
+ ->set("out", &out);
790
787
  vips_area_unref(VIPS_AREA(blob));
791
788
 
792
789
  call("thumbnail_buffer", options);
@@ -859,12 +856,11 @@ VImage::minpos(VOption *options) const
859
856
  {
860
857
  double x, y;
861
858
 
862
- (void) min(
863
- (options ? options : VImage::option())
864
- ->set("x", &x)
865
- ->set("y", &y));
859
+ (void) min((options ? options : VImage::option())
860
+ ->set("x", &x)
861
+ ->set("y", &y));
866
862
 
867
- return std::complex<double>(x, y);
863
+ return {x, y};
868
864
  }
869
865
 
870
866
  std::complex<double>
@@ -872,12 +868,11 @@ VImage::maxpos(VOption *options) const
872
868
  {
873
869
  double x, y;
874
870
 
875
- (void) max(
876
- (options ? options : VImage::option())
877
- ->set("x", &x)
878
- ->set("y", &y));
871
+ (void) max((options ? options : VImage::option())
872
+ ->set("x", &x)
873
+ ->set("y", &y));
879
874
 
880
- return std::complex<double>(x, y);
875
+ return {x, y};
881
876
  }
882
877
 
883
878
  // Operator overloads
@@ -1152,29 +1147,25 @@ operator<(const VImage a, const VImage b)
1152
1147
  VImage
1153
1148
  operator<(const double a, const VImage b)
1154
1149
  {
1155
- return b.relational_const(VIPS_OPERATION_RELATIONAL_MORE,
1156
- to_vector(a));
1150
+ return b.relational_const(VIPS_OPERATION_RELATIONAL_MORE, to_vector(a));
1157
1151
  }
1158
1152
 
1159
1153
  VImage
1160
1154
  operator<(const VImage a, const double b)
1161
1155
  {
1162
- return a.relational_const(VIPS_OPERATION_RELATIONAL_LESS,
1163
- to_vector(b));
1156
+ return a.relational_const(VIPS_OPERATION_RELATIONAL_LESS, to_vector(b));
1164
1157
  }
1165
1158
 
1166
1159
  VImage
1167
1160
  operator<(const std::vector<double> a, const VImage b)
1168
1161
  {
1169
- return b.relational_const(VIPS_OPERATION_RELATIONAL_MORE,
1170
- a);
1162
+ return b.relational_const(VIPS_OPERATION_RELATIONAL_MORE, a);
1171
1163
  }
1172
1164
 
1173
1165
  VImage
1174
1166
  operator<(const VImage a, const std::vector<double> b)
1175
1167
  {
1176
- return a.relational_const(VIPS_OPERATION_RELATIONAL_LESS,
1177
- b);
1168
+ return a.relational_const(VIPS_OPERATION_RELATIONAL_LESS, b);
1178
1169
  }
1179
1170
 
1180
1171
  VImage
@@ -1186,29 +1177,25 @@ operator<=(const VImage a, const VImage b)
1186
1177
  VImage
1187
1178
  operator<=(const double a, const VImage b)
1188
1179
  {
1189
- return b.relational_const(VIPS_OPERATION_RELATIONAL_MOREEQ,
1190
- to_vector(a));
1180
+ return b.relational_const(VIPS_OPERATION_RELATIONAL_MOREEQ, to_vector(a));
1191
1181
  }
1192
1182
 
1193
1183
  VImage
1194
1184
  operator<=(const VImage a, const double b)
1195
1185
  {
1196
- return a.relational_const(VIPS_OPERATION_RELATIONAL_LESSEQ,
1197
- to_vector(b));
1186
+ return a.relational_const(VIPS_OPERATION_RELATIONAL_LESSEQ, to_vector(b));
1198
1187
  }
1199
1188
 
1200
1189
  VImage
1201
1190
  operator<=(const std::vector<double> a, const VImage b)
1202
1191
  {
1203
- return b.relational_const(VIPS_OPERATION_RELATIONAL_MOREEQ,
1204
- a);
1192
+ return b.relational_const(VIPS_OPERATION_RELATIONAL_MOREEQ, a);
1205
1193
  }
1206
1194
 
1207
1195
  VImage
1208
1196
  operator<=(const VImage a, const std::vector<double> b)
1209
1197
  {
1210
- return a.relational_const(VIPS_OPERATION_RELATIONAL_LESSEQ,
1211
- b);
1198
+ return a.relational_const(VIPS_OPERATION_RELATIONAL_LESSEQ, b);
1212
1199
  }
1213
1200
 
1214
1201
  VImage
@@ -1220,29 +1207,25 @@ operator>(const VImage a, const VImage b)
1220
1207
  VImage
1221
1208
  operator>(const double a, const VImage b)
1222
1209
  {
1223
- return b.relational_const(VIPS_OPERATION_RELATIONAL_LESS,
1224
- to_vector(a));
1210
+ return b.relational_const(VIPS_OPERATION_RELATIONAL_LESS, to_vector(a));
1225
1211
  }
1226
1212
 
1227
1213
  VImage
1228
1214
  operator>(const VImage a, const double b)
1229
1215
  {
1230
- return a.relational_const(VIPS_OPERATION_RELATIONAL_MORE,
1231
- to_vector(b));
1216
+ return a.relational_const(VIPS_OPERATION_RELATIONAL_MORE, to_vector(b));
1232
1217
  }
1233
1218
 
1234
1219
  VImage
1235
1220
  operator>(const std::vector<double> a, const VImage b)
1236
1221
  {
1237
- return b.relational_const(VIPS_OPERATION_RELATIONAL_LESS,
1238
- a);
1222
+ return b.relational_const(VIPS_OPERATION_RELATIONAL_LESS, a);
1239
1223
  }
1240
1224
 
1241
1225
  VImage
1242
1226
  operator>(const VImage a, const std::vector<double> b)
1243
1227
  {
1244
- return a.relational_const(VIPS_OPERATION_RELATIONAL_MORE,
1245
- b);
1228
+ return a.relational_const(VIPS_OPERATION_RELATIONAL_MORE, b);
1246
1229
  }
1247
1230
 
1248
1231
  VImage
@@ -1254,29 +1237,25 @@ operator>=(const VImage a, const VImage b)
1254
1237
  VImage
1255
1238
  operator>=(const double a, const VImage b)
1256
1239
  {
1257
- return b.relational_const(VIPS_OPERATION_RELATIONAL_LESSEQ,
1258
- to_vector(a));
1240
+ return b.relational_const(VIPS_OPERATION_RELATIONAL_LESSEQ, to_vector(a));
1259
1241
  }
1260
1242
 
1261
1243
  VImage
1262
1244
  operator>=(const VImage a, const double b)
1263
1245
  {
1264
- return a.relational_const(VIPS_OPERATION_RELATIONAL_MOREEQ,
1265
- to_vector(b));
1246
+ return a.relational_const(VIPS_OPERATION_RELATIONAL_MOREEQ, to_vector(b));
1266
1247
  }
1267
1248
 
1268
1249
  VImage
1269
1250
  operator>=(const std::vector<double> a, const VImage b)
1270
1251
  {
1271
- return b.relational_const(VIPS_OPERATION_RELATIONAL_LESSEQ,
1272
- a);
1252
+ return b.relational_const(VIPS_OPERATION_RELATIONAL_LESSEQ, a);
1273
1253
  }
1274
1254
 
1275
1255
  VImage
1276
1256
  operator>=(const VImage a, const std::vector<double> b)
1277
1257
  {
1278
- return a.relational_const(VIPS_OPERATION_RELATIONAL_MOREEQ,
1279
- b);
1258
+ return a.relational_const(VIPS_OPERATION_RELATIONAL_MOREEQ, b);
1280
1259
  }
1281
1260
 
1282
1261
  VImage
@@ -1288,29 +1267,25 @@ operator==(const VImage a, const VImage b)
1288
1267
  VImage
1289
1268
  operator==(const double a, const VImage b)
1290
1269
  {
1291
- return b.relational_const(VIPS_OPERATION_RELATIONAL_EQUAL,
1292
- to_vector(a));
1270
+ return b.relational_const(VIPS_OPERATION_RELATIONAL_EQUAL, to_vector(a));
1293
1271
  }
1294
1272
 
1295
1273
  VImage
1296
1274
  operator==(const VImage a, const double b)
1297
1275
  {
1298
- return a.relational_const(VIPS_OPERATION_RELATIONAL_EQUAL,
1299
- to_vector(b));
1276
+ return a.relational_const(VIPS_OPERATION_RELATIONAL_EQUAL, to_vector(b));
1300
1277
  }
1301
1278
 
1302
1279
  VImage
1303
1280
  operator==(const std::vector<double> a, const VImage b)
1304
1281
  {
1305
- return b.relational_const(VIPS_OPERATION_RELATIONAL_EQUAL,
1306
- a);
1282
+ return b.relational_const(VIPS_OPERATION_RELATIONAL_EQUAL, a);
1307
1283
  }
1308
1284
 
1309
1285
  VImage
1310
1286
  operator==(const VImage a, const std::vector<double> b)
1311
1287
  {
1312
- return a.relational_const(VIPS_OPERATION_RELATIONAL_EQUAL,
1313
- b);
1288
+ return a.relational_const(VIPS_OPERATION_RELATIONAL_EQUAL, b);
1314
1289
  }
1315
1290
 
1316
1291
  VImage
@@ -1322,29 +1297,25 @@ operator!=(const VImage a, const VImage b)
1322
1297
  VImage
1323
1298
  operator!=(const double a, const VImage b)
1324
1299
  {
1325
- return b.relational_const(VIPS_OPERATION_RELATIONAL_NOTEQ,
1326
- to_vector(a));
1300
+ return b.relational_const(VIPS_OPERATION_RELATIONAL_NOTEQ, to_vector(a));
1327
1301
  }
1328
1302
 
1329
1303
  VImage
1330
1304
  operator!=(const VImage a, const double b)
1331
1305
  {
1332
- return a.relational_const(VIPS_OPERATION_RELATIONAL_NOTEQ,
1333
- to_vector(b));
1306
+ return a.relational_const(VIPS_OPERATION_RELATIONAL_NOTEQ, to_vector(b));
1334
1307
  }
1335
1308
 
1336
1309
  VImage
1337
1310
  operator!=(const std::vector<double> a, const VImage b)
1338
1311
  {
1339
- return b.relational_const(VIPS_OPERATION_RELATIONAL_NOTEQ,
1340
- a);
1312
+ return b.relational_const(VIPS_OPERATION_RELATIONAL_NOTEQ, a);
1341
1313
  }
1342
1314
 
1343
1315
  VImage
1344
1316
  operator!=(const VImage a, const std::vector<double> b)
1345
1317
  {
1346
- return a.relational_const(VIPS_OPERATION_RELATIONAL_NOTEQ,
1347
- b);
1318
+ return a.relational_const(VIPS_OPERATION_RELATIONAL_NOTEQ, b);
1348
1319
  }
1349
1320
 
1350
1321
  VImage
@@ -1356,15 +1327,13 @@ operator&(const VImage a, const VImage b)
1356
1327
  VImage
1357
1328
  operator&(const double a, const VImage b)
1358
1329
  {
1359
- return b.boolean_const(VIPS_OPERATION_BOOLEAN_AND,
1360
- to_vector(a));
1330
+ return b.boolean_const(VIPS_OPERATION_BOOLEAN_AND, to_vector(a));
1361
1331
  }
1362
1332
 
1363
1333
  VImage
1364
1334
  operator&(const VImage a, const double b)
1365
1335
  {
1366
- return a.boolean_const(VIPS_OPERATION_BOOLEAN_AND,
1367
- to_vector(b));
1336
+ return a.boolean_const(VIPS_OPERATION_BOOLEAN_AND, to_vector(b));
1368
1337
  }
1369
1338
 
1370
1339
  VImage
@@ -1409,29 +1378,25 @@ operator|(const VImage a, const VImage b)
1409
1378
  VImage
1410
1379
  operator|(const double a, const VImage b)
1411
1380
  {
1412
- return b.boolean_const(VIPS_OPERATION_BOOLEAN_OR,
1413
- to_vector(a));
1381
+ return b.boolean_const(VIPS_OPERATION_BOOLEAN_OR, to_vector(a));
1414
1382
  }
1415
1383
 
1416
1384
  VImage
1417
1385
  operator|(const VImage a, const double b)
1418
1386
  {
1419
- return a.boolean_const(VIPS_OPERATION_BOOLEAN_OR,
1420
- to_vector(b));
1387
+ return a.boolean_const(VIPS_OPERATION_BOOLEAN_OR, to_vector(b));
1421
1388
  }
1422
1389
 
1423
1390
  VImage
1424
1391
  operator|(const std::vector<double> a, const VImage b)
1425
1392
  {
1426
- return b.boolean_const(VIPS_OPERATION_BOOLEAN_OR,
1427
- a);
1393
+ return b.boolean_const(VIPS_OPERATION_BOOLEAN_OR, a);
1428
1394
  }
1429
1395
 
1430
1396
  VImage
1431
1397
  operator|(const VImage a, const std::vector<double> b)
1432
1398
  {
1433
- return a.boolean_const(VIPS_OPERATION_BOOLEAN_OR,
1434
- b);
1399
+ return a.boolean_const(VIPS_OPERATION_BOOLEAN_OR, b);
1435
1400
  }
1436
1401
 
1437
1402
  VImage &
@@ -1464,29 +1429,25 @@ operator^(const VImage a, const VImage b)
1464
1429
  VImage
1465
1430
  operator^(const double a, const VImage b)
1466
1431
  {
1467
- return b.boolean_const(VIPS_OPERATION_BOOLEAN_EOR,
1468
- to_vector(a));
1432
+ return b.boolean_const(VIPS_OPERATION_BOOLEAN_EOR, to_vector(a));
1469
1433
  }
1470
1434
 
1471
1435
  VImage
1472
1436
  operator^(const VImage a, const double b)
1473
1437
  {
1474
- return a.boolean_const(VIPS_OPERATION_BOOLEAN_EOR,
1475
- to_vector(b));
1438
+ return a.boolean_const(VIPS_OPERATION_BOOLEAN_EOR, to_vector(b));
1476
1439
  }
1477
1440
 
1478
1441
  VImage
1479
1442
  operator^(const std::vector<double> a, const VImage b)
1480
1443
  {
1481
- return b.boolean_const(VIPS_OPERATION_BOOLEAN_EOR,
1482
- a);
1444
+ return b.boolean_const(VIPS_OPERATION_BOOLEAN_EOR, a);
1483
1445
  }
1484
1446
 
1485
1447
  VImage
1486
1448
  operator^(const VImage a, const std::vector<double> b)
1487
1449
  {
1488
- return a.boolean_const(VIPS_OPERATION_BOOLEAN_EOR,
1489
- b);
1450
+ return a.boolean_const(VIPS_OPERATION_BOOLEAN_EOR, b);
1490
1451
  }
1491
1452
 
1492
1453
  VImage &
@@ -1519,15 +1480,13 @@ operator<<(const VImage a, const VImage b)
1519
1480
  VImage
1520
1481
  operator<<(const VImage a, const double b)
1521
1482
  {
1522
- return a.boolean_const(VIPS_OPERATION_BOOLEAN_LSHIFT,
1523
- to_vector(b));
1483
+ return a.boolean_const(VIPS_OPERATION_BOOLEAN_LSHIFT, to_vector(b));
1524
1484
  }
1525
1485
 
1526
1486
  VImage
1527
1487
  operator<<(const VImage a, const std::vector<double> b)
1528
1488
  {
1529
- return a.boolean_const(VIPS_OPERATION_BOOLEAN_LSHIFT,
1530
- b);
1489
+ return a.boolean_const(VIPS_OPERATION_BOOLEAN_LSHIFT, b);
1531
1490
  }
1532
1491
 
1533
1492
  VImage &
@@ -1560,15 +1519,13 @@ operator>>(const VImage a, const VImage b)
1560
1519
  VImage
1561
1520
  operator>>(const VImage a, const double b)
1562
1521
  {
1563
- return a.boolean_const(VIPS_OPERATION_BOOLEAN_RSHIFT,
1564
- to_vector(b));
1522
+ return a.boolean_const(VIPS_OPERATION_BOOLEAN_RSHIFT, to_vector(b));
1565
1523
  }
1566
1524
 
1567
1525
  VImage
1568
1526
  operator>>(const VImage a, const std::vector<double> b)
1569
1527
  {
1570
- return a.boolean_const(VIPS_OPERATION_BOOLEAN_RSHIFT,
1571
- b);
1528
+ return a.boolean_const(VIPS_OPERATION_BOOLEAN_RSHIFT, b);
1572
1529
  }
1573
1530
 
1574
1531
  VImage &
@@ -170,6 +170,42 @@ VImage::LabS2LabQ(VOption *options) const
170
170
  return out;
171
171
  }
172
172
 
173
+ VImage
174
+ VImage::Oklab2Oklch(VOption *options) const
175
+ {
176
+ VImage out;
177
+
178
+ call("Oklab2Oklch", (options ? options : VImage::option())
179
+ ->set("in", *this)
180
+ ->set("out", &out));
181
+
182
+ return out;
183
+ }
184
+
185
+ VImage
186
+ VImage::Oklab2XYZ(VOption *options) const
187
+ {
188
+ VImage out;
189
+
190
+ call("Oklab2XYZ", (options ? options : VImage::option())
191
+ ->set("in", *this)
192
+ ->set("out", &out));
193
+
194
+ return out;
195
+ }
196
+
197
+ VImage
198
+ VImage::Oklch2Oklab(VOption *options) const
199
+ {
200
+ VImage out;
201
+
202
+ call("Oklch2Oklab", (options ? options : VImage::option())
203
+ ->set("in", *this)
204
+ ->set("out", &out));
205
+
206
+ return out;
207
+ }
208
+
173
209
  VImage
174
210
  VImage::XYZ2CMYK(VOption *options) const
175
211
  {
@@ -194,6 +230,18 @@ VImage::XYZ2Lab(VOption *options) const
194
230
  return out;
195
231
  }
196
232
 
233
+ VImage
234
+ VImage::XYZ2Oklab(VOption *options) const
235
+ {
236
+ VImage out;
237
+
238
+ call("XYZ2Oklab", (options ? options : VImage::option())
239
+ ->set("in", *this)
240
+ ->set("out", &out));
241
+
242
+ return out;
243
+ }
244
+
197
245
  VImage
198
246
  VImage::XYZ2Yxy(VOption *options) const
199
247
  {
@@ -845,6 +893,42 @@ VImage::dECMC(VImage right, VOption *options) const
845
893
  return out;
846
894
  }
847
895
 
896
+ VImage
897
+ VImage::dcrawload(const char *filename, VOption *options)
898
+ {
899
+ VImage out;
900
+
901
+ call("dcrawload", (options ? options : VImage::option())
902
+ ->set("out", &out)
903
+ ->set("filename", filename));
904
+
905
+ return out;
906
+ }
907
+
908
+ VImage
909
+ VImage::dcrawload_buffer(VipsBlob *buffer, VOption *options)
910
+ {
911
+ VImage out;
912
+
913
+ call("dcrawload_buffer", (options ? options : VImage::option())
914
+ ->set("out", &out)
915
+ ->set("buffer", buffer));
916
+
917
+ return out;
918
+ }
919
+
920
+ VImage
921
+ VImage::dcrawload_source(VSource source, VOption *options)
922
+ {
923
+ VImage out;
924
+
925
+ call("dcrawload_source", (options ? options : VImage::option())
926
+ ->set("out", &out)
927
+ ->set("source", source));
928
+
929
+ return out;
930
+ }
931
+
848
932
  double
849
933
  VImage::deviate(VOption *options) const
850
934
  {
@@ -2002,6 +2086,18 @@ VImage::magickload_buffer(VipsBlob *buffer, VOption *options)
2002
2086
  return out;
2003
2087
  }
2004
2088
 
2089
+ VImage
2090
+ VImage::magickload_source(VSource source, VOption *options)
2091
+ {
2092
+ VImage out;
2093
+
2094
+ call("magickload_source", (options ? options : VImage::option())
2095
+ ->set("out", &out)
2096
+ ->set("source", source));
2097
+
2098
+ return out;
2099
+ }
2100
+
2005
2101
  void
2006
2102
  VImage::magicksave(const char *filename, VOption *options) const
2007
2103
  {
@@ -3711,6 +3807,82 @@ VImage::transpose3d(VOption *options) const
3711
3807
  return out;
3712
3808
  }
3713
3809
 
3810
+ VImage
3811
+ VImage::uhdr2scRGB(VOption *options) const
3812
+ {
3813
+ VImage out;
3814
+
3815
+ call("uhdr2scRGB", (options ? options : VImage::option())
3816
+ ->set("in", *this)
3817
+ ->set("out", &out));
3818
+
3819
+ return out;
3820
+ }
3821
+
3822
+ VImage
3823
+ VImage::uhdrload(const char *filename, VOption *options)
3824
+ {
3825
+ VImage out;
3826
+
3827
+ call("uhdrload", (options ? options : VImage::option())
3828
+ ->set("out", &out)
3829
+ ->set("filename", filename));
3830
+
3831
+ return out;
3832
+ }
3833
+
3834
+ VImage
3835
+ VImage::uhdrload_buffer(VipsBlob *buffer, VOption *options)
3836
+ {
3837
+ VImage out;
3838
+
3839
+ call("uhdrload_buffer", (options ? options : VImage::option())
3840
+ ->set("out", &out)
3841
+ ->set("buffer", buffer));
3842
+
3843
+ return out;
3844
+ }
3845
+
3846
+ VImage
3847
+ VImage::uhdrload_source(VSource source, VOption *options)
3848
+ {
3849
+ VImage out;
3850
+
3851
+ call("uhdrload_source", (options ? options : VImage::option())
3852
+ ->set("out", &out)
3853
+ ->set("source", source));
3854
+
3855
+ return out;
3856
+ }
3857
+
3858
+ void
3859
+ VImage::uhdrsave(const char *filename, VOption *options) const
3860
+ {
3861
+ call("uhdrsave", (options ? options : VImage::option())
3862
+ ->set("in", *this)
3863
+ ->set("filename", filename));
3864
+ }
3865
+
3866
+ VipsBlob *
3867
+ VImage::uhdrsave_buffer(VOption *options) const
3868
+ {
3869
+ VipsBlob *buffer;
3870
+
3871
+ call("uhdrsave_buffer", (options ? options : VImage::option())
3872
+ ->set("in", *this)
3873
+ ->set("buffer", &buffer));
3874
+
3875
+ return buffer;
3876
+ }
3877
+
3878
+ void
3879
+ VImage::uhdrsave_target(VTarget target, VOption *options) const
3880
+ {
3881
+ call("uhdrsave_target", (options ? options : VImage::option())
3882
+ ->set("in", *this)
3883
+ ->set("target", target));
3884
+ }
3885
+
3714
3886
  VImage
3715
3887
  VImage::unpremultiply(VOption *options) const
3716
3888
  {