diff options
| author | Eli Zaretskii | 2017-09-16 10:41:52 +0300 |
|---|---|---|
| committer | Eli Zaretskii | 2017-09-16 10:41:52 +0300 |
| commit | 1170c2f37158282d3f4a322586b2aa67001a287e (patch) | |
| tree | 05489d6393b5398e36b993445e78adfb555db9d2 /src | |
| parent | cb27a13413d859788d995b45b6d0414b1ba9a060 (diff) | |
| download | emacs-1170c2f37158282d3f4a322586b2aa67001a287e.tar.gz emacs-1170c2f37158282d3f4a322586b2aa67001a287e.zip | |
Fix MS-Windows build broken by recent changes in lcms.c
* src/lcms.c [WINDOWSNT]: Define types for cmsWhitePointFromTemp
and cmsxyY2XYZ function pointers.
(init_lcms_functions) [WINDOWSNT]: Load cmsWhitePointFromTemp and
cmsxyY2XYZ from liblcms2.
(cmsWhitePointFromTemp, cmsxyY2XYZ) [WINDOWSNT]: Redirect to the
corresponding function pointers.
(Flcms_temp_to_white_point): Minor stylistic changes. Doc fix.
(syms_of_lcms2): Defsubr Slcms_temp_to_white_point.
Diffstat (limited to 'src')
| -rw-r--r-- | src/lcms.c | 30 |
1 files changed, 20 insertions, 10 deletions
diff --git a/src/lcms.c b/src/lcms.c index 974fcd49300..1f3ace3baac 100644 --- a/src/lcms.c +++ b/src/lcms.c | |||
| @@ -37,6 +37,9 @@ DEF_DLL_FN (cmsHANDLE, cmsCIECAM02Init, | |||
| 37 | DEF_DLL_FN (void, cmsCIECAM02Forward, | 37 | DEF_DLL_FN (void, cmsCIECAM02Forward, |
| 38 | (cmsHANDLE hModel, const cmsCIEXYZ* pIn, cmsJCh* pOut)); | 38 | (cmsHANDLE hModel, const cmsCIEXYZ* pIn, cmsJCh* pOut)); |
| 39 | DEF_DLL_FN (void, cmsCIECAM02Done, (cmsHANDLE hModel)); | 39 | DEF_DLL_FN (void, cmsCIECAM02Done, (cmsHANDLE hModel)); |
| 40 | DEF_DLL_FN (cmsBool, cmsWhitePointFromTemp, | ||
| 41 | (cmsCIExyY* WhitePoint, cmsFloat64Number TempK)); | ||
| 42 | DEF_DLL_FN (void, cmsxyY2XYZ, (cmsCIEXYZ* Dest, const cmsCIExyY* Source)); | ||
| 40 | 43 | ||
| 41 | static bool lcms_initialized; | 44 | static bool lcms_initialized; |
| 42 | 45 | ||
| @@ -52,6 +55,8 @@ init_lcms_functions (void) | |||
| 52 | LOAD_DLL_FN (library, cmsCIECAM02Init); | 55 | LOAD_DLL_FN (library, cmsCIECAM02Init); |
| 53 | LOAD_DLL_FN (library, cmsCIECAM02Forward); | 56 | LOAD_DLL_FN (library, cmsCIECAM02Forward); |
| 54 | LOAD_DLL_FN (library, cmsCIECAM02Done); | 57 | LOAD_DLL_FN (library, cmsCIECAM02Done); |
| 58 | LOAD_DLL_FN (library, cmsWhitePointFromTemp); | ||
| 59 | LOAD_DLL_FN (library, cmsxyY2XYZ); | ||
| 55 | return true; | 60 | return true; |
| 56 | } | 61 | } |
| 57 | 62 | ||
| @@ -59,11 +64,15 @@ init_lcms_functions (void) | |||
| 59 | # undef cmsCIECAM02Init | 64 | # undef cmsCIECAM02Init |
| 60 | # undef cmsCIECAM02Forward | 65 | # undef cmsCIECAM02Forward |
| 61 | # undef cmsCIECAM02Done | 66 | # undef cmsCIECAM02Done |
| 67 | # undef cmsWhitePointFromTemp | ||
| 68 | # undef cmsxyY2XYZ | ||
| 62 | 69 | ||
| 63 | # define cmsCIE2000DeltaE fn_cmsCIE2000DeltaE | 70 | # define cmsCIE2000DeltaE fn_cmsCIE2000DeltaE |
| 64 | # define cmsCIECAM02Init fn_cmsCIECAM02Init | 71 | # define cmsCIECAM02Init fn_cmsCIECAM02Init |
| 65 | # define cmsCIECAM02Forward fn_cmsCIECAM02Forward | 72 | # define cmsCIECAM02Forward fn_cmsCIECAM02Forward |
| 66 | # define cmsCIECAM02Done fn_cmsCIECAM02Done | 73 | # define cmsCIECAM02Done fn_cmsCIECAM02Done |
| 74 | # define cmsWhitePointFromTemp fn_cmsWhitePointFromTemp | ||
| 75 | # define cmsxyY2XYZ fn_cmsxyY2XYZ | ||
| 67 | 76 | ||
| 68 | #endif /* WINDOWSNT */ | 77 | #endif /* WINDOWSNT */ |
| 69 | 78 | ||
| @@ -184,7 +193,7 @@ Optional argument is the XYZ white point, which defaults to illuminant D65. */) | |||
| 184 | xyzw.Y = 100.0; | 193 | xyzw.Y = 100.0; |
| 185 | xyzw.Z = 108.883; | 194 | xyzw.Z = 108.883; |
| 186 | } | 195 | } |
| 187 | else if (!(CONSP (whitepoint) && parse_xyz_list(whitepoint, &xyzw))) | 196 | else if (!(CONSP (whitepoint) && parse_xyz_list (whitepoint, &xyzw))) |
| 188 | signal_error("Invalid white point", whitepoint); | 197 | signal_error("Invalid white point", whitepoint); |
| 189 | 198 | ||
| 190 | vc.whitePoint.X = xyzw.X; | 199 | vc.whitePoint.X = xyzw.X; |
| @@ -234,7 +243,7 @@ Optional argument is the XYZ white point, which defaults to illuminant D65. */) | |||
| 234 | 243 | ||
| 235 | DEFUN ("lcms-temp->white-point", Flcms_temp_to_white_point, Slcms_temp_to_white_point, 1, 1, 0, | 244 | DEFUN ("lcms-temp->white-point", Flcms_temp_to_white_point, Slcms_temp_to_white_point, 1, 1, 0, |
| 236 | doc: /* Return XYZ black body chromaticity from TEMPERATURE given in K. | 245 | doc: /* Return XYZ black body chromaticity from TEMPERATURE given in K. |
| 237 | Valid range is 4000K to 25000K. */) | 246 | Valid range of TEMPERATURE is from 4000K to 25000K. */) |
| 238 | (Lisp_Object temperature) | 247 | (Lisp_Object temperature) |
| 239 | { | 248 | { |
| 240 | cmsFloat64Number tempK; | 249 | cmsFloat64Number tempK; |
| @@ -251,12 +260,12 @@ Valid range is 4000K to 25000K. */) | |||
| 251 | } | 260 | } |
| 252 | #endif | 261 | #endif |
| 253 | 262 | ||
| 254 | CHECK_NUMBER_OR_FLOAT(temperature); | 263 | CHECK_NUMBER_OR_FLOAT (temperature); |
| 255 | 264 | ||
| 256 | tempK = XFLOATINT(temperature); | 265 | tempK = XFLOATINT (temperature); |
| 257 | if (!(cmsWhitePointFromTemp(&whitepoint, tempK))) | 266 | if (!(cmsWhitePointFromTemp (&whitepoint, tempK))) |
| 258 | signal_error("Invalid temperature", temperature); | 267 | signal_error("Invalid temperature", temperature); |
| 259 | cmsxyY2XYZ(&wp, &whitepoint); | 268 | cmsxyY2XYZ (&wp, &whitepoint); |
| 260 | return list3 (make_float (wp.X), make_float (wp.Y), make_float (wp.Z)); | 269 | return list3 (make_float (wp.X), make_float (wp.Y), make_float (wp.Z)); |
| 261 | } | 270 | } |
| 262 | 271 | ||
| @@ -289,6 +298,7 @@ syms_of_lcms2 (void) | |||
| 289 | defsubr (&Slcms_cie_de2000); | 298 | defsubr (&Slcms_cie_de2000); |
| 290 | defsubr (&Slcms_cam02_ucs); | 299 | defsubr (&Slcms_cam02_ucs); |
| 291 | defsubr (&Slcms2_available_p); | 300 | defsubr (&Slcms2_available_p); |
| 301 | defsubr (&Slcms_temp_to_white_point); | ||
| 292 | 302 | ||
| 293 | Fprovide (intern_c_string ("lcms2"), Qnil); | 303 | Fprovide (intern_c_string ("lcms2"), Qnil); |
| 294 | } | 304 | } |