1 #ifndef HEADER_CRT
2 #define HEADER_CRT
3 /*
4 htop - CRT.h
5 (C) 2004-2011 Hisham H. Muhammad
6 Released under the GNU GPLv2+, see the COPYING file
7 in the source distribution for its full text.
8 */
9 
10 #include "config.h"
11 
12 #include <stdbool.h>
13 
14 #include "Macros.h"
15 #include "ProvideCurses.h"
16 #include "Settings.h"
17 
18 
19 typedef enum TreeStr_ {
20    TREE_STR_VERT,
21    TREE_STR_RTEE,
22    TREE_STR_BEND,
23    TREE_STR_TEND,
24    TREE_STR_OPEN,
25    TREE_STR_SHUT,
26    TREE_STR_ASC,
27    TREE_STR_DESC,
28    LAST_TREE_STR
29 } TreeStr;
30 
31 typedef enum ColorScheme_ {
32    COLORSCHEME_DEFAULT,
33    COLORSCHEME_MONOCHROME,
34    COLORSCHEME_BLACKONWHITE,
35    COLORSCHEME_LIGHTTERMINAL,
36    COLORSCHEME_MIDNIGHT,
37    COLORSCHEME_BLACKNIGHT,
38    COLORSCHEME_BROKENGRAY,
39    LAST_COLORSCHEME
40 } ColorScheme;
41 
42 typedef enum ColorElements_ {
43    RESET_COLOR,
44    DEFAULT_COLOR,
45    FUNCTION_BAR,
46    FUNCTION_KEY,
47    FAILED_SEARCH,
48    FAILED_READ,
49    PAUSED,
50    PANEL_HEADER_FOCUS,
51    PANEL_HEADER_UNFOCUS,
52    PANEL_SELECTION_FOCUS,
53    PANEL_SELECTION_FOLLOW,
54    PANEL_SELECTION_UNFOCUS,
55    LARGE_NUMBER,
56    METER_SHADOW,
57    METER_TEXT,
58    METER_VALUE,
59    METER_VALUE_ERROR,
60    METER_VALUE_IOREAD,
61    METER_VALUE_IOWRITE,
62    METER_VALUE_NOTICE,
63    METER_VALUE_OK,
64    METER_VALUE_WARN,
65    LED_COLOR,
66    UPTIME,
67    BATTERY,
68    TASKS_RUNNING,
69    SWAP,
70    SWAP_CACHE,
71    PROCESS,
72    PROCESS_SHADOW,
73    PROCESS_TAG,
74    PROCESS_MEGABYTES,
75    PROCESS_GIGABYTES,
76    PROCESS_TREE,
77    PROCESS_RUN_STATE,
78    PROCESS_D_STATE,
79    PROCESS_BASENAME,
80    PROCESS_HIGH_PRIORITY,
81    PROCESS_LOW_PRIORITY,
82    PROCESS_NEW,
83    PROCESS_TOMB,
84    PROCESS_THREAD,
85    PROCESS_THREAD_BASENAME,
86    PROCESS_COMM,
87    PROCESS_THREAD_COMM,
88    BAR_BORDER,
89    BAR_SHADOW,
90    GRAPH_1,
91    GRAPH_2,
92    MEMORY_USED,
93    MEMORY_BUFFERS,
94    MEMORY_BUFFERS_TEXT,
95    MEMORY_CACHE,
96    MEMORY_SHARED,
97    HUGEPAGE_1,
98    HUGEPAGE_2,
99    HUGEPAGE_3,
100    HUGEPAGE_4,
101    LOAD,
102    LOAD_AVERAGE_FIFTEEN,
103    LOAD_AVERAGE_FIVE,
104    LOAD_AVERAGE_ONE,
105    CHECK_BOX,
106    CHECK_MARK,
107    CHECK_TEXT,
108    CLOCK,
109    DATE,
110    DATETIME,
111    HELP_BOLD,
112    HELP_SHADOW,
113    HOSTNAME,
114    CPU_NICE,
115    CPU_NICE_TEXT,
116    CPU_NORMAL,
117    CPU_SYSTEM,
118    CPU_IOWAIT,
119    CPU_IRQ,
120    CPU_SOFTIRQ,
121    CPU_STEAL,
122    CPU_GUEST,
123    PRESSURE_STALL_TEN,
124    PRESSURE_STALL_SIXTY,
125    PRESSURE_STALL_THREEHUNDRED,
126    ZFS_MFU,
127    ZFS_MRU,
128    ZFS_ANON,
129    ZFS_HEADER,
130    ZFS_OTHER,
131    ZFS_COMPRESSED,
132    ZFS_RATIO,
133    ZRAM,
134    DYNAMIC_GRAY,
135    DYNAMIC_DARKGRAY,
136    DYNAMIC_RED,
137    DYNAMIC_GREEN,
138    DYNAMIC_BLUE,
139    DYNAMIC_CYAN,
140    DYNAMIC_MAGENTA,
141    DYNAMIC_YELLOW,
142    DYNAMIC_WHITE,
143    LAST_COLORELEMENT
144 } ColorElements;
145 
146 void CRT_fatalError(const char* note) ATTR_NORETURN;
147 
148 void CRT_handleSIGSEGV(int signal) ATTR_NORETURN;
149 
150 #define KEY_WHEELUP   KEY_F(30)
151 #define KEY_WHEELDOWN KEY_F(31)
152 #define KEY_RECLICK   KEY_F(32)
153 #define KEY_ALT(x)    (KEY_F(64 - 26) + ((x) - 'A'))
154 
155 extern const char* CRT_degreeSign;
156 
157 #ifdef HAVE_LIBNCURSESW
158 
159 extern bool CRT_utf8;
160 
161 #endif
162 
163 extern const char* const* CRT_treeStr;
164 
165 extern const int* CRT_colors;
166 
167 extern int CRT_cursorX;
168 
169 extern int CRT_scrollHAmount;
170 
171 extern int CRT_scrollWheelVAmount;
172 
173 extern ColorScheme CRT_colorScheme;
174 
175 void CRT_init(const Settings* settings, bool allowUnicode);
176 
177 void CRT_done(void);
178 
179 void CRT_resetSignalHandlers(void);
180 
181 int CRT_readKey(void);
182 
183 void CRT_disableDelay(void);
184 
185 void CRT_enableDelay(void);
186 
187 void CRT_setColors(int colorScheme);
188 
189 #endif
190