1 2 #ifndef DISPTYPES_H 3 4 /* Standardized display types for use with libinst */ 5 6 /* 7 * Argyll Color Correction System 8 * 9 * Author: Graeme W. Gill 10 * Date: 14/5/2014 11 * 12 * Copyright 2014 Graeme W. Gill 13 * All rights reserved. 14 * 15 * This material is licenced under the GNU GENERAL PUBLIC LICENSE Version 2 or later :- 16 * see the License2.txt file for licencing details. 17 * 18 */ 19 20 #ifdef __cplusplus 21 extern "C" { 22 #endif 23 24 /* See <http://www.tftcentral.co.uk/> for some numbers on response times */ 25 26 /* These are intended to be conservative numbers for 90% transition times */ 27 /* The settling model will compute the time necessary for a 0.1 dE error */ 28 /* from this using an exponenial decay model. */ 29 30 #define DISPTECH_WORST_RISE 0.100 31 #define DISPTECH_WORST_FALL 0.250 32 33 #define DISPTECH_CRT_RISE 0.040 34 #define DISPTECH_CRT_FALL 0.250 35 36 #define DISPTECH_LCD_RISE 0.100 37 #define DISPTECH_LCD_FALL 0.050 38 39 #define DISPTECH_LED_RISE 0.001 40 #define DISPTECH_LED_FALL 0.001 41 42 #define DISPTECH_DLP_RISE 0.002 43 #define DISPTECH_DLP_FALL 0.002 44 45 /* Type of display technology */ 46 typedef enum { 47 48 disptech_unknown = 0x0000, /* Unknown dislay type */ 49 50 disptech_none = 0x0001, /* display type is inaplicable (ie. ambient) */ 51 52 disptech_crt = 0x1000, /* Generic CRT */ 53 54 disptech_plasma = 0x2000, /* Generic Plasma */ 55 56 disptech_lcd = 0x3000, /* Generic LCD */ 57 58 disptech_lcd_ccfl = 0x3100, /* LCD with CCFL */ 59 disptech_lcd_ccfl_ips = 0x3110, /* IPS LCD with CCFL */ 60 disptech_lcd_ccfl_vpa = 0x3120, /* VPA LCD with CCFL */ 61 disptech_lcd_ccfl_tft = 0x3130, /* TFT LCD with CCFL */ 62 63 disptech_lcd_ccfl_wg = 0x3200, /* Wide gamut LCD with CCFL */ 64 disptech_lcd_ccfl_wg_ips = 0x3210, /* IPS wide gamut LCD with CCFL */ 65 disptech_lcd_ccfl_wg_vpa = 0x3220, /* VPA wide gamut LCD with CCFL */ 66 disptech_lcd_ccfl_wg_tft = 0x3230, /* TFT wide gamut LCD with CCFL */ 67 68 disptech_lcd_wled = 0x3300, /* LCD with white LED */ 69 disptech_lcd_wled_ips = 0x3310, /* IPS LCD with white LED */ 70 disptech_lcd_wled_vpa = 0x3320, /* VPA LCD with white LED */ 71 disptech_lcd_wled_tft = 0x3330, /* TFT LCD with white LED */ 72 73 disptech_lcd_rgbled = 0x3400, /* LCD with RGB LED */ 74 disptech_lcd_rgbled_ips = 0x3410, /* IPS LCD with RGB LED */ 75 disptech_lcd_rgbled_vpa = 0x3420, /* VPA LCD with RGB LED */ 76 disptech_lcd_rgbled_tft = 0x3430, /* TFT LCD with RGB LED */ 77 78 disptech_lcd_rgledp = 0x3500, /* IPS LCD with RG LED + Phosphor */ 79 disptech_lcd_rgledp_ips = 0x3510, /* IPS LCD with RG LED + Phosphor */ 80 disptech_lcd_rgledp_vpa = 0x3520, /* VPA LCD with RG LED + Phosphor */ 81 disptech_lcd_rgledp_tft = 0x3530, /* TFT LCD with RG LED + Phosphor */ 82 83 disptech_oled = 0x4000, /* Organic LED */ 84 disptech_amoled = 0x4010, /* Active Matrix Organic LED */ 85 86 disptech_dlp = 0x5000, /* Generic Digital Light Processing projector */ 87 disptech_dlp_rgb = 0x5010, /* DLP projector with RGB filter */ 88 disptech_dlp_rgbw = 0x5020, /* DLP projector with RGBW filter */ 89 disptech_dlp_rgbcmy = 0x5030, /* DLP projector with RGBCMY filter */ 90 91 disptech_end = 0xffffffff /* List end marker */ 92 93 } disptech; 94 95 #ifdef __cplusplus 96 } 97 #endif 98 99 /* Information defined by instrument type */ 100 struct _disptech_info { 101 102 disptech dtech; /* Enumeration */ 103 104 char *strid; /* String ID */ 105 char *desc; /* Desciption and identification string */ 106 107 int refr; /* Refresh mode flag */ 108 109 double rise_time; /* rise time to 90% in seconds */ 110 double fall_time; /* fall time to 90% in seconds */ 111 112 char *sel; /* Default command line selector (may be NULL) */ 113 114 /* Private: */ 115 116 char lsel[10]; /* Unique list selector for ui */ 117 char isel[10]; /* Candidate selectors */ 118 119 }; typedef struct _disptech_info disptech_info; 120 121 122 /* Given the enum id, return the matching disptech_info entry */ 123 /* Return the disptech_unknown entry if not matched */ 124 disptech_info *disptech_get_id(disptech id); 125 126 /* Given the string id, return the matching disptech_info entry */ 127 /* Return the disptech_unknown entry if not matched */ 128 disptech_info *disptech_get_strid(char *strid); 129 130 /* Return the display tech list with unique lsel lectors */ 131 disptech_info *disptech_get_list(); 132 133 /* Locate the display list item that matches the given selector. */ 134 /* Return NULL if not found */ 135 disptech_info *disptech_select(disptech_info *list, char c); 136 137 /* - - - - - - - - - - - */ 138 139 /* utility function, used by disptech_get_list & inst_creat_disptype_list() */ 140 /* See disptechs.c for parameter description. */ 141 void disptechs_set_sel(int flag, int ix, char *osel, char *isel, char *usels, int *k, char *asels); 142 143 /* - - - - - - - - - - */ 144 /* Display settling time model */ 145 146 double disp_settle_time(double *orgb, double *nrgb, double rise, double fall, double dE); 147 148 149 #define DISPTYPES_H 150 #endif /* DISPTYPES_H */ 151 152