vips.h 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. #include <stdlib.h>
  2. #include <stdint.h> // uintptr_t
  3. #include <vips/vips.h>
  4. #include <vips/connection.h>
  5. #include <vips/vips7compat.h>
  6. #include <vips/vector.h>
  7. typedef struct _RGB {
  8. double r;
  9. double g;
  10. double b;
  11. } RGB;
  12. // vips async source
  13. typedef struct _VipsAsyncSource {
  14. VipsSourceCustom source; // class designator
  15. uintptr_t readerHandle; // async reader handler
  16. } VipsAsyncSource;
  17. // glib class for vips async source
  18. typedef struct _VipsAsyncSourceClass {
  19. VipsSourceCustomClass parent_class;
  20. } VipsAsyncSourceClass;
  21. int vips_initialize();
  22. void clear_image(VipsImage **in);
  23. void g_free_go(void **buf);
  24. void swap_and_clear(VipsImage **in, VipsImage *out);
  25. int gif_resolution_limit();
  26. int vips_health();
  27. int vips_jpegload_go(void *buf, size_t len, int shrink, VipsImage **out);
  28. int vips_jxlload_go(void *buf, size_t len, int pages, VipsImage **out);
  29. int vips_pngload_go(void *buf, size_t len, VipsImage **out, int unlimited);
  30. int vips_webpload_go(void *buf, size_t len, double scale, int pages, VipsImage **out);
  31. int vips_gifload_go(void *buf, size_t len, int pages, VipsImage **out);
  32. int vips_svgload_go(void *buf, size_t len, double scale, VipsImage **out, int unlimited);
  33. int vips_heifload_go(void *buf, size_t len, VipsImage **out, int thumbnail);
  34. int vips_tiffload_go(void *buf, size_t len, VipsImage **out);
  35. int vips_black_go(VipsImage **out, int width, int height, int bands);
  36. int vips_fix_float_tiff(VipsImage *in, VipsImage **out);
  37. int vips_get_orientation(VipsImage *image);
  38. VipsBandFormat vips_band_format(VipsImage *in);
  39. gboolean vips_is_animated(VipsImage *in);
  40. int vips_image_get_array_int_go(VipsImage *image, const char *name, int **out, int *n);
  41. void vips_image_set_array_int_go(VipsImage *image, const char *name, const int *array, int n);
  42. int vips_addalpha_go(VipsImage *in, VipsImage **out);
  43. int vips_copy_go(VipsImage *in, VipsImage **out);
  44. int vips_cast_go(VipsImage *in, VipsImage **out, VipsBandFormat format);
  45. int vips_rad2float_go(VipsImage *in, VipsImage **out);
  46. int vips_resize_go(VipsImage *in, VipsImage **out, double wscale, double hscale);
  47. int vips_icc_is_srgb_iec61966(VipsImage *in);
  48. int vips_has_embedded_icc(VipsImage *in);
  49. int vips_icc_backup(VipsImage *in, VipsImage **out);
  50. int vips_icc_restore(VipsImage *in, VipsImage **out);
  51. int vips_icc_import_go(VipsImage *in, VipsImage **out);
  52. int vips_icc_export_go(VipsImage *in, VipsImage **out);
  53. int vips_icc_export_srgb(VipsImage *in, VipsImage **out);
  54. int vips_icc_transform_go(VipsImage *in, VipsImage **out);
  55. int vips_icc_remove(VipsImage *in, VipsImage **out);
  56. int vips_colourspace_go(VipsImage *in, VipsImage **out, VipsInterpretation cs);
  57. int vips_rot_go(VipsImage *in, VipsImage **out, VipsAngle angle);
  58. int vips_flip_horizontal_go(VipsImage *in, VipsImage **out);
  59. int vips_extract_area_go(VipsImage *in, VipsImage **out, int left, int top, int width, int height);
  60. int vips_smartcrop_go(VipsImage *in, VipsImage **out, int width, int height);
  61. int vips_trim(VipsImage *in, VipsImage **out, double threshold, gboolean smart, RGB bg, gboolean equal_hor, gboolean equal_ver);
  62. int vips_apply_filters(VipsImage *in, VipsImage **out, double blur_sigma, double sharp_sigma,
  63. int pixelate_pixels);
  64. int vips_flatten_go(VipsImage *in, VipsImage **out, RGB bg);
  65. int vips_replicate_go(VipsImage *in, VipsImage **out, int across, int down, int centered);
  66. int vips_embed_go(VipsImage *in, VipsImage **out, int x, int y, int width, int height);
  67. int vips_apply_watermark(VipsImage *in, VipsImage *watermark, VipsImage **out, int left, int top,
  68. double opacity);
  69. int vips_linecache_seq(VipsImage *in, VipsImage **out, int tile_height);
  70. int vips_arrayjoin_go(VipsImage **in, VipsImage **out, int n);
  71. int vips_strip(VipsImage *in, VipsImage **out, int keep_exif_copyright);
  72. int vips_strip_all(VipsImage *in, VipsImage **out);
  73. int vips_jpegsave_go(VipsImage *in, void **buf, size_t *len, int quality, int interlace);
  74. int vips_jxlsave_go(VipsImage *in, void **buf, size_t *len, int quality, int effort);
  75. int vips_pngsave_go(VipsImage *in, void **buf, size_t *len, int interlace, int quantize,
  76. int colors);
  77. int vips_webpsave_go(VipsImage *in, void **buf, size_t *len, int quality);
  78. int vips_gifsave_go(VipsImage *in, void **buf, size_t *len);
  79. int vips_heifsave_go(VipsImage *in, void **buf, size_t *len, int quality);
  80. int vips_avifsave_go(VipsImage *in, void **buf, size_t *len, int quality, int speed);
  81. int vips_tiffsave_go(VipsImage *in, void **buf, size_t *len, int quality);
  82. void vips_cleanup();
  83. // vips async source read function
  84. int vips_jpegloadsource_go(VipsAsyncSource *source, int shrink, VipsImage **out);
  85. // creates new vips async source from a reader handle
  86. VipsAsyncSource *vips_new_async_source(uintptr_t readerHandle);
  87. // attaches "close" signal to the vips image: closes reader and unrefs vips source
  88. void vips_attach_image_close_signals(VipsImage **in, uintptr_t handle, VipsAsyncSource *source);
  89. // closes source and corresponding reader
  90. void close_source(VipsImage **in, VipsAsyncSource *source);