diff options
Diffstat (limited to 'libX11/src/xcms/Xcmsint.h')
-rw-r--r-- | libX11/src/xcms/Xcmsint.h | 520 |
1 files changed, 260 insertions, 260 deletions
diff --git a/libX11/src/xcms/Xcmsint.h b/libX11/src/xcms/Xcmsint.h index 75d947184..a28a2ff60 100644 --- a/libX11/src/xcms/Xcmsint.h +++ b/libX11/src/xcms/Xcmsint.h @@ -1,260 +1,260 @@ - -/* - * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc. - * All Rights Reserved - * - * This file is a component of an X Window System-specific implementation - * of Xcms based on the TekColor Color Management System. Permission is - * hereby granted to use, copy, modify, sell, and otherwise distribute this - * software and its documentation for any purpose and without fee, provided - * that this copyright, permission, and disclaimer notice is reproduced in - * all copies of this software and in supporting documentation. TekColor - * is a trademark of Tektronix, Inc. - * - * Tektronix makes no representation about the suitability of this software - * for any purpose. It is provided "as is" and with all faults. - * - * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE, - * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY - * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF - * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN - * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE. - * - * - * DESCRIPTION - * Private include file for Color Management System. - * (i.e., for API internal use only) - * - */ - -#ifndef _XCMSINT_H_ -#define _XCMSINT_H_ - -#include <X11/Xcms.h> - -/* - * DEFINES - */ - - /* - * Private Status Value - */ -#define _XCMS_NEWNAME -1 - - /* - * Color Space ID's are of XcmsColorFormat type. - * - * bit 31 - * 0 == Device-Independent - * 1 == Device-Dependent - * - * bit 30: - * 0 == Registered with X Consortium - * 1 == Unregistered - */ -#define XCMS_DD_ID(id) ((id) & (XcmsColorFormat)0x80000000) -#define XCMS_DI_ID(id) (!((id) & (XcmsColorFormat)0x80000000)) -#define XCMS_UNREG_ID(id) ((id) & (XcmsColorFormat)0x40000000) -#define XCMS_REG_ID(id) (!((id) & (XcmsColorFormat)0x40000000)) -#define XCMS_FIRST_REG_DI_ID (XcmsColorFormat)0x00000001 -#define XCMS_FIRST_UNREG_DI_ID (XcmsColorFormat)0x40000000 -#define XCMS_FIRST_REG_DD_ID (XcmsColorFormat)0x80000000 -#define XCMS_FIRST_UNREG_DD_ID (XcmsColorFormat)0xc0000000 - -/* - * TYPEDEFS - */ - - /* - * Structure for caching Colormap info. - * This is provided for the Xlib modifications to: - * XAllocNamedColor() - * XLookupColor() - * XParseColor() - * XStoreNamedColor() - */ -typedef struct _XcmsCmapRec { - Colormap cmapID; - Display *dpy; - Window windowID; - Visual *visual; - struct _XcmsCCC *ccc; - struct _XcmsCmapRec *pNext; -} XcmsCmapRec; - - /* - * Intensity Record (i.e., value / intensity tuple) - */ -typedef struct _IntensityRec { - unsigned short value; - XcmsFloat intensity; -} IntensityRec; - - /* - * Intensity Table - */ -typedef struct _IntensityTbl { - IntensityRec *pBase; - unsigned int nEntries; -} IntensityTbl; - - /* - * Structure for storing per-Visual Intensity Tables (aka gamma maps). - */ -typedef struct _XcmsIntensityMap { - VisualID visualID; - XPointer screenData; /* pointer to corresponding Screen Color*/ - /* Characterization Data */ - void (*pFreeScreenData)(XPointer pScreenDataTemp); /* Function that frees a Screen */ - /* structure. */ - struct _XcmsIntensityMap *pNext; -} XcmsIntensityMap; - - - /* - * Structure for storing "registered" color space prefix/ID - */ -typedef struct _XcmsRegColorSpaceEntry { - const char *prefix; /* Color Space prefix (e.g., "CIEXYZ:") */ - XcmsColorFormat id; /* Color Space ID (e.g., XcmsCIEXYZFormat) */ -} XcmsRegColorSpaceEntry; - - - /* - * Xcms Per Display (i.e. connection) related data - */ -typedef struct _XcmsPerDpyInfo { - - XcmsCCC paDefaultCCC; /* based on default visual of screen */ - /* - * Pointer to an array of XcmsCCC structures, one for - * each screen. - */ - XcmsCmapRec *pClientCmaps; /* Pointer to linked list of XcmsCmapRec's */ - -} XcmsPerDpyInfo, *XcmsPerDpyInfoPtr; - -/* - * DEFINES - */ - -#define XDCCC_NUMBER 0x8000000L /* 2**27 per XDCCC */ - -#ifdef GRAY -#define XDCCC_SCREENWHITEPT_ATOM_NAME "XDCCC_GRAY_SCREENWHITEPOINT" -#define XDCCC_GRAY_CORRECT_ATOM_NAME "XDCCC_GRAY_CORRECTION" -#endif /* GRAY */ - -#ifndef _ConversionValues -typedef struct _ConversionValues { - IntensityTbl IntensityTbl; -} ConversionValues; -#endif - -#ifdef GRAY -typedef struct { - IntensityTbl *IntensityTbl; -} GRAY_SCCData; -#endif /* GRAY */ - -/* - * DEFINES - */ - -#define XDCCC_MATRIX_ATOM_NAME "XDCCC_LINEAR_RGB_MATRICES" -#define XDCCC_CORRECT_ATOM_NAME "XDCCC_LINEAR_RGB_CORRECTION" - -typedef struct { - XcmsFloat XYZtoRGBmatrix[3][3]; - XcmsFloat RGBtoXYZmatrix[3][3]; - IntensityTbl *pRedTbl; - IntensityTbl *pGreenTbl; - IntensityTbl *pBlueTbl; -} LINEAR_RGB_SCCData; - -/* function prototypes */ -extern XcmsCmapRec * -_XcmsAddCmapRec( - Display *dpy, - Colormap cmap, - Window windowID, - Visual *visual); -extern void -_XcmsRGB_to_XColor( - XcmsColor *pColors, - XColor *pXColors, - unsigned int nColors); -extern Status -_XcmsResolveColorString ( - XcmsCCC ccc, - const char **color_string, - XcmsColor *pColor_exact_return, - XcmsColorFormat result_format); -extern void -_XUnresolveColor( - XcmsCCC ccc, - XColor *pXColor); -/* - * DESCRIPTION - * Include file for defining the math macros used in the - * XCMS source. Instead of using math library routines - * directly, XCMS uses macros so that based on the - * definitions here, vendors and sites can specify exactly - * what routine will be called (those from libm.a or their - * custom routines). If not defined to math library routines - * (e.g., sqrt in libm.a), then the client is not forced to - * be linked with -lm. - */ - -#define XCMS_ATAN(x) _XcmsArcTangent(x) -#define XCMS_COS(x) _XcmsCosine(x) -#define XCMS_CUBEROOT(x) _XcmsCubeRoot(x) -#define XCMS_FABS(x) ((x) < 0.0 ? -(x) : (x)) -#define XCMS_SIN(x) _XcmsSine(x) -#define XCMS_SQRT(x) _XcmsSquareRoot(x) -#define XCMS_TAN(x) (XCMS_SIN(x) / XCMS_COS(x)) - -double _XcmsArcTangent(double a); -double _XcmsCosine(double a); -double _XcmsCubeRoot(double a); -double _XcmsSine(double a); -double _XcmsSquareRoot(double a); - -/* - * DEFINES FOR GAMUT COMPRESSION AND QUERY ROUTINES - */ -#ifndef PI -# ifdef M_PI -# define PI M_PI -# else -# define PI 3.14159265358979323846264338327950 -# endif /* M_PI */ -#endif /* PI */ -#ifndef degrees -# define degrees(r) ((XcmsFloat)(r) * 180.0 / PI) -#endif /* degrees */ -#ifndef radians -# define radians(d) ((XcmsFloat)(d) * PI / 180.0) -#endif /* radians */ - -#define XCMS_CIEUSTAROFHUE(h,c) \ -((XCMS_COS((h)) == 0.0) ? (XcmsFloat)0.0 : (XcmsFloat) \ -((XcmsFloat)(c) / (XcmsFloat)XCMS_SQRT((XCMS_TAN(h) * XCMS_TAN(h)) + \ -(XcmsFloat)1.0))) -#define XCMS_CIEVSTAROFHUE(h,c) \ -((XCMS_COS((h)) == 0.0) ? (XcmsFloat)0.0 : (XcmsFloat) \ -((XcmsFloat)(c) / (XcmsFloat)XCMS_SQRT(((XcmsFloat)1.0 / \ -(XcmsFloat)(XCMS_TAN(h) * XCMS_TAN(h))) + (XcmsFloat)1.0))) -/* this hue is returned in radians */ -#define XCMS_CIELUV_PMETRIC_HUE(u,v) \ -(((u) != 0.0) ? XCMS_ATAN( (v) / (u)) : ((v >= 0.0) ? PI / 2 : -(PI / 2))) -#define XCMS_CIELUV_PMETRIC_CHROMA(u,v) XCMS_SQRT(((u)*(u)) + ((v)*(v))) - -#define XCMS_CIEASTAROFHUE(h,c) XCMS_CIEUSTAROFHUE((h), (c)) -#define XCMS_CIEBSTAROFHUE(h,c) XCMS_CIEVSTAROFHUE((h), (c)) -#define XCMS_CIELAB_PMETRIC_HUE(a,b) XCMS_CIELUV_PMETRIC_HUE((a), (b)) -#define XCMS_CIELAB_PMETRIC_CHROMA(a,b) XCMS_CIELUV_PMETRIC_CHROMA((a), (b)) - -#endif /* _XCMSINT_H_ */ +
+/*
+ * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
+ * All Rights Reserved
+ *
+ * This file is a component of an X Window System-specific implementation
+ * of Xcms based on the TekColor Color Management System. Permission is
+ * hereby granted to use, copy, modify, sell, and otherwise distribute this
+ * software and its documentation for any purpose and without fee, provided
+ * that this copyright, permission, and disclaimer notice is reproduced in
+ * all copies of this software and in supporting documentation. TekColor
+ * is a trademark of Tektronix, Inc.
+ *
+ * Tektronix makes no representation about the suitability of this software
+ * for any purpose. It is provided "as is" and with all faults.
+ *
+ * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
+ * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY
+ * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
+ * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF
+ * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
+ * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE.
+ *
+ *
+ * DESCRIPTION
+ * Private include file for Color Management System.
+ * (i.e., for API internal use only)
+ *
+ */
+
+#ifndef _XCMSINT_H_
+#define _XCMSINT_H_
+
+#include <X11/Xcms.h>
+
+/*
+ * DEFINES
+ */
+
+ /*
+ * Private Status Value
+ */
+#define _XCMS_NEWNAME -1
+
+ /*
+ * Color Space ID's are of XcmsColorFormat type.
+ *
+ * bit 31
+ * 0 == Device-Independent
+ * 1 == Device-Dependent
+ *
+ * bit 30:
+ * 0 == Registered with X Consortium
+ * 1 == Unregistered
+ */
+#define XCMS_DD_ID(id) ((id) & (XcmsColorFormat)0x80000000)
+#define XCMS_DI_ID(id) (!((id) & (XcmsColorFormat)0x80000000))
+#define XCMS_UNREG_ID(id) ((id) & (XcmsColorFormat)0x40000000)
+#define XCMS_REG_ID(id) (!((id) & (XcmsColorFormat)0x40000000))
+#define XCMS_FIRST_REG_DI_ID (XcmsColorFormat)0x00000001
+#define XCMS_FIRST_UNREG_DI_ID (XcmsColorFormat)0x40000000
+#define XCMS_FIRST_REG_DD_ID (XcmsColorFormat)0x80000000
+#define XCMS_FIRST_UNREG_DD_ID (XcmsColorFormat)0xc0000000
+
+/*
+ * TYPEDEFS
+ */
+
+ /*
+ * Structure for caching Colormap info.
+ * This is provided for the Xlib modifications to:
+ * XAllocNamedColor()
+ * XLookupColor()
+ * XParseColor()
+ * XStoreNamedColor()
+ */
+typedef struct _XcmsCmapRec {
+ Colormap cmapID;
+ Display *dpy;
+ Window windowID;
+ Visual *visual;
+ struct _XcmsCCC *ccc;
+ struct _XcmsCmapRec *pNext;
+} XcmsCmapRec;
+
+ /*
+ * Intensity Record (i.e., value / intensity tuple)
+ */
+typedef struct _IntensityRec {
+ unsigned short value;
+ XcmsFloat intensity;
+} IntensityRec;
+
+ /*
+ * Intensity Table
+ */
+typedef struct _IntensityTbl {
+ IntensityRec *pBase;
+ unsigned int nEntries;
+} IntensityTbl;
+
+ /*
+ * Structure for storing per-Visual Intensity Tables (aka gamma maps).
+ */
+typedef struct _XcmsIntensityMap {
+ VisualID visualID;
+ XPointer screenData; /* pointer to corresponding Screen Color*/
+ /* Characterization Data */
+ void (*pFreeScreenData)(XPointer pScreenDataTemp); /* Function that frees a Screen */
+ /* structure. */
+ struct _XcmsIntensityMap *pNext;
+} XcmsIntensityMap;
+
+
+ /*
+ * Structure for storing "registered" color space prefix/ID
+ */
+typedef struct _XcmsRegColorSpaceEntry {
+ const char *prefix; /* Color Space prefix (e.g., "CIEXYZ:") */
+ XcmsColorFormat id; /* Color Space ID (e.g., XcmsCIEXYZFormat) */
+} XcmsRegColorSpaceEntry;
+
+
+ /*
+ * Xcms Per Display (i.e. connection) related data
+ */
+typedef struct _XcmsPerDpyInfo {
+
+ XcmsCCC paDefaultCCC; /* based on default visual of screen */
+ /*
+ * Pointer to an array of XcmsCCC structures, one for
+ * each screen.
+ */
+ XcmsCmapRec *pClientCmaps; /* Pointer to linked list of XcmsCmapRec's */
+
+} XcmsPerDpyInfo, *XcmsPerDpyInfoPtr;
+
+/*
+ * DEFINES
+ */
+
+#define XDCCC_NUMBER 0x8000000L /* 2**27 per XDCCC */
+
+#ifdef GRAY
+#define XDCCC_SCREENWHITEPT_ATOM_NAME "XDCCC_GRAY_SCREENWHITEPOINT"
+#define XDCCC_GRAY_CORRECT_ATOM_NAME "XDCCC_GRAY_CORRECTION"
+#endif /* GRAY */
+
+#ifndef _ConversionValues
+typedef struct _ConversionValues {
+ IntensityTbl IntensityTbl;
+} ConversionValues;
+#endif
+
+#ifdef GRAY
+typedef struct {
+ IntensityTbl *IntensityTbl;
+} GRAY_SCCData;
+#endif /* GRAY */
+
+/*
+ * DEFINES
+ */
+
+#define XDCCC_MATRIX_ATOM_NAME "XDCCC_LINEAR_RGB_MATRICES"
+#define XDCCC_CORRECT_ATOM_NAME "XDCCC_LINEAR_RGB_CORRECTION"
+
+typedef struct {
+ XcmsFloat XYZtoRGBmatrix[3][3];
+ XcmsFloat RGBtoXYZmatrix[3][3];
+ IntensityTbl *pRedTbl;
+ IntensityTbl *pGreenTbl;
+ IntensityTbl *pBlueTbl;
+} LINEAR_RGB_SCCData;
+
+/* function prototypes */
+extern XcmsCmapRec *
+_XcmsAddCmapRec(
+ Display *dpy,
+ Colormap cmap,
+ Window windowID,
+ Visual *visual);
+extern void
+_XcmsRGB_to_XColor(
+ XcmsColor *pColors,
+ XColor *pXColors,
+ unsigned int nColors);
+extern Status
+_XcmsResolveColorString (
+ XcmsCCC ccc,
+ const char **color_string,
+ XcmsColor *pColor_exact_return,
+ XcmsColorFormat result_format);
+extern void
+_XUnresolveColor(
+ XcmsCCC ccc,
+ XColor *pXColor);
+/*
+ * DESCRIPTION
+ * Include file for defining the math macros used in the
+ * XCMS source. Instead of using math library routines
+ * directly, XCMS uses macros so that based on the
+ * definitions here, vendors and sites can specify exactly
+ * what routine will be called (those from libm.a or their
+ * custom routines). If not defined to math library routines
+ * (e.g., sqrt in libm.a), then the client is not forced to
+ * be linked with -lm.
+ */
+
+#define XCMS_ATAN(x) _XcmsArcTangent(x)
+#define XCMS_COS(x) _XcmsCosine(x)
+#define XCMS_CUBEROOT(x) _XcmsCubeRoot(x)
+#define XCMS_FABS(x) ((x) < 0.0 ? -(x) : (x))
+#define XCMS_SIN(x) _XcmsSine(x)
+#define XCMS_SQRT(x) _XcmsSquareRoot(x)
+#define XCMS_TAN(x) (XCMS_SIN(x) / XCMS_COS(x))
+
+double _XcmsArcTangent(double a);
+double _XcmsCosine(double a);
+double _XcmsCubeRoot(double a);
+double _XcmsSine(double a);
+double _XcmsSquareRoot(double a);
+
+/*
+ * DEFINES FOR GAMUT COMPRESSION AND QUERY ROUTINES
+ */
+#ifndef PI
+# ifdef M_PI
+# define PI M_PI
+# else
+# define PI 3.14159265358979323846264338327950
+# endif /* M_PI */
+#endif /* PI */
+#ifndef degrees
+# define degrees(r) ((XcmsFloat)(r) * 180.0 / PI)
+#endif /* degrees */
+#ifndef radians
+# define radians(d) ((XcmsFloat)(d) * PI / 180.0)
+#endif /* radians */
+
+#define XCMS_CIEUSTAROFHUE(h,c) \
+((XCMS_COS((h)) == 0.0) ? (XcmsFloat)0.0 : (XcmsFloat) \
+((XcmsFloat)(c) / (XcmsFloat)XCMS_SQRT((XCMS_TAN(h) * XCMS_TAN(h)) + \
+(XcmsFloat)1.0)))
+#define XCMS_CIEVSTAROFHUE(h,c) \
+((XCMS_COS((h)) == 0.0) ? (XcmsFloat)0.0 : (XcmsFloat) \
+((XcmsFloat)(c) / (XcmsFloat)XCMS_SQRT(((XcmsFloat)1.0 / \
+(XcmsFloat)(XCMS_TAN(h) * XCMS_TAN(h))) + (XcmsFloat)1.0)))
+/* this hue is returned in radians */
+#define XCMS_CIELUV_PMETRIC_HUE(u,v) \
+(((u) != 0.0) ? XCMS_ATAN( (v) / (u)) : ((v >= 0.0) ? PI / 2 : -(PI / 2)))
+#define XCMS_CIELUV_PMETRIC_CHROMA(u,v) XCMS_SQRT(((u)*(u)) + ((v)*(v)))
+
+#define XCMS_CIEASTAROFHUE(h,c) XCMS_CIEUSTAROFHUE((h), (c))
+#define XCMS_CIEBSTAROFHUE(h,c) XCMS_CIEVSTAROFHUE((h), (c))
+#define XCMS_CIELAB_PMETRIC_HUE(a,b) XCMS_CIELUV_PMETRIC_HUE((a), (b))
+#define XCMS_CIELAB_PMETRIC_CHROMA(a,b) XCMS_CIELUV_PMETRIC_CHROMA((a), (b))
+
+#endif /* _XCMSINT_H_ */
|