1160
1160
icRenderingIntent intent; /* Effective (externaly visible) intent */ \
1161
1161
icmLookupFunc function; /* Functionality being used */ \
1162
1162
icmLookupOrder order; /* Conversion representation search Order */ \
1163
icmXYZNumber pcswht, whitePoint, blackPoint; /* White and black point info */ \
1163
icmXYZNumber pcswht, whitePoint, blackPoint; /* White and black point info (absolute XYZ) */ \
1164
1164
int blackisassumed; /* nz if black point tag is missing from profile */ \
1165
1165
double toAbs[3][3]; /* Matrix to convert from relative to absolute */ \
1166
1166
double fromAbs[3][3]; /* Matrix to convert from absolute to relative */ \
1216
1216
/* Return nz on error */ \
1217
1217
int (*init_wh_bk)(struct _icmLuBase *p); \
1219
/* Get the LU white and black points in XYZ space. */ \
1219
/* Get the LU white and black points in absolute XYZ space. */ \
1220
1220
/* Return nz if the black point is being assumed to be 0,0,0 rather */ \
1221
1221
/* than being from the tag. */ \
1222
1222
int (*wh_bk_points)(struct _icmLuBase *p, double *wht, double *blk); \
1224
/* Get the LU white and black points in LU PCS space, converted to XYZ. */ \
1225
/* (ie. white and black will be relative if LU is relative intent etc.) */ \
1226
/* Return nz if the black point is being assumed to be 0,0,0 rather */ \
1227
/* than being from the tag. */ \
1228
int (*lu_wh_bk_points)(struct _icmLuBase *p, double *wht, double *blk); \
1224
1230
/* Translate color values through profile in effective in and out colorspaces, */ \
1225
1231
/* return values: */ \
1226
1232
/* 0 = success, 1 = warning: clipping occured, 2 = fatal: other error */ \
1665
1671
extern ICCLIB_API void icmXYZ2Luv(icmXYZNumber *w, double *out, double *in);
1667
1673
/* Perceptual Luv to CIE XYZ */
1668
extern ICCLIB_API void icmLuv(icmXYZNumber *w, double *out, double *in);
1674
extern ICCLIB_API void icmLuv2XYZ(icmXYZNumber *w, double *out, double *in);
1677
/* NOTE :- none of the following seven have been protected */
1678
/* against arithmmetic issues (ie. for black) */
1680
/* CIE XYZ to perceptual CIE 1976 UCS diagram Yu'v'*/
1681
/* (Yu'v' is a better chromaticity space than Yxy) */
1682
extern ICCLIB_API void icmXYZ21976UCS(double *out, double *in);
1684
/* Perceptual CIE 1976 UCS diagram Yu'v' to CIE XYZ */
1685
extern ICCLIB_API void icm1976UCS2XYZ(double *out, double *in);
1671
1687
/* CIE XYZ to perceptual CIE 1960 UCS */
1688
/* (This was obsoleted by the 1976UCS, but is still used */
1689
/* in computing color temperatures.) */
1672
1690
extern ICCLIB_API void icmXYZ21960UCS(double *out, double *in);
1674
1692
/* Perceptual CIE 1960 UCS to CIE XYZ */
1675
1693
extern ICCLIB_API void icm1960UCS2XYZ(double *out, double *in);
1677
1695
/* CIE XYZ to perceptual CIE 1964 WUV (U*V*W*) */
1696
/* (This is obsolete but still used in computing CRI) */
1678
1697
extern ICCLIB_API void icmXYZ21964WUV(icmXYZNumber *w, double *out, double *in);
1680
1699
/* Perceptual CIE 1964 WUV (U*V*W*) to CIE XYZ */
1681
1700
extern ICCLIB_API void icm1964WUV2XYZ(icmXYZNumber *w, double *out, double *in);
1683
/* CIE CIE1960 UCS to perceptual CIE 1964 WUV (U*V*W*) */
1702
/* CIE CIE1960 UCS to perceptual CIE 1964 WUV (U*V*W*) */
1684
1703
extern ICCLIB_API void icm1960UCS21964WUV(icmXYZNumber *w, double *out, double *in);
1686
1706
/* The standard D50 illuminant value */
1687
1707
extern icmXYZNumber icmD50;
1688
1708
extern icmXYZNumber icmD50_100; /* Scaled to 100 */