1/* $Xorg: SCCDFile.h,v 1.3 2000/08/17 19:54:13 cpqbld Exp $ */
2/*
3 * (c) Copyright 1990 Tektronix Inc.
4 * 	All Rights Reserved
5 *
6 * Permission to use, copy, modify, and distribute this software and its
7 * documentation for any purpose and without fee is hereby granted,
8 * provided that the above copyright notice appear in all copies and that
9 * both that copyright notice and this permission notice appear in
10 * supporting documentation, and that the name of Tektronix not be used
11 * in advertising or publicity pertaining to distribution of the software
12 * without specific, written prior permission.
13 *
14 * Tektronix disclaims all warranties with regard to this software, including
15 * all implied warranties of merchantability and fitness, in no event shall
16 * Tektronix be liable for any special, indirect or consequential damages or
17 * any damages whatsoever resulting from loss of use, data or profits,
18 * whether in an action of contract, negligence or other tortious action,
19 * arising out of or in connection with the use or performance of this
20 * software.
21 *
22 *
23 *	NAME
24 *		SCCDFile.h
25 *
26 *	DESCRIPTION
27 *		Include file for TekCMS Color Extension when using the
28 *		X Device Color Characterization Convention (XDCCC).
29 *
30 */
31/* $XFree86: xc/programs/xcmsdb/SCCDFile.h,v 1.3 1999/03/02 11:49:36 dawes Exp $ */
32#ifndef SCCDFILE_H
33#define SCCDFILE_H
34
35#include <X11/Xutil.h>
36#include <X11/Xcms.h>
37
38/*
39 *	DEFINES
40 */
41
42#define XDCCC_NUMBER			0x8000000L	/* 2**27 per ICCCM */
43#define XDCCC_MATRIX_ATOM_NAME		"XDCCC_LINEAR_RGB_MATRICES"
44#define XDCCC_CORRECT_ATOM_NAME		"XDCCC_LINEAR_RGB_CORRECTION"
45#define	READABLE_SD_SUFFIX		".txt"
46#define TXT_FORMAT_VERSION		"1.1"
47
48#define	DATA_DELIMS			" \t\n"	/* space, tab, newline */
49
50#define SC_BEGIN_KEYWORD		"SCREENDATA_BEGIN"
51#define SC_END_KEYWORD			"SCREENDATA_END"
52#define COMMENT_KEYWORD			"COMMENT"
53#define NAME_KEYWORD			"NAME"
54#define MODEL_KEYWORD			"MODEL"
55#define PART_NUMBER_KEYWORD		"PART_NUMBER"
56#define SERIAL_NUMBER_KEYWORD		"SERIAL_NUMBER"
57#define REVISION_KEYWORD		"REVISION"
58#define SCREEN_CLASS_KEYWORD		"SCREEN_CLASS"
59#define COLORIMETRIC_BEGIN_KEYWORD	"COLORIMETRIC_BEGIN"
60#define COLORIMETRIC_END_KEYWORD	"COLORIMETRIC_END"
61#define XYZTORGBMAT_BEGIN_KEYWORD	"XYZtoRGB_MATRIX_BEGIN"
62#define XYZTORGBMAT_END_KEYWORD		"XYZtoRGB_MATRIX_END"
63#define RGBTOXYZMAT_BEGIN_KEYWORD	"RGBtoXYZ_MATRIX_BEGIN"
64#define RGBTOXYZMAT_END_KEYWORD		"RGBtoXYZ_MATRIX_END"
65#define IPROFILE_BEGIN_KEYWORD		"INTENSITY_PROFILE_BEGIN"
66#define IPROFILE_END_KEYWORD		"INTENSITY_PROFILE_END"
67#define ITBL_BEGIN_KEYWORD		"INTENSITY_TBL_BEGIN"
68#define ITBL_END_KEYWORD		"INTENSITY_TBL_END"
69
70#define WHITEPT_XYZ_BEGIN_KEYWORD	"WHITEPT_XYZ_BEGIN"
71#define WHITEPT_XYZ_END_KEYWORD		"WHITEPT_XYZ_END"
72
73#define VIDEO_RGB_KEYWORD		"VIDEO_RGB"
74#ifdef GRAY
75#define VIDEO_GRAY_KEYWORD		"VIDEO_GRAY"
76#endif
77
78#define DATA				-1
79#define SC_BEGIN			1
80#define SC_END				2
81#define COMMENT				3
82#define NAME				4
83#define MODEL				5
84#define PART_NUMBER			6
85#define SERIAL_NUMBER			7
86#define REVISION			8
87#define SCREEN_CLASS			9
88#define COLORIMETRIC_BEGIN		10
89#define COLORIMETRIC_END		11
90#define XYZTORGBMAT_BEGIN		12
91#define XYZTORGBMAT_END			13
92#define RGBTOXYZMAT_BEGIN		14
93#define RGBTOXYZMAT_END			15
94#define IPROFILE_BEGIN			16
95#define IPROFILE_END			17
96#define ITBL_BEGIN			18
97#define ITBL_END			19
98#define WHITEPT_XYZ_BEGIN		20
99#define WHITEPT_XYZ_END			21
100
101#define CORR_TYPE_NONE  -1
102#define CORR_TYPE_0	0
103#define CORR_TYPE_1	1
104
105#define VIDEO_RGB	0
106#ifdef GRAY
107#define VIDEO_GRAY	1
108#endif
109
110    /*
111     * Intensity Record (i.e., value / intensity tuple)
112     */
113typedef struct _IntensityRec {
114    unsigned short value;
115    XcmsFloat intensity;
116} IntensityRec;
117
118    /*
119     * Intensity Table
120     */
121typedef struct _IntensityTbl {
122    IntensityRec *pBase;
123    unsigned int nEntries;
124} IntensityTbl;
125
126typedef struct _XDCCC_Matrix {
127    XcmsFloat XYZtoRGBmatrix[3][3];
128    XcmsFloat RGBtoXYZmatrix[3][3];
129} XDCCC_Matrix;
130
131typedef struct _XDCCC_Correction {
132    XVisualInfo		visual_info;
133    long		visual_info_mask;
134    int			tableType;
135    int			nTables;
136    IntensityTbl*	pRedTbl;
137    IntensityTbl*	pGreenTbl;
138    IntensityTbl*	pBlueTbl;
139    struct _XDCCC_Correction*	next;
140} XDCCC_Correction;
141
142extern int LoadSCCData(Display *pDpy, int screenNumber, const char *filename,
143		       int targetFormat);
144
145#endif /* SCCDFILE_H */
146