From b8a158b69b80aa702685504a93bdae386b807d8b Mon Sep 17 00:00:00 2001 From: John Cupitt Date: Thu, 3 Jan 2019 13:34:13 +0000 Subject: [PATCH] seems to work added some more consts as well --- ChangeLog | 3 +- cplusplus/include/vips/VImage8.h | 2 +- libvips/colour/CMYK2XYZ.c | 2 +- libvips/colour/Makefile.am | 2 +- libvips/colour/icc_transform.c | 6 +- libvips/colour/profiles.c | 132 ++++++++++++++++++++++++++++++- libvips/foreign/exif.c | 24 +++--- libvips/foreign/foreign.c | 8 +- libvips/foreign/vips2jpeg.c | 12 ++- libvips/foreign/vips2tiff.c | 41 +++++----- libvips/foreign/vips2webp.c | 4 +- libvips/foreign/vipspng.c | 20 ++--- libvips/include/vips/colour.h | 2 +- libvips/include/vips/header.h | 7 +- libvips/include/vips/type.h | 8 +- libvips/iofuncs/header.c | 8 +- libvips/iofuncs/type.c | 50 ++++++------ 17 files changed, 227 insertions(+), 104 deletions(-) diff --git a/ChangeLog b/ChangeLog index 18a96392..1a3de8a6 100644 --- a/ChangeLog +++ b/ChangeLog @@ -13,7 +13,8 @@ - add vips_rect_overlapsrect() - composite is much faster at positioning subimages - dzsave has a new skip_blanks option -- add CMYK as a supported colourspace +- add vips_CMYK2XYZ() and vips_XYZ2CMYK(), plus associated routes +- include cmyk and srgb fallback profiles 21/11/18 started 8.7.3 - fix infinite loop for autofit with non-scaleable font diff --git a/cplusplus/include/vips/VImage8.h b/cplusplus/include/vips/VImage8.h index d7b745fe..05ae1a2e 100644 --- a/cplusplus/include/vips/VImage8.h +++ b/cplusplus/include/vips/VImage8.h @@ -407,7 +407,7 @@ public: const void * get_blob( const char *field, size_t *length ) const { - void *value; + const void *value; if( vips_image_get_blob( this->get_image(), field, &value, length ) ) diff --git a/libvips/colour/CMYK2XYZ.c b/libvips/colour/CMYK2XYZ.c index 3775b371..42f184ea 100644 --- a/libvips/colour/CMYK2XYZ.c +++ b/libvips/colour/CMYK2XYZ.c @@ -87,7 +87,7 @@ vips__fallback_profile_get_init( void ) fallback->name = vips__coded_profiles[i].name; fallback->data = data; fallback->data_length = data_length; - vips_fallback_profile_list = g_slist_append( + vips_fallback_profile_list = g_slist_prepend( vips_fallback_profile_list, fallback ); } diff --git a/libvips/colour/Makefile.am b/libvips/colour/Makefile.am index 4aeb5499..b606e932 100644 --- a/libvips/colour/Makefile.am +++ b/libvips/colour/Makefile.am @@ -44,7 +44,7 @@ libcolour_la_SOURCES = \ scRGB2sRGB.c profiles.c: - ./wrap_profiles.sh profiles profiles.c + ./wrap-profiles.sh profiles profiles.c EXTRA_DIST = \ profiles \ diff --git a/libvips/colour/icc_transform.c b/libvips/colour/icc_transform.c index 5bb91c26..7263c091 100644 --- a/libvips/colour/icc_transform.c +++ b/libvips/colour/icc_transform.c @@ -620,7 +620,7 @@ vips_icc_get_profile_file( const char *filename ) static VipsBlob * vips_icc_get_profile_image( VipsImage *image ) { - void *data; + const void *data; size_t size; if( !vips_image_get_typeof( image, VIPS_META_ICC_NAME ) ) @@ -728,7 +728,7 @@ vips_icc_import_build( VipsObject *object ) */ if( import->used_fallback && icc->in_blob ) { - void *data; + const void *data; size_t size; data = vips_blob_get( icc->in_blob, &size ); @@ -1269,7 +1269,7 @@ vips_icc_ac2rc( VipsImage *in, VipsImage **out, const char *profile_filename ) */ gboolean vips_icc_is_compatible_profile( VipsImage *image, - void *data, size_t data_length ) + const void *data, size_t data_length ) { cmsHPROFILE profile; diff --git a/libvips/colour/profiles.c b/libvips/colour/profiles.c index e064fa74..82f35cac 100644 --- a/libvips/colour/profiles.c +++ b/libvips/colour/profiles.c @@ -2,8 +2,8 @@ #include "profiles.h" -VipsCodedProfile vips__coded_profiles[] = { - { "cmyk", +VipsCodedProfile vips__coded_profiles[] = { + { "cmyk", "AA6sbGFyZ2wCIAAAcHJ0ckNNWUtMYWIgB94ACAAZAAwAKAA1YWNzcE1TRlQAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAEAAPbWAAEAAAAA0y1hcmdsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAPZGVzYwAAATgAAABpY3BydAAAAaQAAABnd3RwdAAAAgwAAAAUYmtw" @@ -16875,6 +16875,130 @@ VipsCodedProfile vips__coded_profiles[] = { "LjI5IDMuOTIgMy41NyAzLjIzIDMuMDUgMy40IDQuMjUgNC43NCAzLjc1IDIuNDggMS45NCAxLjcz" "IDEuNDYgMS40IDEuODMgMi41OCAyLjk0IDIuOTUgMi45NCAyLjk1IDIuOTggMy4zMiAzLjk5IDQu" "NDIgNC4yOCAzLjk0IDMuNDcgMy4xMyAzLjM1IDQuMjENCkVORF9EQVRBDQoNCg0KDQoNCgAA" - }, - { 0, 0 } + }, + { "sRGB", +"AAAbCmxjbXMCMAAAbW50clJHQiBYWVogB9QACAANAAwAEgAGYWNzcE1TRlQAAAAAbGNtcwAAAAAA" +"AAAAAAAAAAAAAAAAAPbWAAEAAAAA0y1sY21zAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" +"AAAAAAAAAAAAAAAAAAAAAAAMZG1uZAAAARQAAABqZGVzYwAAAYAAAABoZG1kZAAAAegAAABod3Rw" +"dAAAAlAAAAAUclhZWgAAAmQAAAAUYlhZWgAAAngAAAAUZ1hZWgAAAowAAAAUclRSQwAAAqAAAAgM" +"Z1RSQwAACqwAAAgMYlRSQwAAErgAAAgMY2hybQAAGsQAAAAkY3BydAAAGugAAAAhZGVzYwAAAAAA" +"AAAQbGNtcyBnZW5lcmF0ZWQgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" +"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZGVzYwAAAAAAAAAFc1JH" +"QgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" +"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABkZXNjAAAAAAAAAAVzUkdCAAAAAAAAAAAA" +"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" +"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAFhZWiAAAAAAAADzPQABAAAAARaYWFlaIAAAAAAAAG+UAAA4" +"7gAAA5BYWVogAAAAAAAAJJ0AAA+DAAC2vlhZWiAAAAAAAABipQAAt5AAABjeY3VydgAAAAAAAAQA" +"AAAABQAKAA8AFAAZAB4AIwAoAC0AMgA3ADsAQABFAEoATwBUAFkAXgBjAGgAbQByAHcAfACBAIYA" +"iwCQAJUAmgCfAKQAqQCuALIAtwC8AMEAxgDLANAA1QDbAOAA5QDrAPAA9gD7AQEBBwENARMBGQEf" +"ASUBKwEyATgBPgFFAUwBUgFZAWABZwFuAXUBfAGDAYsBkgGaAaEBqQGxAbkBwQHJAdEB2QHhAekB" +"8gH6AgMCDAIUAh0CJgIvAjgCQQJLAlQCXQJnAnECegKEAo4CmAKiAqwCtgLBAssC1QLgAusC9QMA" +"AwsDFgMhAy0DOANDA08DWgNmA3IDfgOKA5YDogOuA7oDxwPTA+AD7AP5BAYEEwQgBC0EOwRIBFUE" +"YwRxBH4EjASaBKgEtgTEBNME4QTwBP4FDQUcBSsFOgVJBVgFZwV3BYYFlgWmBbUFxQXVBeUF9gYG" +"BhYGJwY3BkgGWQZqBnsGjAadBq8GwAbRBuMG9QcHBxkHKwc9B08HYQd0B4YHmQesB78H0gflB/gI" +"CwgfCDIIRghaCG4IggiWCKoIvgjSCOcI+wkQCSUJOglPCWQJeQmPCaQJugnPCeUJ+woRCicKPQpU" +"CmoKgQqYCq4KxQrcCvMLCwsiCzkLUQtpC4ALmAuwC8gL4Qv5DBIMKgxDDFwMdQyODKcMwAzZDPMN" +"DQ0mDUANWg10DY4NqQ3DDd4N+A4TDi4OSQ5kDn8Omw62DtIO7g8JDyUPQQ9eD3oPlg+zD88P7BAJ" +"ECYQQxBhEH4QmxC5ENcQ9RETETERTxFtEYwRqhHJEegSBxImEkUSZBKEEqMSwxLjEwMTIxNDE2MT" +"gxOkE8UT5RQGFCcUSRRqFIsUrRTOFPAVEhU0FVYVeBWbFb0V4BYDFiYWSRZsFo8WshbWFvoXHRdB" +"F2UXiReuF9IX9xgbGEAYZRiKGK8Y1Rj6GSAZRRlrGZEZtxndGgQaKhpRGncanhrFGuwbFBs7G2Mb" +"ihuyG9ocAhwqHFIcexyjHMwc9R0eHUcdcB2ZHcMd7B4WHkAeah6UHr4e6R8THz4faR+UH78f6iAV" +"IEEgbCCYIMQg8CEcIUghdSGhIc4h+yInIlUigiKvIt0jCiM4I2YjlCPCI/AkHyRNJHwkqyTaJQkl" +"OCVoJZclxyX3JicmVyaHJrcm6CcYJ0kneierJ9woDSg/KHEooijUKQYpOClrKZ0p0CoCKjUqaCqb" +"Ks8rAis2K2krnSvRLAUsOSxuLKIs1y0MLUEtdi2rLeEuFi5MLoIuty7uLyQvWi+RL8cv/jA1MGww" +"pDDbMRIxSjGCMbox8jIqMmMymzLUMw0zRjN/M7gz8TQrNGU0njTYNRM1TTWHNcI1/TY3NnI2rjbp" +"NyQ3YDecN9c4FDhQOIw4yDkFOUI5fzm8Ofk6Njp0OrI67zstO2s7qjvoPCc8ZTykPOM9Ij1hPaE9" +"4D4gPmA+oD7gPyE/YT+iP+JAI0BkQKZA50EpQWpBrEHuQjBCckK1QvdDOkN9Q8BEA0RHRIpEzkUS" +"RVVFmkXeRiJGZ0arRvBHNUd7R8BIBUhLSJFI10kdSWNJqUnwSjdKfUrESwxLU0uaS+JMKkxyTLpN" +"Ak1KTZNN3E4lTm5Ot08AT0lPk0/dUCdQcVC7UQZRUFGbUeZSMVJ8UsdTE1NfU6pT9lRCVI9U21Uo" +"VXVVwlYPVlxWqVb3V0RXklfgWC9YfVjLWRpZaVm4WgdaVlqmWvVbRVuVW+VcNVyGXNZdJ114Xcle" +"Gl5sXr1fD19hX7NgBWBXYKpg/GFPYaJh9WJJYpxi8GNDY5dj62RAZJRk6WU9ZZJl52Y9ZpJm6Gc9" +"Z5Nn6Wg/aJZo7GlDaZpp8WpIap9q92tPa6dr/2xXbK9tCG1gbbluEm5rbsRvHm94b9FwK3CGcOBx" +"OnGVcfByS3KmcwFzXXO4dBR0cHTMdSh1hXXhdj52m3b4d1Z3s3gReG54zHkqeYl553pGeqV7BHtj" +"e8J8IXyBfOF9QX2hfgF+Yn7CfyN/hH/lgEeAqIEKgWuBzYIwgpKC9INXg7qEHYSAhOOFR4Wrhg6G" +"cobXhzuHn4gEiGmIzokziZmJ/opkisqLMIuWi/yMY4zKjTGNmI3/jmaOzo82j56QBpBukNaRP5Go" +"khGSepLjk02TtpQglIqU9JVflcmWNJaflwqXdZfgmEyYuJkkmZCZ/JpomtWbQpuvnByciZz3nWSd" +"0p5Anq6fHZ+Ln/qgaaDYoUehtqImopajBqN2o+akVqTHpTilqaYapoum/adup+CoUqjEqTepqaoc" +"qo+rAqt1q+msXKzQrUStuK4trqGvFq+LsACwdbDqsWCx1rJLssKzOLOutCW0nLUTtYq2AbZ5tvC3" +"aLfguFm40blKucK6O7q1uy67p7whvJu9Fb2Pvgq+hL7/v3q/9cBwwOzBZ8Hjwl/C28NYw9TEUcTO" +"xUvFyMZGxsPHQce/yD3IvMk6ybnKOMq3yzbLtsw1zLXNNc21zjbOts83z7jQOdC60TzRvtI/0sHT" +"RNPG1EnUy9VO1dHWVdbY11zX4Nhk2OjZbNnx2nba+9uA3AXcit0Q3ZbeHN6i3ynfr+A24L3hROHM" +"4lPi2+Nj4+vkc+T85YTmDeaW5x/nqegy6LzpRunQ6lvq5etw6/vshu0R7ZzuKO6070DvzPBY8OXx" +"cvH/8ozzGfOn9DT0wvVQ9d72bfb794r4Gfio+Tj5x/pX+uf7d/wH/Jj9Kf26/kv+3P9t//9jdXJ2" +"AAAAAAAABAAAAAAFAAoADwAUABkAHgAjACgALQAyADcAOwBAAEUASgBPAFQAWQBeAGMAaABtAHIA" +"dwB8AIEAhgCLAJAAlQCaAJ8ApACpAK4AsgC3ALwAwQDGAMsA0ADVANsA4ADlAOsA8AD2APsBAQEH" +"AQ0BEwEZAR8BJQErATIBOAE+AUUBTAFSAVkBYAFnAW4BdQF8AYMBiwGSAZoBoQGpAbEBuQHBAckB" +"0QHZAeEB6QHyAfoCAwIMAhQCHQImAi8COAJBAksCVAJdAmcCcQJ6AoQCjgKYAqICrAK2AsECywLV" +"AuAC6wL1AwADCwMWAyEDLQM4A0MDTwNaA2YDcgN+A4oDlgOiA64DugPHA9MD4APsA/kEBgQTBCAE" +"LQQ7BEgEVQRjBHEEfgSMBJoEqAS2BMQE0wThBPAE/gUNBRwFKwU6BUkFWAVnBXcFhgWWBaYFtQXF" +"BdUF5QX2BgYGFgYnBjcGSAZZBmoGewaMBp0GrwbABtEG4wb1BwcHGQcrBz0HTwdhB3QHhgeZB6wH" +"vwfSB+UH+AgLCB8IMghGCFoIbgiCCJYIqgi+CNII5wj7CRAJJQk6CU8JZAl5CY8JpAm6Cc8J5Qn7" +"ChEKJwo9ClQKagqBCpgKrgrFCtwK8wsLCyILOQtRC2kLgAuYC7ALyAvhC/kMEgwqDEMMXAx1DI4M" +"pwzADNkM8w0NDSYNQA1aDXQNjg2pDcMN3g34DhMOLg5JDmQOfw6bDrYO0g7uDwkPJQ9BD14Peg+W" +"D7MPzw/sEAkQJhBDEGEQfhCbELkQ1xD1ERMRMRFPEW0RjBGqEckR6BIHEiYSRRJkEoQSoxLDEuMT" +"AxMjE0MTYxODE6QTxRPlFAYUJxRJFGoUixStFM4U8BUSFTQVVhV4FZsVvRXgFgMWJhZJFmwWjxay" +"FtYW+hcdF0EXZReJF64X0hf3GBsYQBhlGIoYrxjVGPoZIBlFGWsZkRm3Gd0aBBoqGlEadxqeGsUa" +"7BsUGzsbYxuKG7Ib2hwCHCocUhx7HKMczBz1HR4dRx1wHZkdwx3sHhYeQB5qHpQevh7pHxMfPh9p" +"H5Qfvx/qIBUgQSBsIJggxCDwIRwhSCF1IaEhziH7IiciVSKCIq8i3SMKIzgjZiOUI8Ij8CQfJE0k" +"fCSrJNolCSU4JWgllyXHJfcmJyZXJocmtyboJxgnSSd6J6sn3CgNKD8ocSiiKNQpBik4KWspnSnQ" +"KgIqNSpoKpsqzysCKzYraSudK9EsBSw5LG4soizXLQwtQS12Last4S4WLkwugi63Lu4vJC9aL5Ev" +"xy/+MDUwbDCkMNsxEjFKMYIxujHyMioyYzKbMtQzDTNGM38zuDPxNCs0ZTSeNNg1EzVNNYc1wjX9" +"Njc2cjauNuk3JDdgN5w31zgUOFA4jDjIOQU5Qjl/Obw5+To2OnQ6sjrvOy07azuqO+g8JzxlPKQ8" +"4z0iPWE9oT3gPiA+YD6gPuA/IT9hP6I/4kAjQGRApkDnQSlBakGsQe5CMEJyQrVC90M6Q31DwEQD" +"REdEikTORRJFVUWaRd5GIkZnRqtG8Ec1R3tHwEgFSEtIkUjXSR1JY0mpSfBKN0p9SsRLDEtTS5pL" +"4kwqTHJMuk0CTUpNk03cTiVObk63TwBPSU+TT91QJ1BxULtRBlFQUZtR5lIxUnxSx1MTU19TqlP2" +"VEJUj1TbVShVdVXCVg9WXFapVvdXRFeSV+BYL1h9WMtZGllpWbhaB1pWWqZa9VtFW5Vb5Vw1XIZc" +"1l0nXXhdyV4aXmxevV8PX2Ffs2AFYFdgqmD8YU9homH1YklinGLwY0Njl2PrZEBklGTpZT1lkmXn" +"Zj1mkmboZz1nk2fpaD9olmjsaUNpmmnxakhqn2r3a09rp2v/bFdsr20IbWBtuW4SbmtuxG8eb3hv" +"0XArcIZw4HE6cZVx8HJLcqZzAXNdc7h0FHRwdMx1KHWFdeF2Pnabdvh3VnezeBF4bnjMeSp5iXnn" +"ekZ6pXsEe2N7wnwhfIF84X1BfaF+AX5ifsJ/I3+Ef+WAR4CogQqBa4HNgjCCkoL0g1eDuoQdhICE" +"44VHhauGDoZyhteHO4efiASIaYjOiTOJmYn+imSKyoswi5aL/IxjjMqNMY2Yjf+OZo7OjzaPnpAG" +"kG6Q1pE/kaiSEZJ6kuOTTZO2lCCUipT0lV+VyZY0lp+XCpd1l+CYTJi4mSSZkJn8mmia1ZtCm6+c" +"HJyJnPedZJ3SnkCerp8dn4uf+qBpoNihR6G2oiailqMGo3aj5qRWpMelOKWpphqmi6b9p26n4KhS" +"qMSpN6mpqhyqj6sCq3Wr6axcrNCtRK24ri2uoa8Wr4uwALB1sOqxYLHWskuywrM4s660JbSctRO1" +"irYBtnm28Ldot+C4WbjRuUq5wro7urW7LrunvCG8m70VvY++Cr6Evv+/er/1wHDA7MFnwePCX8Lb" +"w1jD1MRRxM7FS8XIxkbGw8dBx7/IPci8yTrJuco4yrfLNsu2zDXMtc01zbXONs62zzfPuNA50LrR" +"PNG+0j/SwdNE08bUSdTL1U7V0dZV1tjXXNfg2GTY6Nls2fHadtr724DcBdyK3RDdlt4c3qLfKd+v" +"4DbgveFE4cziU+Lb42Pj6+Rz5PzlhOYN5pbnH+ep6DLovOlG6dDqW+rl63Dr++yG7RHtnO4o7rTv" +"QO/M8Fjw5fFy8f/yjPMZ86f0NPTC9VD13vZt9vv3ivgZ+Kj5OPnH+lf65/t3/Af8mP0p/br+S/7c" +"/23//2N1cnYAAAAAAAAEAAAAAAUACgAPABQAGQAeACMAKAAtADIANwA7AEAARQBKAE8AVABZAF4A" +"YwBoAG0AcgB3AHwAgQCGAIsAkACVAJoAnwCkAKkArgCyALcAvADBAMYAywDQANUA2wDgAOUA6wDw" +"APYA+wEBAQcBDQETARkBHwElASsBMgE4AT4BRQFMAVIBWQFgAWcBbgF1AXwBgwGLAZIBmgGhAakB" +"sQG5AcEByQHRAdkB4QHpAfIB+gIDAgwCFAIdAiYCLwI4AkECSwJUAl0CZwJxAnoChAKOApgCogKs" +"ArYCwQLLAtUC4ALrAvUDAAMLAxYDIQMtAzgDQwNPA1oDZgNyA34DigOWA6IDrgO6A8cD0wPgA+wD" +"+QQGBBMEIAQtBDsESARVBGMEcQR+BIwEmgSoBLYExATTBOEE8AT+BQ0FHAUrBToFSQVYBWcFdwWG" +"BZYFpgW1BcUF1QXlBfYGBgYWBicGNwZIBlkGagZ7BowGnQavBsAG0QbjBvUHBwcZBysHPQdPB2EH" +"dAeGB5kHrAe/B9IH5Qf4CAsIHwgyCEYIWghuCIIIlgiqCL4I0gjnCPsJEAklCToJTwlkCXkJjwmk" +"CboJzwnlCfsKEQonCj0KVApqCoEKmAquCsUK3ArzCwsLIgs5C1ELaQuAC5gLsAvIC+EL+QwSDCoM" +"QwxcDHUMjgynDMAM2QzzDQ0NJg1ADVoNdA2ODakNww3eDfgOEw4uDkkOZA5/DpsOtg7SDu4PCQ8l" +"D0EPXg96D5YPsw/PD+wQCRAmEEMQYRB+EJsQuRDXEPURExExEU8RbRGMEaoRyRHoEgcSJhJFEmQS" +"hBKjEsMS4xMDEyMTQxNjE4MTpBPFE+UUBhQnFEkUahSLFK0UzhTwFRIVNBVWFXgVmxW9FeAWAxYm" +"FkkWbBaPFrIW1hb6Fx0XQRdlF4kXrhfSF/cYGxhAGGUYihivGNUY+hkgGUUZaxmRGbcZ3RoEGioa" +"URp3Gp4axRrsGxQbOxtjG4obshvaHAIcKhxSHHscoxzMHPUdHh1HHXAdmR3DHeweFh5AHmoelB6+" +"HukfEx8+H2kflB+/H+ogFSBBIGwgmCDEIPAhHCFIIXUhoSHOIfsiJyJVIoIiryLdIwojOCNmI5Qj" +"wiPwJB8kTSR8JKsk2iUJJTglaCWXJccl9yYnJlcmhya3JugnGCdJJ3onqyfcKA0oPyhxKKIo1CkG" +"KTgpaymdKdAqAio1KmgqmyrPKwIrNitpK50r0SwFLDksbiyiLNctDC1BLXYtqy3hLhYuTC6CLrcu" +"7i8kL1ovkS/HL/4wNTBsMKQw2zESMUoxgjG6MfIyKjJjMpsy1DMNM0YzfzO4M/E0KzRlNJ402DUT" +"NU01hzXCNf02NzZyNq426TckN2A3nDfXOBQ4UDiMOMg5BTlCOX85vDn5OjY6dDqyOu87LTtrO6o7" +"6DwnPGU8pDzjPSI9YT2hPeA+ID5gPqA+4D8hP2E/oj/iQCNAZECmQOdBKUFqQaxB7kIwQnJCtUL3" +"QzpDfUPARANER0SKRM5FEkVVRZpF3kYiRmdGq0bwRzVHe0fASAVIS0iRSNdJHUljSalJ8Eo3Sn1K" +"xEsMS1NLmkviTCpMcky6TQJNSk2TTdxOJU5uTrdPAE9JT5NP3VAnUHFQu1EGUVBRm1HmUjFSfFLH" +"UxNTX1OqU/ZUQlSPVNtVKFV1VcJWD1ZcVqlW91dEV5JX4FgvWH1Yy1kaWWlZuFoHWlZaplr1W0Vb" +"lVvlXDVchlzWXSddeF3JXhpebF69Xw9fYV+zYAVgV2CqYPxhT2GiYfViSWKcYvBjQ2OXY+tkQGSU" +"ZOllPWWSZedmPWaSZuhnPWeTZ+loP2iWaOxpQ2maafFqSGqfavdrT2una/9sV2yvbQhtYG25bhJu" +"a27Ebx5veG/RcCtwhnDgcTpxlXHwcktypnMBc11zuHQUdHB0zHUodYV14XY+dpt2+HdWd7N4EXhu" +"eMx5KnmJeed6RnqlewR7Y3vCfCF8gXzhfUF9oX4BfmJ+wn8jf4R/5YBHgKiBCoFrgc2CMIKSgvSD" +"V4O6hB2EgITjhUeFq4YOhnKG14c7h5+IBIhpiM6JM4mZif6KZIrKizCLlov8jGOMyo0xjZiN/45m" +"js6PNo+ekAaQbpDWkT+RqJIRknqS45NNk7aUIJSKlPSVX5XJljSWn5cKl3WX4JhMmLiZJJmQmfya" +"aJrVm0Kbr5wcnImc951kndKeQJ6unx2fi5/6oGmg2KFHobaiJqKWowajdqPmpFakx6U4pammGqaL" +"pv2nbqfgqFKoxKk3qamqHKqPqwKrdavprFys0K1ErbiuLa6hrxavi7AAsHWw6rFgsdayS7LCsziz" +"rrQltJy1E7WKtgG2ebbwt2i34LhZuNG5SrnCuju6tbsuu6e8IbybvRW9j74KvoS+/796v/XAcMDs" +"wWfB48JfwtvDWMPUxFHEzsVLxcjGRsbDx0HHv8g9yLzJOsm5yjjKt8s2y7bMNcy1zTXNtc42zrbP" +"N8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp22vvbgNwF3IrdEN2W" +"3hzeot8p36/gNuC94UThzOJT4tvjY+Pr5HPk/OWE5g3mlucf56noMui86Ubp0Opb6uXrcOv77Ibt" +"Ee2c7ijutO9A78zwWPDl8XLx//KM8xnzp/Q09ML1UPXe9m32+/eK+Bn4qPk4+cf6V/rn+3f8B/yY" +"/Sn9uv5L/tz/bf//Y2hybQAAAAAAAwAAAACj1wAAVHsAAEzNAACZmgAAJmYAAA9cdGV4dAAAAABu" +"byBjb3B5cmlnaHQsIHVzZSBmcmVlbHkACg==" + }, + { 0, 0 } }; diff --git a/libvips/foreign/exif.c b/libvips/foreign/exif.c index 8987b9ef..759e0fdc 100644 --- a/libvips/foreign/exif.c +++ b/libvips/foreign/exif.c @@ -158,7 +158,7 @@ show_values( ExifData *data ) * their default value and we won't know about it. */ static ExifData * -vips_exif_load_data_without_fix( void *data, int length ) +vips_exif_load_data_without_fix( const void *data, int length ) { ExifData *ed; @@ -458,17 +458,17 @@ vips_exif_resolution_from_image( ExifData *ed, VipsImage *image ); int vips__exif_parse( VipsImage *image ) { - void *data; - size_t length; + const void *data; + size_t size; ExifData *ed; VipsExifParams params; const char *str; if( !vips_image_get_typeof( image, VIPS_META_EXIF_NAME ) ) return( 0 ); - if( vips_image_get_blob( image, VIPS_META_EXIF_NAME, &data, &length ) ) + if( vips_image_get_blob( image, VIPS_META_EXIF_NAME, &data, &size ) ) return( -1 ); - if( !(ed = vips_exif_load_data_without_fix( data, length )) ) + if( !(ed = vips_exif_load_data_without_fix( data, size )) ) return( -1 ); #ifdef DEBUG_VERBOSE @@ -1055,21 +1055,21 @@ vips_exif_set_thumbnail( ExifData *ed, VipsImage *im ) /* Update EXIF thumbnail from metadata, if any. */ if( vips_image_get_typeof( im, "jpeg-thumbnail-data" ) ) { - void *data; - size_t length; + const void *data; + size_t size; if( vips_image_get_blob( im, "jpeg-thumbnail-data", - &data, &length ) ) + &data, &size ) ) return( -1 ); /* Again, we should use the exif allocator attached to this * entry, but it is not exposed! */ - if( length > 0 && + if( size > 0 && data ) { - ed->data = malloc( length ); - memcpy( ed->data, data, length ); - ed->size = length; + ed->data = malloc( size ); + memcpy( ed->data, data, size ); + ed->size = size; } } diff --git a/libvips/foreign/foreign.c b/libvips/foreign/foreign.c index 31221ee6..651fea81 100644 --- a/libvips/foreign/foreign.c +++ b/libvips/foreign/foreign.c @@ -1518,12 +1518,12 @@ vips__foreign_convert_saveable( VipsImage *in, VipsImage **ready, * want to silently drop the profile in this case. */ if( vips_image_get_typeof( in, VIPS_META_ICC_NAME ) ) { - void *data; - size_t length; + const void *data; + size_t size; if( !vips_image_get_blob( in, VIPS_META_ICC_NAME, - &data, &length ) && - !vips_icc_is_compatible_profile( in, data, length ) ) + &data, &size ) && + !vips_icc_is_compatible_profile( in, data, size ) ) vips_image_remove( in, VIPS_META_ICC_NAME ); } diff --git a/libvips/foreign/vips2jpeg.c b/libvips/foreign/vips2jpeg.c index d68af286..50687216 100644 --- a/libvips/foreign/vips2jpeg.c +++ b/libvips/foreign/vips2jpeg.c @@ -375,18 +375,16 @@ write_profile_file( Write *write, const char *profile ) static int write_profile_meta( Write *write ) { - void *data; - size_t data_length; + const void *data; + size_t size; - if( vips_image_get_blob( write->in, VIPS_META_ICC_NAME, - &data, &data_length ) ) + if( vips_image_get_blob( write->in, VIPS_META_ICC_NAME, &data, &size ) ) return( -1 ); - - write_profile_data( &write->cinfo, data, data_length ); + write_profile_data( &write->cinfo, data, size ); #ifdef DEBUG printf( "write_profile_meta: attached %zd byte profile from header\n", - data_length ); + size ); #endif /*DEBUG*/ return( 0 ); diff --git a/libvips/foreign/vips2tiff.c b/libvips/foreign/vips2tiff.c index 9a60aa8e..88ae3cd5 100644 --- a/libvips/foreign/vips2tiff.c +++ b/libvips/foreign/vips2tiff.c @@ -351,12 +351,12 @@ embed_profile_file( TIFF *tif, const char *profile ) static int embed_profile_meta( TIFF *tif, VipsImage *im ) { - void *data; - size_t data_length; + const void *data; + size_t size; - if( vips_image_get_blob( im, VIPS_META_ICC_NAME, &data, &data_length ) ) + if( vips_image_get_blob( im, VIPS_META_ICC_NAME, &data, &size ) ) return( -1 ); - TIFFSetField( tif, TIFFTAG_ICCPROFILE, data_length, data ); + TIFFSetField( tif, TIFFTAG_ICCPROFILE, size, data ); #ifdef DEBUG printf( "vips2tiff: attached profile from meta\n" ); @@ -442,15 +442,14 @@ wtiff_embed_profile( Wtiff *wtiff, TIFF *tif ) static int wtiff_embed_xmp( Wtiff *wtiff, TIFF *tif ) { - void *data; - size_t data_length; + const void *data; + size_t size; if( !vips_image_get_typeof( wtiff->im, VIPS_META_XMP_NAME ) ) return( 0 ); - if( vips_image_get_blob( wtiff->im, VIPS_META_XMP_NAME, - &data, &data_length ) ) + if( vips_image_get_blob( wtiff->im, VIPS_META_XMP_NAME, &data, &size ) ) return( -1 ); - TIFFSetField( tif, TIFFTAG_XMLPACKET, data_length, data ); + TIFFSetField( tif, TIFFTAG_XMLPACKET, size, data ); #ifdef DEBUG printf( "vips2tiff: attached XMP from meta\n" ); @@ -462,27 +461,27 @@ wtiff_embed_xmp( Wtiff *wtiff, TIFF *tif ) static int wtiff_embed_iptc( Wtiff *wtiff, TIFF *tif ) { - void *data; - size_t data_length; + const void *data; + size_t size; if( !vips_image_get_typeof( wtiff->im, VIPS_META_IPTC_NAME ) ) return( 0 ); if( vips_image_get_blob( wtiff->im, VIPS_META_IPTC_NAME, - &data, &data_length ) ) + &data, &size ) ) return( -1 ); /* For no very good reason, libtiff stores IPTC as an array of * long, not byte. */ - if( data_length & 3 ) { + if( size & 3 ) { g_warning( "%s", _( "rounding up IPTC data length" ) ); - data_length /= 4; - data_length += 1; + size /= 4; + size += 1; } else - data_length /= 4; + size /= 4; - TIFFSetField( tif, TIFFTAG_RICHTIFFIPTC, data_length, data ); + TIFFSetField( tif, TIFFTAG_RICHTIFFIPTC, size, data ); #ifdef DEBUG printf( "vips2tiff: attached IPTC from meta\n" ); @@ -494,15 +493,15 @@ wtiff_embed_iptc( Wtiff *wtiff, TIFF *tif ) static int wtiff_embed_photoshop( Wtiff *wtiff, TIFF *tif ) { - void *data; - size_t data_length; + const void *data; + size_t size; if( !vips_image_get_typeof( wtiff->im, VIPS_META_PHOTOSHOP_NAME ) ) return( 0 ); if( vips_image_get_blob( wtiff->im, - VIPS_META_PHOTOSHOP_NAME, &data, &data_length ) ) + VIPS_META_PHOTOSHOP_NAME, &data, &size ) ) return( -1 ); - TIFFSetField( tif, TIFFTAG_PHOTOSHOP, data_length, data ); + TIFFSetField( tif, TIFFTAG_PHOTOSHOP, size, data ); #ifdef DEBUG printf( "vips2tiff: attached photoshop data from meta\n" ); diff --git a/libvips/foreign/vips2webp.c b/libvips/foreign/vips2webp.c index 2754f472..92ae96cf 100644 --- a/libvips/foreign/vips2webp.c +++ b/libvips/foreign/vips2webp.c @@ -410,7 +410,7 @@ vips_webp_set_count( VipsWebPWrite *write, int loop_count ) static int vips_webp_set_chunk( VipsWebPWrite *write, - const char *webp_name, void *data, size_t length ) + const char *webp_name, const void *data, size_t length ) { WebPData chunk; @@ -440,7 +440,7 @@ vips_webp_add_chunks( VipsWebPWrite *write, VipsImage *image ) const char *webp_name = vips__webp_names[i].webp; if( vips_image_get_typeof( image, vips_name ) ) { - void *data; + const void *data; size_t length; if( vips_image_get_blob( image, diff --git a/libvips/foreign/vipspng.c b/libvips/foreign/vipspng.c index 5d980425..a348de6d 100644 --- a/libvips/foreign/vipspng.c +++ b/libvips/foreign/vipspng.c @@ -1091,36 +1091,36 @@ write_vips( Write *write, } else if( vips_image_get_typeof( in, VIPS_META_ICC_NAME ) && !strip ) { - void *data; - size_t length; + const void *data; + size_t size; if( vips_image_get_blob( in, VIPS_META_ICC_NAME, - &data, &length ) ) + &data, &size ) ) return( -1 ); #ifdef DEBUG printf( "write_vips: attaching %zd bytes of ICC profile\n", - length ); + size ); #endif /*DEBUG*/ png_set_iCCP( write->pPng, write->pInfo, "icc", - PNG_COMPRESSION_TYPE_BASE, data, length ); + PNG_COMPRESSION_TYPE_BASE, data, size ); } if( vips_image_get_typeof( in, VIPS_META_XMP_NAME ) ) { - void *data; - size_t length; + const void *data; + size_t size; char *str; /* XMP is attached as a BLOB with no null-termination. We * must re-add this. */ if( vips_image_get_blob( in, - VIPS_META_XMP_NAME, &data, &length ) ) + VIPS_META_XMP_NAME, &data, &size ) ) return( -1 ); - str = g_malloc( length + 1 ); - vips_strncpy( str, data, length + 1 ); + str = g_malloc( size + 1 ); + vips_strncpy( str, data, size + 1 ); vips__png_set_text( write->pPng, write->pInfo, "XML:com.adobe.xmp", str ); g_free( str ); diff --git a/libvips/include/vips/colour.h b/libvips/include/vips/colour.h index e12c3a34..7f4041e1 100644 --- a/libvips/include/vips/colour.h +++ b/libvips/include/vips/colour.h @@ -183,7 +183,7 @@ int vips_icc_export( VipsImage *in, VipsImage **out, ... ) int vips_icc_ac2rc( VipsImage *in, VipsImage **out, const char *profile_filename ); gboolean vips_icc_is_compatible_profile( VipsImage *image, - void *data, size_t data_length ); + const void *data, size_t data_length ); int vips_dE76( VipsImage *left, VipsImage *right, VipsImage **out, ... ) __attribute__((sentinel)); diff --git a/libvips/include/vips/header.h b/libvips/include/vips/header.h index 1b0e1305..6f4d2a89 100644 --- a/libvips/include/vips/header.h +++ b/libvips/include/vips/header.h @@ -194,11 +194,12 @@ void vips_image_set_area( VipsImage *image, int vips_image_get_area( const VipsImage *image, const char *name, void **data ); void vips_image_set_blob( VipsImage *image, - const char *name, VipsCallbackFn free_fn, void *data, size_t length ); + const char *name, + VipsCallbackFn free_fn, const void *data, size_t length ); void vips_image_set_blob_copy( VipsImage *image, const char *name, const void *data, size_t length ); -int vips_image_get_blob( const VipsImage *image, const char *name, - void **data, size_t *length ); +int vips_image_get_blob( const VipsImage *image, + const char *name, const void **data, size_t *length ); int vips_image_get_int( const VipsImage *image, const char *name, int *out ); void vips_image_set_int( VipsImage *image, const char *name, int i ); diff --git a/libvips/include/vips/type.h b/libvips/include/vips/type.h index 2ca154d8..9e578ab3 100644 --- a/libvips/include/vips/type.h +++ b/libvips/include/vips/type.h @@ -158,9 +158,9 @@ typedef struct _VipsBlob { } VipsBlob; VipsBlob *vips_blob_new( VipsCallbackFn free_fn, - const void *data, size_t size ); -VipsBlob *vips_blob_copy( const void *data, size_t size ); -const void *vips_blob_get( VipsBlob *blob, size_t *size ); + const void *data, size_t length ); +VipsBlob *vips_blob_copy( const void *data, size_t length ); +const void *vips_blob_get( VipsBlob *blob, size_t *length ); GType vips_blob_get_type(void); /** @@ -224,7 +224,7 @@ void vips_value_set_ref_string( GValue *value, const char *str ); void *vips_value_get_blob( const GValue *value, size_t *length ); void vips_value_set_blob( GValue *value, - VipsCallbackFn free_fn, void *data, size_t length ); + VipsCallbackFn free_fn, const void *data, size_t length ); void vips_value_set_blob_free( GValue *value, void *data, size_t length ); void vips_value_set_array( GValue *value, diff --git a/libvips/iofuncs/header.c b/libvips/iofuncs/header.c index 29a6b04d..b2ae7d0c 100644 --- a/libvips/iofuncs/header.c +++ b/libvips/iofuncs/header.c @@ -1365,13 +1365,13 @@ vips_image_get_area( const VipsImage *image, const char *name, void **data ) * See also: vips_image_get_blob(), vips_image_set(). */ void -vips_image_set_blob( VipsImage *image, - const char *name, VipsCallbackFn free_fn, void *data, size_t length ) +vips_image_set_blob( VipsImage *image, const char *name, + VipsCallbackFn free_fn, const void *data, size_t size ) { GValue value = { 0 }; g_value_init( &value, VIPS_TYPE_BLOB ); - vips_value_set_blob( &value, free_fn, data, length ); + vips_value_set_blob( &value, free_fn, data, size ); vips_image_set( image, name, &value ); g_value_unset( &value ); } @@ -1431,7 +1431,7 @@ vips_image_set_blob_copy( VipsImage *image, */ int vips_image_get_blob( const VipsImage *image, const char *name, - void **data, size_t *length ) + const void **data, size_t *length ) { GValue value_copy = { 0 }; diff --git a/libvips/iofuncs/type.c b/libvips/iofuncs/type.c index 6d106a99..f1542bb0 100644 --- a/libvips/iofuncs/type.c +++ b/libvips/iofuncs/type.c @@ -599,8 +599,8 @@ vips_ref_string_get_type( void ) /** * vips_blob_new: * @free_fn: (scope async) (allow-none): @data will be freed with this function - * @data: (array length=size) (element-type guint8) (transfer full): data to store - * @size: number of bytes in @data + * @data: (array length=length) (element-type guint8) (transfer full): data to store + * @length: number of bytes in @data * * Like vips_area_new(), but track a length as well. The returned #VipsBlob * takes ownership of @data and will free it with @free_fn. Pass NULL for @@ -614,20 +614,20 @@ vips_ref_string_get_type( void ) * Returns: (transfer full): the new #VipsBlob. */ VipsBlob * -vips_blob_new( VipsCallbackFn free_fn, const void *data, size_t size ) +vips_blob_new( VipsCallbackFn free_fn, const void *data, size_t length ) { VipsArea *area; area = vips_area_new( free_fn, (void *) data ); - area->length = size; + area->length = length; return( (VipsBlob *) area ); } /** * vips_blob_copy: - * @data: (array length=size) (element-type guint8) (transfer none): data to store - * @size: number of bytes in @data + * @data: (array length=length) (element-type guint8) (transfer none): data to store + * @length: number of bytes in @data * * Like vips_blob_new(), but take a copy of the data. Useful for bindings * which strugle with callbacks. @@ -637,15 +637,15 @@ vips_blob_new( VipsCallbackFn free_fn, const void *data, size_t size ) * Returns: (transfer full): the new #VipsBlob. */ VipsBlob * -vips_blob_copy( const void *data, size_t size ) +vips_blob_copy( const void *data, size_t length ) { void *data_copy; VipsArea *area; - data_copy = vips_malloc( NULL, size ); - memcpy( data_copy, data, size ); + data_copy = vips_malloc( NULL, length ); + memcpy( data_copy, data, length ); area = vips_area_new( (VipsCallbackFn) g_free, data_copy ); - area->length = size; + area->length = length; return( (VipsBlob *) area ); } @@ -653,19 +653,19 @@ vips_blob_copy( const void *data, size_t size ) /** * vips_blob_get: * @blob: #VipsBlob to fetch from - * @size: return number of bytes of data + * @length: return number of bytes of data * * Get the data from a #VipsBlob. * * See also: vips_blob_new(). * - * Returns: (array length=size) (element-type guint8) (transfer none): the data + * Returns: (array length=length) (element-type guint8) (transfer none): the data */ const void * -vips_blob_get( VipsBlob *blob, size_t *size ) +vips_blob_get( VipsBlob *blob, size_t *length ) { return( vips_area_get_data( VIPS_AREA( blob ), - size, NULL, NULL, NULL ) ); + length, NULL, NULL, NULL ) ); } /* Transform a blob to a G_TYPE_STRING. @@ -674,12 +674,12 @@ static void transform_blob_g_string( const GValue *src_value, GValue *dest_value ) { void *blob; - size_t blob_length; + size_t length; char buf[256]; - blob = vips_value_get_blob( src_value, &blob_length ); + blob = vips_value_get_blob( src_value, &length ); vips_snprintf( buf, 256, "VIPS_TYPE_BLOB, data = %p, length = %zd", - blob, blob_length ); + blob, length ); g_value_set_string( dest_value, buf ); } @@ -689,11 +689,11 @@ static void transform_blob_save_string( const GValue *src_value, GValue *dest_value ) { void *blob; - size_t blob_length; + size_t length; char *b64; - blob = vips_value_get_blob( src_value, &blob_length ); - if( (b64 = vips__b64_encode( blob, blob_length )) ) { + blob = vips_value_get_blob( src_value, &length ); + if( (b64 = vips__b64_encode( blob, length )) ) { vips_value_set_save_string( dest_value, b64 ); vips_free( b64 ); } @@ -709,12 +709,12 @@ transform_save_string_blob( const GValue *src_value, GValue *dest_value ) { const char *b64; void *blob; - size_t blob_length; + size_t length; b64 = vips_value_get_save_string( src_value ); - if( (blob = vips__b64_decode( b64, &blob_length )) ) + if( (blob = vips__b64_decode( b64, &length )) ) vips_value_set_blob( dest_value, - (VipsCallbackFn) vips_free, blob, blob_length ); + (VipsCallbackFn) vips_free, blob, length ); else /* No error return from transform, but we should set it to * something. @@ -1556,7 +1556,7 @@ vips_value_set_ref_string( GValue *value, const char *str ) * @length: length of memory area * * Sets @value to hold a @data. When @value is freed, @data will be - * freed with @free_fn. @value also holds a note of the length of the memory + * freed with @free_fn. @value also holds a note of the size of the memory * area. * * blobs are things like ICC profiles or EXIF data. They are relocatable, and @@ -1567,7 +1567,7 @@ vips_value_set_ref_string( GValue *value, const char *str ) */ void vips_value_set_blob( GValue *value, - VipsCallbackFn free_fn, void *data, size_t length ) + VipsCallbackFn free_fn, const void *data, size_t length ) { VipsBlob *blob;