summaryrefslogtreecommitdiff
path: root/spectro/disptechs.h
blob: 9860eac2accb6b95017e94245cd552ad136cd80e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151

#ifndef DISPTYPES_H

 /* Standardized display types for use with libinst */

/* 
 * Argyll Color Correction System
 *
 * Author: Graeme W. Gill
 * Date:   14/5/2014
 *
 * Copyright 2014 Graeme W. Gill
 * All rights reserved.
 *
 * This material is licenced under the GNU GENERAL PUBLIC LICENSE Version 2 or later :-
 * see the License2.txt file for licencing details.
 *
 */

#ifdef __cplusplus
	extern "C" {
#endif

/* See <http://www.tftcentral.co.uk/> for some numbers on response times */

/* These are intended to be conservative numbers for 90% transition times */
/* The settling model will compute the time necessary for a 0.1 dE error */
/* from this using an exponenial decay model. */ 

#define DISPTECH_WORST_RISE 0.100
#define DISPTECH_WORST_FALL 0.250

#define DISPTECH_CRT_RISE 0.040
#define DISPTECH_CRT_FALL 0.250

#define DISPTECH_LCD_RISE 0.100
#define DISPTECH_LCD_FALL 0.050

#define DISPTECH_LED_RISE 0.001
#define DISPTECH_LED_FALL 0.001

#define DISPTECH_DLP_RISE 0.002
#define DISPTECH_DLP_FALL 0.002

/* Type of display technology */
typedef enum {

	disptech_unknown            = 0x0000,		/* Unknown dislay type */

	disptech_none               = 0x0001,		/* display type is inaplicable (ie. ambient) */

	disptech_crt                = 0x1000,		/* Generic CRT */

	disptech_plasma             = 0x2000,		/* Generic Plasma */

	disptech_lcd                = 0x3000,		/* Generic LCD */

	disptech_lcd_ccfl           = 0x3100,		/* LCD with CCFL */
	disptech_lcd_ccfl_ips       = 0x3110,		/* IPS LCD with CCFL */
	disptech_lcd_ccfl_vpa       = 0x3120,		/* VPA LCD with CCFL */
	disptech_lcd_ccfl_tft       = 0x3130,		/* TFT LCD with CCFL */

	disptech_lcd_ccfl_wg        = 0x3200,		/* Wide gamut LCD with CCFL */
	disptech_lcd_ccfl_wg_ips    = 0x3210,		/* IPS wide gamut LCD with CCFL */
	disptech_lcd_ccfl_wg_vpa    = 0x3220,		/* VPA wide gamut LCD with CCFL */
	disptech_lcd_ccfl_wg_tft    = 0x3230,		/* TFT wide gamut LCD with CCFL */
	
	disptech_lcd_wled           = 0x3300,		/* LCD with white LED */
	disptech_lcd_wled_ips       = 0x3310,		/* IPS LCD with white LED */
	disptech_lcd_wled_vpa       = 0x3320,		/* VPA LCD with white LED */
	disptech_lcd_wled_tft       = 0x3330,		/* TFT LCD with white LED */

	disptech_lcd_rgbled         = 0x3400,		/* LCD with RGB LED */
	disptech_lcd_rgbled_ips     = 0x3410,		/* IPS LCD with RGB LED */
	disptech_lcd_rgbled_vpa     = 0x3420,		/* VPA LCD with RGB LED */
	disptech_lcd_rgbled_tft     = 0x3430,		/* TFT LCD with RGB LED */

	disptech_lcd_rgledp         = 0x3500,		/* IPS LCD with RG LED + Phosphor */
	disptech_lcd_rgledp_ips     = 0x3510,		/* IPS LCD with RG LED + Phosphor */
	disptech_lcd_rgledp_vpa     = 0x3520,		/* VPA LCD with RG LED + Phosphor */
	disptech_lcd_rgledp_tft     = 0x3530,		/* TFT LCD with RG LED + Phosphor */

	disptech_oled               = 0x4000,		/* Organic LED */
	disptech_amoled             = 0x4010,		/* Active Matrix Organic LED */

	disptech_dlp                = 0x5000,		/* Generic Digital Light Processing projector */
	disptech_dlp_rgb            = 0x5010,		/* DLP projector with RGB filter */
	disptech_dlp_rgbw           = 0x5020,		/* DLP projector with RGBW filter */
	disptech_dlp_rgbcmy         = 0x5030,		/* DLP projector with RGBCMY filter */

	disptech_end                = 0xffffffff	/* List end marker */
	
} disptech;

#ifdef __cplusplus
	}
#endif

/* Information defined by instrument type */
struct _disptech_info {

	disptech dtech;			/* Enumeration */

	char *strid;			/* String ID */
	char *desc;				/* Desciption and identification string */

	int  refr;				/* Refresh mode flag */

	double rise_time;		/* rise time to 90% in seconds */
	double fall_time;		/* fall time to 90% in seconds */

	char *sel;				/* Default command line selector (may be NULL) */

  /* Private: */

	char lsel[10];			/* Unique list selector for ui */
	char isel[10];			/* Candidate selectors */

}; typedef struct _disptech_info disptech_info;


/* Given the enum id, return the matching disptech_info entry */
/* Return the disptech_unknown entry if not matched */
disptech_info *disptech_get_id(disptech id);

/* Given the string id, return the matching disptech_info entry */
/* Return the disptech_unknown entry if not matched */
disptech_info *disptech_get_strid(char *strid);

/* Return the display tech list with unique lsel lectors */
disptech_info *disptech_get_list();

/* Locate the display list item that matches the given selector. */
/* Return NULL if not found */
disptech_info *disptech_select(disptech_info *list, char c);

/* - - - - - - - - - - - */

/* utility function, used by disptech_get_list & inst_creat_disptype_list()  */
/* See disptechs.c for parameter description. */
void disptechs_set_sel(int flag, int ix, char *osel, char *isel, char *usels, int *k, char *asels);

/* - - - - - - - - - - */
/* Display settling time model */

double disp_settle_time(double *orgb, double *nrgb, double rise, double fall, double dE);


#define DISPTYPES_H
#endif /* DISPTYPES_H */