diff --git a/.clang-format b/.clang-format new file mode 100644 index 00000000..9f3e95ce --- /dev/null +++ b/.clang-format @@ -0,0 +1,2 @@ +--- +BasedOnStyle: Google diff --git a/resources/bmp.Decode_BMP-macos-10.golden.png b/resources/bmp.Decode_BMP-macos-10.golden.png new file mode 100644 index 00000000..6d398bc2 Binary files /dev/null and b/resources/bmp.Decode_BMP-macos-10.golden.png differ diff --git a/resources/heic-24bit-exif.RemoveMetadata-macos-10.golden.heic b/resources/heic-24bit-exif.RemoveMetadata-macos-10.golden.heic new file mode 100644 index 00000000..b2ad0bb0 Binary files /dev/null and b/resources/heic-24bit-exif.RemoveMetadata-macos-10.golden.heic differ diff --git a/resources/heic-orientation-6.AutoRotate_6__heic_to_jpg-macos-10.golden.jpeg b/resources/heic-orientation-6.AutoRotate_6__heic_to_jpg-macos-10.golden.jpeg new file mode 100644 index 00000000..4fd5d882 Binary files /dev/null and b/resources/heic-orientation-6.AutoRotate_6__heic_to_jpg-macos-10.golden.jpeg differ diff --git a/resources/jpg-24bit-icc-adobe-rgb.OptimizeICCProfile_RGB_Embedded-macos-10.golden.jpeg b/resources/jpg-24bit-icc-adobe-rgb.OptimizeICCProfile_RGB_Embedded-macos-10.golden.jpeg new file mode 100644 index 00000000..bb2a2b90 Binary files /dev/null and b/resources/jpg-24bit-icc-adobe-rgb.OptimizeICCProfile_RGB_Embedded-macos-10.golden.jpeg differ diff --git a/resources/jpg-24bit-icc-iec.AutoRotate_1-macos-10.golden.jpeg b/resources/jpg-24bit-icc-iec.AutoRotate_1-macos-10.golden.jpeg new file mode 100644 index 00000000..21ad5c5e Binary files /dev/null and b/resources/jpg-24bit-icc-iec.AutoRotate_1-macos-10.golden.jpeg differ diff --git a/resources/jpg-24bit-icc-iec.ExtractArea-macos-10.golden.jpeg b/resources/jpg-24bit-icc-iec.ExtractArea-macos-10.golden.jpeg new file mode 100644 index 00000000..b66f745f Binary files /dev/null and b/resources/jpg-24bit-icc-iec.ExtractArea-macos-10.golden.jpeg differ diff --git a/resources/jpg-24bit-icc-iec.Modulate-macos-10.golden.jpeg b/resources/jpg-24bit-icc-iec.Modulate-macos-10.golden.jpeg new file mode 100644 index 00000000..468ae3d5 Binary files /dev/null and b/resources/jpg-24bit-icc-iec.Modulate-macos-10.golden.jpeg differ diff --git a/resources/jpg-24bit-icc-iec.ModulateHSV-macos-10.golden.jpeg b/resources/jpg-24bit-icc-iec.ModulateHSV-macos-10.golden.jpeg new file mode 100644 index 00000000..a694cae0 Binary files /dev/null and b/resources/jpg-24bit-icc-iec.ModulateHSV-macos-10.golden.jpeg differ diff --git a/resources/jpg-24bit-icc-iec.OptimizeCoding-macos-10.golden.jpeg b/resources/jpg-24bit-icc-iec.OptimizeCoding-macos-10.golden.jpeg new file mode 100644 index 00000000..7da824a0 Binary files /dev/null and b/resources/jpg-24bit-icc-iec.OptimizeCoding-macos-10.golden.jpeg differ diff --git a/resources/jpg-24bit-icc-iec.OptimizeScans-macos-10.golden.jpeg b/resources/jpg-24bit-icc-iec.OptimizeScans-macos-10.golden.jpeg new file mode 100644 index 00000000..73fd9585 Binary files /dev/null and b/resources/jpg-24bit-icc-iec.OptimizeScans-macos-10.golden.jpeg differ diff --git a/resources/jpg-24bit-icc-iec.OvershootDeringing-macos-10.golden.jpeg b/resources/jpg-24bit-icc-iec.OvershootDeringing-macos-10.golden.jpeg new file mode 100644 index 00000000..4b06a800 Binary files /dev/null and b/resources/jpg-24bit-icc-iec.OvershootDeringing-macos-10.golden.jpeg differ diff --git a/resources/jpg-24bit-icc-iec.QuantTable-macos-10.golden.jpeg b/resources/jpg-24bit-icc-iec.QuantTable-macos-10.golden.jpeg new file mode 100644 index 00000000..a058a61a Binary files /dev/null and b/resources/jpg-24bit-icc-iec.QuantTable-macos-10.golden.jpeg differ diff --git a/resources/jpg-24bit-icc-iec.Rotate-macos-10.golden.jpeg b/resources/jpg-24bit-icc-iec.Rotate-macos-10.golden.jpeg new file mode 100644 index 00000000..58894db5 Binary files /dev/null and b/resources/jpg-24bit-icc-iec.Rotate-macos-10.golden.jpeg differ diff --git a/resources/jpg-24bit-icc-iec.SubsampleMode-macos-10.golden.jpeg b/resources/jpg-24bit-icc-iec.SubsampleMode-macos-10.golden.jpeg new file mode 100644 index 00000000..4b06a800 Binary files /dev/null and b/resources/jpg-24bit-icc-iec.SubsampleMode-macos-10.golden.jpeg differ diff --git a/resources/jpg-24bit-icc-iec.TrellisQuant-macos-10.golden.jpeg b/resources/jpg-24bit-icc-iec.TrellisQuant-macos-10.golden.jpeg new file mode 100644 index 00000000..f53bded4 Binary files /dev/null and b/resources/jpg-24bit-icc-iec.TrellisQuant-macos-10.golden.jpeg differ diff --git a/resources/jpg-24bit-icc-smpte.RemoveICCProfile-macos-10.golden.jpeg b/resources/jpg-24bit-icc-smpte.RemoveICCProfile-macos-10.golden.jpeg new file mode 100644 index 00000000..ec6a4db6 Binary files /dev/null and b/resources/jpg-24bit-icc-smpte.RemoveICCProfile-macos-10.golden.jpeg differ diff --git a/resources/jpg-24bit.Add-macos-10.golden.jpeg b/resources/jpg-24bit.Add-macos-10.golden.jpeg new file mode 100644 index 00000000..b771e42c Binary files /dev/null and b/resources/jpg-24bit.Add-macos-10.golden.jpeg differ diff --git a/resources/jpg-24bit.BandJoinConst-macos-10.golden.jpeg b/resources/jpg-24bit.BandJoinConst-macos-10.golden.jpeg new file mode 100644 index 00000000..71f54200 Binary files /dev/null and b/resources/jpg-24bit.BandJoinConst-macos-10.golden.jpeg differ diff --git a/resources/jpg-24bit.Black-macos-10.golden.jpeg b/resources/jpg-24bit.Black-macos-10.golden.jpeg new file mode 100644 index 00000000..f0b68680 Binary files /dev/null and b/resources/jpg-24bit.Black-macos-10.golden.jpeg differ diff --git a/resources/jpg-24bit.Decode_JPG-macos-10.golden.jpeg b/resources/jpg-24bit.Decode_JPG-macos-10.golden.jpeg new file mode 100644 index 00000000..71f54200 Binary files /dev/null and b/resources/jpg-24bit.Decode_JPG-macos-10.golden.jpeg differ diff --git a/resources/jpg-24bit.DrawRect-macos-10.golden.jpeg b/resources/jpg-24bit.DrawRect-macos-10.golden.jpeg new file mode 100644 index 00000000..9c9dd48b Binary files /dev/null and b/resources/jpg-24bit.DrawRect-macos-10.golden.jpeg differ diff --git a/resources/jpg-24bit.DrawRectRGBA-macos-10.golden.jpeg b/resources/jpg-24bit.DrawRectRGBA-macos-10.golden.jpeg new file mode 100644 index 00000000..f6f729a4 Binary files /dev/null and b/resources/jpg-24bit.DrawRectRGBA-macos-10.golden.jpeg differ diff --git a/resources/jpg-24bit.Embed-macos-10.golden.jpeg b/resources/jpg-24bit.Embed-macos-10.golden.jpeg new file mode 100644 index 00000000..0013c8e3 Binary files /dev/null and b/resources/jpg-24bit.Embed-macos-10.golden.jpeg differ diff --git a/resources/jpg-24bit.Flip-macos-10.golden.jpeg b/resources/jpg-24bit.Flip-macos-10.golden.jpeg new file mode 100644 index 00000000..666b7ce6 Binary files /dev/null and b/resources/jpg-24bit.Flip-macos-10.golden.jpeg differ diff --git a/resources/jpg-24bit.GaussianBlur-macos-10.golden.jpeg b/resources/jpg-24bit.GaussianBlur-macos-10.golden.jpeg new file mode 100644 index 00000000..3d7a89f1 Binary files /dev/null and b/resources/jpg-24bit.GaussianBlur-macos-10.golden.jpeg differ diff --git a/resources/jpg-24bit.Invert-macos-10.golden.jpeg b/resources/jpg-24bit.Invert-macos-10.golden.jpeg new file mode 100644 index 00000000..f4ded58d Binary files /dev/null and b/resources/jpg-24bit.Invert-macos-10.golden.jpeg differ diff --git a/resources/jpg-24bit.Multiply-macos-10.golden.jpeg b/resources/jpg-24bit.Multiply-macos-10.golden.jpeg new file mode 100644 index 00000000..a309e34c Binary files /dev/null and b/resources/jpg-24bit.Multiply-macos-10.golden.jpeg differ diff --git a/resources/jpg-24bit.OptimizeICCProfile_RGB_No_Profile-macos-10.golden.jpeg b/resources/jpg-24bit.OptimizeICCProfile_RGB_No_Profile-macos-10.golden.jpeg new file mode 100644 index 00000000..71f54200 Binary files /dev/null and b/resources/jpg-24bit.OptimizeICCProfile_RGB_No_Profile-macos-10.golden.jpeg differ diff --git a/resources/jpg-24bit.ResizeWithVScale-macos-10.golden.jpeg b/resources/jpg-24bit.ResizeWithVScale-macos-10.golden.jpeg new file mode 100644 index 00000000..e9440545 Binary files /dev/null and b/resources/jpg-24bit.ResizeWithVScale-macos-10.golden.jpeg differ diff --git a/resources/jpg-24bit.Resize_Downscale-macos-10.golden.jpeg b/resources/jpg-24bit.Resize_Downscale-macos-10.golden.jpeg new file mode 100644 index 00000000..f352402e Binary files /dev/null and b/resources/jpg-24bit.Resize_Downscale-macos-10.golden.jpeg differ diff --git a/resources/jpg-24bit.Resize_Upscale-macos-10.golden.jpeg b/resources/jpg-24bit.Resize_Upscale-macos-10.golden.jpeg new file mode 100644 index 00000000..1d69d539 Binary files /dev/null and b/resources/jpg-24bit.Resize_Upscale-macos-10.golden.jpeg differ diff --git a/resources/jpg-24bit.SimilarityRGB-macos-10.golden.jpeg b/resources/jpg-24bit.SimilarityRGB-macos-10.golden.jpeg new file mode 100644 index 00000000..95889ed9 Binary files /dev/null and b/resources/jpg-24bit.SimilarityRGB-macos-10.golden.jpeg differ diff --git a/resources/jpg-24bit.SimilarityRGBA-macos-10.golden.jpeg b/resources/jpg-24bit.SimilarityRGBA-macos-10.golden.jpeg new file mode 100644 index 00000000..8b6487c3 Binary files /dev/null and b/resources/jpg-24bit.SimilarityRGBA-macos-10.golden.jpeg differ diff --git a/resources/jpg-24bit.SmartCrop-macos-10.golden.jpeg b/resources/jpg-24bit.SmartCrop-macos-10.golden.jpeg new file mode 100644 index 00000000..a897ea06 Binary files /dev/null and b/resources/jpg-24bit.SmartCrop-macos-10.golden.jpeg differ diff --git a/resources/jpg-24bit.TestImageRef_Divide-macos-10.golden.jpeg b/resources/jpg-24bit.TestImageRef_Divide-macos-10.golden.jpeg new file mode 100644 index 00000000..1b1af212 Binary files /dev/null and b/resources/jpg-24bit.TestImageRef_Divide-macos-10.golden.jpeg differ diff --git a/resources/jpg-24bit.Zoom-macos-10.golden.jpeg b/resources/jpg-24bit.Zoom-macos-10.golden.jpeg new file mode 100644 index 00000000..161b0e7f Binary files /dev/null and b/resources/jpg-24bit.Zoom-macos-10.golden.jpeg differ diff --git a/resources/jpg-32bit-cmyk-icc-swop.OptimizeICCProfile_CMYK-macos-10.golden.jpeg b/resources/jpg-32bit-cmyk-icc-swop.OptimizeICCProfile_CMYK-macos-10.golden.jpeg new file mode 100644 index 00000000..aa5b50df Binary files /dev/null and b/resources/jpg-32bit-cmyk-icc-swop.OptimizeICCProfile_CMYK-macos-10.golden.jpeg differ diff --git a/resources/jpg-8bit-gray-scale-with-icc-profile.OptimizeICCProfile_Grey-macos-10.golden.jpeg b/resources/jpg-8bit-gray-scale-with-icc-profile.OptimizeICCProfile_Grey-macos-10.golden.jpeg new file mode 100644 index 00000000..463d8bb5 Binary files /dev/null and b/resources/jpg-8bit-gray-scale-with-icc-profile.OptimizeICCProfile_Grey-macos-10.golden.jpeg differ diff --git a/resources/jpg-8bit-grey-icc-dot-gain.TestImageRef_RemoveMetadata_Leave_Profile-macos-10.golden.jpeg b/resources/jpg-8bit-grey-icc-dot-gain.TestImageRef_RemoveMetadata_Leave_Profile-macos-10.golden.jpeg new file mode 100644 index 00000000..f62f2f76 Binary files /dev/null and b/resources/jpg-8bit-grey-icc-dot-gain.TestImageRef_RemoveMetadata_Leave_Profile-macos-10.golden.jpeg differ diff --git a/resources/jpg-8bit-grey-icc-dot-gain.Thumbnail_CropCentered-macos-10.golden.jpeg b/resources/jpg-8bit-grey-icc-dot-gain.Thumbnail_CropCentered-macos-10.golden.jpeg new file mode 100644 index 00000000..c5b55a34 Binary files /dev/null and b/resources/jpg-8bit-grey-icc-dot-gain.Thumbnail_CropCentered-macos-10.golden.jpeg differ diff --git a/resources/jpg-8bit-grey-icc-dot-gain.Thumbnail_NoCrop-macos-10.golden.jpeg b/resources/jpg-8bit-grey-icc-dot-gain.Thumbnail_NoCrop-macos-10.golden.jpeg new file mode 100644 index 00000000..89073073 Binary files /dev/null and b/resources/jpg-8bit-grey-icc-dot-gain.Thumbnail_NoCrop-macos-10.golden.jpeg differ diff --git a/resources/jpg-orientation-5.AutoRotate_5-macos-10.golden.jpeg b/resources/jpg-orientation-5.AutoRotate_5-macos-10.golden.jpeg new file mode 100644 index 00000000..db830a44 Binary files /dev/null and b/resources/jpg-orientation-5.AutoRotate_5-macos-10.golden.jpeg differ diff --git a/resources/jpg-orientation-5.TestImageRef_RemoveMetadata_Leave_Orientation-macos-10.golden.jpeg b/resources/jpg-orientation-5.TestImageRef_RemoveMetadata_Leave_Orientation-macos-10.golden.jpeg new file mode 100644 index 00000000..05a8806a Binary files /dev/null and b/resources/jpg-orientation-5.TestImageRef_RemoveMetadata_Leave_Orientation-macos-10.golden.jpeg differ diff --git a/resources/jpg-orientation-6.AutoRotate_6-macos-10.golden.jpeg b/resources/jpg-orientation-6.AutoRotate_6-macos-10.golden.jpeg new file mode 100644 index 00000000..0c2315b1 Binary files /dev/null and b/resources/jpg-orientation-6.AutoRotate_6-macos-10.golden.jpeg differ diff --git a/resources/jpg-orientation-6.AutoRotate_6__jpeg_to_webp-macos-10.golden.webp b/resources/jpg-orientation-6.AutoRotate_6__jpeg_to_webp-macos-10.golden.webp new file mode 100644 index 00000000..e3ea8f7d Binary files /dev/null and b/resources/jpg-orientation-6.AutoRotate_6__jpeg_to_webp-macos-10.golden.webp differ diff --git a/resources/orientation-issue-1.TestImageRef_Orientation_Issue-macos-10.golden.webp b/resources/orientation-issue-1.TestImageRef_Orientation_Issue-macos-10.golden.webp new file mode 100644 index 00000000..918212c1 Binary files /dev/null and b/resources/orientation-issue-1.TestImageRef_Orientation_Issue-macos-10.golden.webp differ diff --git a/resources/png-24bit+alpha.ModulateHSV_Alpha-macos-10.golden.png b/resources/png-24bit+alpha.ModulateHSV_Alpha-macos-10.golden.png new file mode 100644 index 00000000..4edec25b Binary files /dev/null and b/resources/png-24bit+alpha.ModulateHSV_Alpha-macos-10.golden.png differ diff --git a/resources/png-24bit+alpha.Modulate_Alpha-macos-10.golden.png b/resources/png-24bit+alpha.Modulate_Alpha-macos-10.golden.png new file mode 100644 index 00000000..abb8ded8 Binary files /dev/null and b/resources/png-24bit+alpha.Modulate_Alpha-macos-10.golden.png differ diff --git a/resources/png-24bit+alpha.Sharpen_24bit_Alpha-macos-10.golden.png b/resources/png-24bit+alpha.Sharpen_24bit_Alpha-macos-10.golden.png new file mode 100644 index 00000000..46ee5c3b Binary files /dev/null and b/resources/png-24bit+alpha.Sharpen_24bit_Alpha-macos-10.golden.png differ diff --git a/resources/png-24bit+alpha.TestImageRef_Linear_Alpha-macos-10.golden.png b/resources/png-24bit+alpha.TestImageRef_Linear_Alpha-macos-10.golden.png new file mode 100644 index 00000000..158c6ce0 Binary files /dev/null and b/resources/png-24bit+alpha.TestImageRef_Linear_Alpha-macos-10.golden.png differ diff --git a/resources/png-24bit.AutoRotate_0-macos-10.golden.png b/resources/png-24bit.AutoRotate_0-macos-10.golden.png new file mode 100644 index 00000000..040e136d Binary files /dev/null and b/resources/png-24bit.AutoRotate_0-macos-10.golden.png differ diff --git a/resources/png-24bit.TestImageRef_Linear1-macos-10.golden.png b/resources/png-24bit.TestImageRef_Linear1-macos-10.golden.png new file mode 100644 index 00000000..91f81af0 Binary files /dev/null and b/resources/png-24bit.TestImageRef_Linear1-macos-10.golden.png differ diff --git a/resources/png-8bit+alpha.Resize_Downscale_Alpha-macos-10.golden.png b/resources/png-8bit+alpha.Resize_Downscale_Alpha-macos-10.golden.png new file mode 100644 index 00000000..23079b13 Binary files /dev/null and b/resources/png-8bit+alpha.Resize_Downscale_Alpha-macos-10.golden.png differ diff --git a/resources/png-8bit+alpha.Resize_Upscale_Alpha-macos-10.golden.png b/resources/png-8bit+alpha.Resize_Upscale_Alpha-macos-10.golden.png new file mode 100644 index 00000000..2d193e6c Binary files /dev/null and b/resources/png-8bit+alpha.Resize_Upscale_Alpha-macos-10.golden.png differ diff --git a/resources/png-8bit+alpha.Sharpen_8bit_Alpha-macos-10.golden.png b/resources/png-8bit+alpha.Sharpen_8bit_Alpha-macos-10.golden.png new file mode 100644 index 00000000..d9b9e8f9 Binary files /dev/null and b/resources/png-8bit+alpha.Sharpen_8bit_Alpha-macos-10.golden.png differ diff --git a/resources/png-8bit.Decode_PNG-macos-10.golden.png b/resources/png-8bit.Decode_PNG-macos-10.golden.png new file mode 100644 index 00000000..ac3501f3 Binary files /dev/null and b/resources/png-8bit.Decode_PNG-macos-10.golden.png differ diff --git a/resources/tif.Tiff-macos-10.golden.tiff b/resources/tif.Tiff-macos-10.golden.tiff new file mode 100644 index 00000000..a849945e Binary files /dev/null and b/resources/tif.Tiff-macos-10.golden.tiff differ diff --git a/resources/with_alpha.ExtractBand-macos-10.golden.png b/resources/with_alpha.ExtractBand-macos-10.golden.png new file mode 100644 index 00000000..ac44673b Binary files /dev/null and b/resources/with_alpha.ExtractBand-macos-10.golden.png differ diff --git a/resources/with_alpha.Flatten-macos-10.golden.png b/resources/with_alpha.Flatten-macos-10.golden.png new file mode 100644 index 00000000..63aa395d Binary files /dev/null and b/resources/with_alpha.Flatten-macos-10.golden.png differ diff --git a/vips/foreign.c b/vips/foreign.c index 1439caaa..7eb6ee2c 100644 --- a/vips/foreign.c +++ b/vips/foreign.c @@ -20,10 +20,6 @@ void set_double_param(Param *p, gdouble d) { p->is_set = TRUE; } -gboolean get_bool_param(Param *p) { return p->value.b; } -gboolean get_int_param(Param *p) { return p->value.i; } -gboolean get_double_param(Param *p) { return p->value.d; } - int load_image_buffer(LoadParams *params, void *buf, size_t len, VipsImage **out) { int code = 1; @@ -200,8 +196,7 @@ int save_buffer(const char *operationName, SaveParams *params, return 1; } - if (vips_cache_operation_buildp(&operation)) - { + if (vips_cache_operation_buildp(&operation)) { vips_object_unref_outputs(VIPS_OBJECT(operation)); g_object_unref(operation); return 1; @@ -222,16 +217,13 @@ int save_buffer(const char *operationName, SaveParams *params, // https://libvips.github.io/libvips/API/current/VipsForeignSave.html#vips-jpegsave-buffer int set_jpegsave_options(VipsOperation *operation, SaveParams *params) { - int ret = vips_object_set(VIPS_OBJECT(operation), - "strip", params->stripMetadata, - "optimize_coding", params->jpegOptimizeCoding, - "interlace", params->interlace, - "subsample_mode", params->jpegSubsample, - "trellis_quant", params->jpegTrellisQuant, - "overshoot_deringing", params->jpegOvershootDeringing, - "optimize_scans", params->jpegOptimizeScans, - "quant_table", params->jpegQuantTable, - NULL); + int ret = vips_object_set( + VIPS_OBJECT(operation), "strip", params->stripMetadata, "optimize_coding", + params->jpegOptimizeCoding, "interlace", params->interlace, + "subsample_mode", params->jpegSubsample, "trellis_quant", + params->jpegTrellisQuant, "overshoot_deringing", + params->jpegOvershootDeringing, "optimize_scans", + params->jpegOptimizeScans, "quant_table", params->jpegQuantTable, NULL); if (!ret && params->quality) { ret = vips_object_set(VIPS_OBJECT(operation), "Q", params->quality, NULL); @@ -242,12 +234,13 @@ int set_jpegsave_options(VipsOperation *operation, SaveParams *params) { // https://libvips.github.io/libvips/API/current/VipsForeignSave.html#vips-pngsave-buffer int set_pngsave_options(VipsOperation *operation, SaveParams *params) { - vips_object_set(VIPS_OBJECT(operation), "strip", params->stripMetadata, - "compression", params->pngCompression, "interlace", - params->interlace, "filter", params->pngFilter, NULL); + int ret = + vips_object_set(VIPS_OBJECT(operation), "strip", params->stripMetadata, + "compression", params->pngCompression, "interlace", + params->interlace, "filter", params->pngFilter, NULL); - if (params->quality) { - vips_object_set(VIPS_OBJECT(operation), "Q", params->quality, NULL); + if (!ret && params->quality) { + ret = vips_object_set(VIPS_OBJECT(operation), "Q", params->quality, NULL); } return ret; @@ -256,9 +249,10 @@ int set_pngsave_options(VipsOperation *operation, SaveParams *params) { // https://github.com/libvips/libvips/blob/master/libvips/foreign/webpsave.c#L524 // https://libvips.github.io/libvips/API/current/VipsForeignSave.html#vips-webpsave-buffer int set_webpsave_options(VipsOperation *operation, SaveParams *params) { - int ret = vips_object_set(VIPS_OBJECT(operation), "strip", params->stripMetadata, - "lossless", params->webpLossless, "reduction_effort", - params->webpReductionEffort, NULL); + int ret = + vips_object_set(VIPS_OBJECT(operation), "strip", params->stripMetadata, + "lossless", params->webpLossless, "reduction_effort", + params->webpReductionEffort, NULL); if (!ret && params->quality) { vips_object_set(VIPS_OBJECT(operation), "Q", params->quality, NULL); @@ -269,27 +263,26 @@ int set_webpsave_options(VipsOperation *operation, SaveParams *params) { // https://github.com/libvips/libvips/blob/master/libvips/foreign/heifsave.c#L653 int set_heifsave_options(VipsOperation *operation, SaveParams *params) { - vips_object_set(VIPS_OBJECT(operation), "lossless", params->heifLossless, - NULL); + int ret = vips_object_set(VIPS_OBJECT(operation), "lossless", + params->heifLossless, NULL); - if (params->quality) { - vips_object_set(VIPS_OBJECT(operation), "Q", params->quality, NULL); + if (!ret && params->quality) { + ret = vips_object_set(VIPS_OBJECT(operation), "Q", params->quality, NULL); } - return 0; + return ret; } // https://libvips.github.io/libvips/API/current/VipsForeignSave.html#vips-tiffsave-buffer int set_tiffsave_options(VipsOperation *operation, SaveParams *params) { - int ret = vips_object_set(VIPS_OBJECT(operation), "strip", params->stripMetadata, - "compression", params->tiffCompression, "predictor", - params->tiffPredictor, "pyramid", params->tiffPyramid, - "tile_height", params->tiffTileHeight, "tile_width", - params->tiffTileWidth, "tile", params->tiffTile, "xres", - params->tiffXRes, "yres", params->tiffYRes, NULL); - - if (!ret && params->quality) - { + int ret = vips_object_set( + VIPS_OBJECT(operation), "strip", params->stripMetadata, "compression", + params->tiffCompression, "predictor", params->tiffPredictor, "pyramid", + params->tiffPyramid, "tile_height", params->tiffTileHeight, "tile_width", + params->tiffTileWidth, "tile", params->tiffTile, "xres", params->tiffXRes, + "yres", params->tiffYRes, NULL); + + if (!ret && params->quality) { ret = vips_object_set(VIPS_OBJECT(operation), "Q", params->quality, NULL); } @@ -297,21 +290,21 @@ int set_tiffsave_options(VipsOperation *operation, SaveParams *params) { } // https://libvips.github.io/libvips/API/current/VipsForeignSave.html#vips-magicksave-buffer -int set_magick_options(VipsOperation *operation, SaveParams *params) { +int set_magicksave_options(VipsOperation *operation, SaveParams *params) { int ret = vips_object_set(VIPS_OBJECT(operation), "format", "GIF", NULL); - if (!ret && params->quality) - { - ret = vips_object_set(VIPS_OBJECT(operation), "quality", params->quality, NULL); + if (!ret && params->quality) { + ret = vips_object_set(VIPS_OBJECT(operation), "quality", params->quality, + NULL); } return ret; } -int set_avif_options(VipsOperation *operation, SaveParams *params) { - int ret = vips_object_set(VIPS_OBJECT(operation), "compression", VIPS_FOREIGN_HEIF_COMPRESSION_AV1, - "lossless", params->heifLossless, "speed", params->avifSpeed, NULL); +int set_avifsave_options(VipsOperation *operation, SaveParams *params) { + int ret = vips_object_set( + VIPS_OBJECT(operation), "compression", VIPS_FOREIGN_HEIF_COMPRESSION_AV1, + "lossless", params->heifLossless, "speed", params->avifSpeed, NULL); - if (!ret && params->quality) - { + if (!ret && params->quality) { ret = vips_object_set(VIPS_OBJECT(operation), "Q", params->quality, NULL); } @@ -347,6 +340,9 @@ int load_from_buffer(LoadParams *params, void *buf, size_t len) { case MAGICK: return load_buffer("magickload_buffer", buf, len, params, set_magickload_options); + case AVIF: + return load_buffer("heifload_buffer", buf, len, params, + set_heifload_options); default: g_warning("Unsupported input type given: %d", params->inputFormat); } @@ -394,30 +390,6 @@ static LoadParams defaultLoadParams = { svgUnlimited : DEFAULT_PARAM, }; -int save_to_buffer(SaveParams *params) -{ - switch (params->outputFormat) - { - case JPEG: - return save_buffer("jpegsave_buffer", params, set_jpeg_options); - case PNG: - return save_buffer("pngsave_buffer", params, set_png_options); - case WEBP: - return save_buffer("webpsave_buffer", params, set_webp_options); - case HEIF: - return save_buffer("heifsave_buffer", params, set_heif_options); - case TIFF: - return save_buffer("tiffsave_buffer", params, set_tiff_options); - case GIF: - return save_buffer("magicksave_buffer", params, set_magick_options); - case AVIF: - return save_buffer("heifsave_buffer", params, set_avif_options); - default: - g_warning("Unsupported output type given: %d", params->outputFormat); - return -1; - } -} - LoadParams create_load_params(ImageType inputFormat) { Param defaultParam = {}; LoadParams p = { @@ -472,11 +444,9 @@ static SaveParams defaultSaveParams = { .tiffXRes = 1.0, .tiffYRes = 1.0, - .avifSpeed = 5 -}; + .avifSpeed = 5}; -SaveParams create_save_params(ImageType outputFormat) -{ +SaveParams create_save_params(ImageType outputFormat) { SaveParams params = defaultSaveParams; params.outputFormat = outputFormat; return params;