aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorEli Zaretskii2017-09-16 10:41:52 +0300
committerEli Zaretskii2017-09-16 10:41:52 +0300
commit1170c2f37158282d3f4a322586b2aa67001a287e (patch)
tree05489d6393b5398e36b993445e78adfb555db9d2 /src
parentcb27a13413d859788d995b45b6d0414b1ba9a060 (diff)
downloademacs-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.c30
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,
37DEF_DLL_FN (void, cmsCIECAM02Forward, 37DEF_DLL_FN (void, cmsCIECAM02Forward,
38 (cmsHANDLE hModel, const cmsCIEXYZ* pIn, cmsJCh* pOut)); 38 (cmsHANDLE hModel, const cmsCIEXYZ* pIn, cmsJCh* pOut));
39DEF_DLL_FN (void, cmsCIECAM02Done, (cmsHANDLE hModel)); 39DEF_DLL_FN (void, cmsCIECAM02Done, (cmsHANDLE hModel));
40DEF_DLL_FN (cmsBool, cmsWhitePointFromTemp,
41 (cmsCIExyY* WhitePoint, cmsFloat64Number TempK));
42DEF_DLL_FN (void, cmsxyY2XYZ, (cmsCIEXYZ* Dest, const cmsCIExyY* Source));
40 43
41static bool lcms_initialized; 44static 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
235DEFUN ("lcms-temp->white-point", Flcms_temp_to_white_point, Slcms_temp_to_white_point, 1, 1, 0, 244DEFUN ("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.
237Valid range is 4000K to 25000K. */) 246Valid 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}