1 /* vim:tw=78:ts=8:sw=4:set ft=c: */
3 Copyright (C) 2002-2015 Ben Kibbey <bjk@luxsci.net>
5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 2 of the License, or
8 (at your option) any later version.
10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details.
15 You should have received a copy of the GNU General Public License
16 along with this program; if not, write to the Free Software
17 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
32 * Looks for a matching color pair or creates a new color pair if not found.
34 static chtype
find_cp(short fg
, short bg
, attr_t attrs
)
39 for (i
= 1; i
< COLOR_PAIRS
; i
++) {
40 pair_content(i
, &xfg
, &xbg
);
42 if (xfg
== fg
&& xbg
== bg
)
43 return COLOR_PAIR(i
) | attrs
;
46 init_pair(next_cp
, fg
, bg
);
47 return COLOR_PAIR(next_cp
++) | attrs
;
51 * Mixes two color pairs' fg and bg colors determined by 'which'.
53 chtype
mix_cp(chtype a
, chtype b
, attr_t attrs
, int which
)
58 pair_content(PAIR_NUMBER(a
), &afg
, &abg
);
59 pair_content(PAIR_NUMBER(b
), &bfg
, &bbg
);
63 return find_cp(afg
, bbg
, attrs
);
65 return find_cp(afg
, bfg
, attrs
);
67 return find_cp(abg
, bbg
, attrs
);
69 return find_cp(bfg
, abg
, attrs
);
71 return find_cp(bbg
, bfg
, attrs
);
73 return find_cp(abg
, afg
, attrs
);
75 return find_cp(bbg
, afg
, attrs
);
81 void init_color_pairs()
85 init_pair(next_cp
++, config
.color
[CONF_BCOORDS
].fg
,
86 config
.color
[CONF_BCOORDS
].bg
);
87 init_pair(next_cp
++, config
.color
[CONF_BGRAPHICS
].fg
,
88 config
.color
[CONF_BGRAPHICS
].bg
);
89 init_pair(next_cp
++, config
.color
[CONF_BWHITE
].fg
,
90 config
.color
[CONF_BWHITE
].bg
);
91 init_pair(next_cp
++, config
.color
[CONF_BBLACK
].fg
,
92 config
.color
[CONF_BBLACK
].bg
);
93 init_pair(next_cp
++, config
.color
[CONF_BSELECTED
].fg
,
94 config
.color
[CONF_BSELECTED
].bg
);
95 init_pair(next_cp
++, config
.color
[CONF_BCURSOR
].fg
,
96 config
.color
[CONF_BCURSOR
].bg
);
97 init_pair(next_cp
++, config
.color
[CONF_SWINDOW
].fg
,
98 config
.color
[CONF_SWINDOW
].bg
);
99 init_pair(next_cp
++, config
.color
[CONF_SBORDER
].fg
,
100 config
.color
[CONF_SBORDER
].bg
);
101 init_pair(next_cp
++, config
.color
[CONF_STITLE
].fg
,
102 config
.color
[CONF_STITLE
].bg
);
103 init_pair(next_cp
++, config
.color
[CONF_SENGINE
].fg
,
104 config
.color
[CONF_SENGINE
].bg
);
105 init_pair(next_cp
++, config
.color
[CONF_SNOTIFY
].fg
,
106 config
.color
[CONF_SNOTIFY
].bg
);
107 init_pair(next_cp
++, config
.color
[CONF_TWINDOW
].fg
,
108 config
.color
[CONF_TWINDOW
].bg
);
109 init_pair(next_cp
++, config
.color
[CONF_TBORDER
].fg
,
110 config
.color
[CONF_TBORDER
].bg
);
111 init_pair(next_cp
++, config
.color
[CONF_TTITLE
].fg
,
112 config
.color
[CONF_TTITLE
].bg
);
113 init_pair(next_cp
++, config
.color
[CONF_HWINDOW
].fg
,
114 config
.color
[CONF_HWINDOW
].bg
);
115 init_pair(next_cp
++, config
.color
[CONF_HBORDER
].fg
,
116 config
.color
[CONF_HBORDER
].bg
);
117 init_pair(next_cp
++, config
.color
[CONF_HTITLE
].fg
,
118 config
.color
[CONF_HTITLE
].bg
);
119 init_pair(next_cp
++, config
.color
[CONF_MWINDOW
].fg
,
120 config
.color
[CONF_MWINDOW
].bg
);
121 init_pair(next_cp
++, config
.color
[CONF_MBORDER
].fg
,
122 config
.color
[CONF_MBORDER
].bg
);
123 init_pair(next_cp
++, config
.color
[CONF_MTITLE
].fg
,
124 config
.color
[CONF_MTITLE
].bg
);
125 init_pair(next_cp
++, config
.color
[CONF_MPROMPT
].fg
,
126 config
.color
[CONF_MPROMPT
].bg
);
127 init_pair(next_cp
++, config
.color
[CONF_IWINDOW
].fg
,
128 config
.color
[CONF_IWINDOW
].bg
);
129 init_pair(next_cp
++, config
.color
[CONF_IBORDER
].fg
,
130 config
.color
[CONF_IBORDER
].bg
);
131 init_pair(next_cp
++, config
.color
[CONF_ITITLE
].fg
,
132 config
.color
[CONF_ITITLE
].bg
);
133 init_pair(next_cp
++, config
.color
[CONF_IPROMPT
].fg
,
134 config
.color
[CONF_IPROMPT
].bg
);
135 init_pair(next_cp
++, config
.color
[CONF_BMOVESW
].fg
,
136 config
.color
[CONF_BMOVESW
].bg
);
137 init_pair(next_cp
++, config
.color
[CONF_BMOVESB
].fg
,
138 config
.color
[CONF_BMOVESB
].bg
);
139 init_pair(next_cp
++, config
.color
[CONF_BCOUNT
].fg
,
140 config
.color
[CONF_BCOUNT
].bg
);
141 init_pair(next_cp
++, config
.color
[CONF_BDWINDOW
].fg
,
142 config
.color
[CONF_BDWINDOW
].bg
);
143 init_pair(next_cp
++, config
.color
[CONF_MENU
].fg
,
144 config
.color
[CONF_MENU
].bg
);
145 init_pair(next_cp
++, config
.color
[CONF_MENUS
].fg
,
146 config
.color
[CONF_MENUS
].bg
);
147 init_pair(next_cp
++, config
.color
[CONF_MENUH
].fg
,
148 config
.color
[CONF_MENUH
].bg
);
149 init_pair(next_cp
++, config
.color
[CONF_HISTORY_MENU_LG
].fg
,
150 config
.color
[CONF_HISTORY_MENU_LG
].bg
);
153 * These are not configurable. They are the color pairs that are mixed
154 * with the background of the current square and foreground of the current
155 * piece. See draw_board() for details.
157 init_pair(next_cp
++, config
.color
[CONF_BWHITE
].fg
,
158 config
.color
[CONF_BWHITE
].bg
);
159 init_pair(next_cp
++, config
.color
[CONF_BBLACK
].fg
,
160 config
.color
[CONF_BWHITE
].bg
);
161 init_pair(next_cp
++, config
.color
[CONF_BBLACK
].fg
,
162 config
.color
[CONF_BBLACK
].bg
);
163 init_pair(next_cp
++, config
.color
[CONF_BWHITE
].fg
,
164 config
.color
[CONF_BBLACK
].bg
);
166 init_pair(next_cp
++, config
.color
[CONF_BCASTLING
].fg
,
167 config
.color
[CONF_BCASTLING
].bg
);
168 init_pair(next_cp
++, config
.color
[CONF_BENPASSANT
].fg
,
169 config
.color
[CONF_BENPASSANT
].bg
);
170 init_pair(next_cp
++, config
.color
[CONF_BATTACK
].fg
,
171 config
.color
[CONF_BATTACK
].bg
);
172 init_pair(next_cp
++, config
.color
[CONF_BPREVMOVE
].fg
,
173 config
.color
[CONF_BPREVMOVE
].bg
);
176 void set_default_colors()
178 config
.color
[CONF_BDWINDOW
].fg
= COLOR_WHITE
;
179 config
.color
[CONF_BDWINDOW
].bg
= COLOR_BLACK
;
180 config
.color
[CONF_BCOORDS
].fg
= COLOR_YELLOW
;
181 config
.color
[CONF_BCOORDS
].bg
= COLOR_BLACK
;
182 config
.color
[CONF_BMOVESW
].fg
= COLOR_WHITE
;
183 config
.color
[CONF_BMOVESW
].bg
= COLOR_WHITE
;
184 config
.color
[CONF_BMOVESW
].nattrs
= A_REVERSE
;
185 config
.color
[CONF_BMOVESB
].fg
= COLOR_WHITE
;
186 config
.color
[CONF_BMOVESB
].bg
= COLOR_BLUE
;
187 config
.color
[CONF_BMOVESB
].nattrs
= A_REVERSE
;
188 config
.color
[CONF_BCOUNT
].fg
= COLOR_MAGENTA
;
189 config
.color
[CONF_BCOUNT
].bg
= COLOR_CYAN
;
190 config
.color
[CONF_BCOUNT
].attrs
= A_BOLD
;
191 config
.color
[CONF_BCOUNT
].nattrs
= A_REVERSE
;
192 config
.color
[CONF_BGRAPHICS
].fg
= COLOR_WHITE
;
193 config
.color
[CONF_BGRAPHICS
].bg
= COLOR_BLACK
;
194 config
.color
[CONF_BWHITE
].fg
= COLOR_WHITE
;
195 config
.color
[CONF_BWHITE
].bg
= COLOR_RED
;
196 config
.color
[CONF_BWHITE
].nattrs
= A_REVERSE
;
197 config
.color
[CONF_BBLACK
].fg
= COLOR_CYAN
;
198 config
.color
[CONF_BBLACK
].bg
= COLOR_BLACK
;
199 config
.color
[CONF_BSELECTED
].fg
= COLOR_WHITE
;
200 config
.color
[CONF_BSELECTED
].bg
= COLOR_YELLOW
;
201 config
.color
[CONF_BSELECTED
].nattrs
= A_BOLD
|A_REVERSE
;
202 config
.color
[CONF_BCURSOR
].fg
= COLOR_WHITE
;
203 config
.color
[CONF_BCURSOR
].bg
= COLOR_GREEN
;
204 config
.color
[CONF_BCURSOR
].nattrs
= A_BOLD
|A_REVERSE
;
205 config
.color
[CONF_SWINDOW
].fg
= COLOR_WHITE
;
206 config
.color
[CONF_SWINDOW
].bg
= COLOR_BLACK
;
207 config
.color
[CONF_SBORDER
].fg
= COLOR_CYAN
;
208 config
.color
[CONF_SBORDER
].bg
= COLOR_BLACK
;
209 config
.color
[CONF_STITLE
].fg
= COLOR_WHITE
;
210 config
.color
[CONF_STITLE
].bg
= COLOR_BLUE
;
211 config
.color
[CONF_STITLE
].nattrs
= A_REVERSE
;
212 config
.color
[CONF_SENGINE
].fg
= COLOR_YELLOW
;
213 config
.color
[CONF_SENGINE
].bg
= COLOR_BLACK
;
214 config
.color
[CONF_SENGINE
].nattrs
= A_BOLD
;
215 config
.color
[CONF_SNOTIFY
].fg
= COLOR_GREEN
;
216 config
.color
[CONF_SNOTIFY
].bg
= COLOR_BLACK
;
217 config
.color
[CONF_SNOTIFY
].nattrs
= A_BOLD
;
218 config
.color
[CONF_TWINDOW
].fg
= COLOR_WHITE
;
219 config
.color
[CONF_TWINDOW
].bg
= COLOR_BLACK
;
220 config
.color
[CONF_TBORDER
].fg
= COLOR_CYAN
;
221 config
.color
[CONF_TBORDER
].bg
= COLOR_BLACK
;
222 config
.color
[CONF_TTITLE
].fg
= COLOR_WHITE
;
223 config
.color
[CONF_TTITLE
].bg
= COLOR_BLUE
;
224 config
.color
[CONF_TTITLE
].nattrs
= A_REVERSE
;
225 config
.color
[CONF_HWINDOW
].fg
= COLOR_WHITE
;
226 config
.color
[CONF_HWINDOW
].bg
= COLOR_BLACK
;
227 config
.color
[CONF_HBORDER
].fg
= COLOR_CYAN
;
228 config
.color
[CONF_HBORDER
].bg
= COLOR_BLACK
;
229 config
.color
[CONF_HTITLE
].fg
= COLOR_WHITE
;
230 config
.color
[CONF_HTITLE
].bg
= COLOR_BLUE
;
231 config
.color
[CONF_HTITLE
].nattrs
= A_REVERSE
;
232 config
.color
[CONF_MWINDOW
].fg
= COLOR_WHITE
;
233 config
.color
[CONF_MWINDOW
].bg
= COLOR_BLACK
;
234 config
.color
[CONF_MBORDER
].fg
= COLOR_CYAN
;
235 config
.color
[CONF_MBORDER
].bg
= COLOR_BLACK
;
236 config
.color
[CONF_MTITLE
].fg
= COLOR_WHITE
;
237 config
.color
[CONF_MTITLE
].bg
= COLOR_MAGENTA
;
238 config
.color
[CONF_MTITLE
].nattrs
= A_REVERSE
;
239 config
.color
[CONF_MPROMPT
].fg
= COLOR_WHITE
;
240 config
.color
[CONF_MPROMPT
].bg
= COLOR_MAGENTA
;
241 config
.color
[CONF_MPROMPT
].nattrs
= A_BOLD
;
242 config
.color
[CONF_IWINDOW
].fg
= COLOR_WHITE
;
243 config
.color
[CONF_IWINDOW
].bg
= COLOR_BLACK
;
244 config
.color
[CONF_IBORDER
].fg
= COLOR_CYAN
;
245 config
.color
[CONF_IBORDER
].bg
= COLOR_BLACK
;
246 config
.color
[CONF_ITITLE
].fg
= COLOR_WHITE
;
247 config
.color
[CONF_ITITLE
].bg
= COLOR_MAGENTA
;
248 config
.color
[CONF_ITITLE
].nattrs
= A_REVERSE
;
249 config
.color
[CONF_IPROMPT
].fg
= COLOR_WHITE
;
250 config
.color
[CONF_IPROMPT
].bg
= COLOR_MAGENTA
;
251 config
.color
[CONF_IPROMPT
].nattrs
= A_BOLD
;
252 config
.color
[CONF_MENU
].fg
= COLOR_WHITE
;
253 config
.color
[CONF_MENU
].bg
= COLOR_BLACK
;
254 config
.color
[CONF_MENUS
].fg
= COLOR_WHITE
;
255 config
.color
[CONF_MENUS
].bg
= COLOR_RED
;
256 config
.color
[CONF_MENUS
].nattrs
= A_BOLD
;
257 config
.color
[CONF_MENUH
].fg
= COLOR_BLUE
;
258 config
.color
[CONF_MENUH
].bg
= COLOR_YELLOW
;
259 config
.color
[CONF_MENUH
].nattrs
= A_BOLD
;
260 config
.color
[CONF_HISTORY_MENU_LG
].fg
= COLOR_GREEN
;
261 config
.color
[CONF_HISTORY_MENU_LG
].bg
= COLOR_BLACK
;
262 config
.color
[CONF_BCASTLING
].fg
= COLOR_YELLOW
;
263 config
.color
[CONF_BCASTLING
].bg
= COLOR_BLACK
;
264 config
.color
[CONF_BCASTLING
].attrs
= A_BOLD
;
265 config
.color
[CONF_BCASTLING
].nattrs
= A_BOLD
;
266 config
.color
[CONF_BENPASSANT
].fg
= COLOR_MAGENTA
;
267 config
.color
[CONF_BENPASSANT
].bg
= COLOR_BLACK
;
268 config
.color
[CONF_BENPASSANT
].attrs
= A_BOLD
;
269 config
.color
[CONF_BENPASSANT
].nattrs
= A_BOLD
;
270 config
.color
[CONF_BATTACK
].fg
= COLOR_BLUE
;
271 config
.color
[CONF_BATTACK
].bg
= COLOR_BLACK
;
272 config
.color
[CONF_BATTACK
].attrs
= A_BOLD
|A_BLINK
;
273 config
.color
[CONF_BATTACK
].nattrs
= A_REVERSE
;
274 config
.color
[CONF_BPREVMOVE
].fg
= COLOR_WHITE
;
275 config
.color
[CONF_BPREVMOVE
].bg
= COLOR_MAGENTA
;
276 config
.color
[CONF_BPREVMOVE
].nattrs
= A_BOLD
|A_REVERSE
;