1c76f0793SBaptiste Daroussin /*-
2c76f0793SBaptiste Daroussin * SPDX-License-Identifier: BSD-2-Clause
3c76f0793SBaptiste Daroussin *
4*61ba55bcSBaptiste Daroussin * Copyright (c) 2021-2023 Alfonso Sabato Siciliano
5c76f0793SBaptiste Daroussin *
6c76f0793SBaptiste Daroussin * Redistribution and use in source and binary forms, with or without
7c76f0793SBaptiste Daroussin * modification, are permitted provided that the following conditions
8c76f0793SBaptiste Daroussin * are met:
9c76f0793SBaptiste Daroussin * 1. Redistributions of source code must retain the above copyright
10c76f0793SBaptiste Daroussin * notice, this list of conditions and the following disclaimer.
11c76f0793SBaptiste Daroussin * 2. Redistributions in binary form must reproduce the above copyright
12c76f0793SBaptiste Daroussin * notice, this list of conditions and the following disclaimer in the
13c76f0793SBaptiste Daroussin * documentation and/or other materials provided with the distribution.
14c76f0793SBaptiste Daroussin *
15c76f0793SBaptiste Daroussin * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
16c76f0793SBaptiste Daroussin * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17c76f0793SBaptiste Daroussin * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18c76f0793SBaptiste Daroussin * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
19c76f0793SBaptiste Daroussin * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
20c76f0793SBaptiste Daroussin * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
21c76f0793SBaptiste Daroussin * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
22c76f0793SBaptiste Daroussin * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
23c76f0793SBaptiste Daroussin * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
24c76f0793SBaptiste Daroussin * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
25c76f0793SBaptiste Daroussin * SUCH DAMAGE.
26c76f0793SBaptiste Daroussin */
27c76f0793SBaptiste Daroussin
28263660c0SAlfonso Siciliano #include <curses.h>
29c76f0793SBaptiste Daroussin
30c76f0793SBaptiste Daroussin #include "bsddialog.h"
31c76f0793SBaptiste Daroussin #include "bsddialog_theme.h"
32263660c0SAlfonso Siciliano #include "lib_util.h"
33c76f0793SBaptiste Daroussin
34c76f0793SBaptiste Daroussin #define GET_COLOR(bg, fg) (COLOR_PAIR(bg * 8 + fg +1))
35*61ba55bcSBaptiste Daroussin #define WHITE GET_COLOR(COLOR_WHITE, COLOR_BLACK)
36*61ba55bcSBaptiste Daroussin #define BLACK GET_COLOR(COLOR_WHITE, COLOR_BLACK) | A_REVERSE
37*61ba55bcSBaptiste Daroussin #define NFLAGS 6
38c76f0793SBaptiste Daroussin
39c76f0793SBaptiste Daroussin struct bsddialog_theme t;
40b319d934SAlfonso S. Siciliano bool hastermcolors;
41c76f0793SBaptiste Daroussin
42*61ba55bcSBaptiste Daroussin struct flag_converter {
43*61ba55bcSBaptiste Daroussin unsigned int public;
44*61ba55bcSBaptiste Daroussin unsigned int private;
45*61ba55bcSBaptiste Daroussin };
468c4f4028SBaptiste Daroussin
47*61ba55bcSBaptiste Daroussin static struct flag_converter flagconv[NFLAGS] = {
48*61ba55bcSBaptiste Daroussin {BSDDIALOG_BLINK, A_BLINK},
49*61ba55bcSBaptiste Daroussin {BSDDIALOG_BOLD, A_BOLD},
50*61ba55bcSBaptiste Daroussin {BSDDIALOG_HALFBRIGHT, A_DIM},
51*61ba55bcSBaptiste Daroussin {BSDDIALOG_HIGHLIGHT, A_STANDOUT},
52*61ba55bcSBaptiste Daroussin {BSDDIALOG_REVERSE, A_REVERSE},
53*61ba55bcSBaptiste Daroussin {BSDDIALOG_UNDERLINE, A_UNDERLINE}
54c76f0793SBaptiste Daroussin };
55c76f0793SBaptiste Daroussin
56c76f0793SBaptiste Daroussin static struct bsddialog_theme blackwhite = {
57*61ba55bcSBaptiste Daroussin .screen.color = WHITE,
588c4f4028SBaptiste Daroussin
59f499134dSBaptiste Daroussin .shadow.color = GET_COLOR(COLOR_BLACK, COLOR_BLACK),
60b319d934SAlfonso S. Siciliano .shadow.y = 1,
61b319d934SAlfonso S. Siciliano .shadow.x = 2,
62c76f0793SBaptiste Daroussin
638c4f4028SBaptiste Daroussin .dialog.delimtitle = true,
64*61ba55bcSBaptiste Daroussin .dialog.titlecolor = WHITE,
65*61ba55bcSBaptiste Daroussin .dialog.lineraisecolor = WHITE,
66*61ba55bcSBaptiste Daroussin .dialog.linelowercolor = WHITE,
67*61ba55bcSBaptiste Daroussin .dialog.color = WHITE,
68*61ba55bcSBaptiste Daroussin .dialog.bottomtitlecolor = WHITE,
69*61ba55bcSBaptiste Daroussin .dialog.arrowcolor = WHITE,
70c76f0793SBaptiste Daroussin
71*61ba55bcSBaptiste Daroussin .menu.f_prefixcolor = WHITE,
72*61ba55bcSBaptiste Daroussin .menu.prefixcolor = WHITE,
73*61ba55bcSBaptiste Daroussin .menu.f_selectorcolor = BLACK,
74*61ba55bcSBaptiste Daroussin .menu.selectorcolor = WHITE,
75*61ba55bcSBaptiste Daroussin .menu.f_desccolor = BLACK,
76*61ba55bcSBaptiste Daroussin .menu.desccolor = WHITE,
77*61ba55bcSBaptiste Daroussin .menu.f_namecolor = BLACK,
78*61ba55bcSBaptiste Daroussin .menu.namecolor = WHITE,
79*61ba55bcSBaptiste Daroussin .menu.f_shortcutcolor = BLACK | A_UNDERLINE,
80*61ba55bcSBaptiste Daroussin .menu.shortcutcolor = WHITE | A_UNDERLINE,
81*61ba55bcSBaptiste Daroussin .menu.bottomdesccolor = WHITE,
82*61ba55bcSBaptiste Daroussin .menu.sepnamecolor = WHITE,
83*61ba55bcSBaptiste Daroussin .menu.sepdesccolor = WHITE,
84c76f0793SBaptiste Daroussin
85*61ba55bcSBaptiste Daroussin .form.f_fieldcolor = BLACK,
86*61ba55bcSBaptiste Daroussin .form.fieldcolor = WHITE,
87*61ba55bcSBaptiste Daroussin .form.readonlycolor = WHITE,
88*61ba55bcSBaptiste Daroussin .form.bottomdesccolor = WHITE,
89c76f0793SBaptiste Daroussin
90*61ba55bcSBaptiste Daroussin .bar.f_color = BLACK,
91*61ba55bcSBaptiste Daroussin .bar.color = WHITE,
92c76f0793SBaptiste Daroussin
93b319d934SAlfonso S. Siciliano .button.minmargin = 1,
94b319d934SAlfonso S. Siciliano .button.maxmargin = 5,
95bce40c02SAlfonso S. Siciliano .button.leftdelim = '[',
96bce40c02SAlfonso S. Siciliano .button.rightdelim = ']',
97*61ba55bcSBaptiste Daroussin .button.f_delimcolor = WHITE,
98*61ba55bcSBaptiste Daroussin .button.delimcolor = WHITE,
99*61ba55bcSBaptiste Daroussin .button.f_color = BLACK,
100*61ba55bcSBaptiste Daroussin .button.color = WHITE,
101*61ba55bcSBaptiste Daroussin .button.f_shortcutcolor = BLACK | A_UNDERLINE | A_BOLD,
102*61ba55bcSBaptiste Daroussin .button.shortcutcolor = WHITE | A_UNDERLINE | A_BOLD
103c76f0793SBaptiste Daroussin };
104c76f0793SBaptiste Daroussin
105*61ba55bcSBaptiste Daroussin static struct bsddialog_theme flat = {
106263660c0SAlfonso Siciliano .screen.color = GET_COLOR(COLOR_CYAN, COLOR_BLUE) | A_BOLD,
1078c4f4028SBaptiste Daroussin
108f499134dSBaptiste Daroussin .shadow.color = GET_COLOR(COLOR_BLACK, COLOR_BLACK),
109b319d934SAlfonso S. Siciliano .shadow.y = 1,
110b319d934SAlfonso S. Siciliano .shadow.x = 2,
111c76f0793SBaptiste Daroussin
112*61ba55bcSBaptiste Daroussin .dialog.delimtitle = true,
1138c4f4028SBaptiste Daroussin .dialog.titlecolor = GET_COLOR(COLOR_BLUE, COLOR_WHITE) | A_BOLD,
114*61ba55bcSBaptiste Daroussin .dialog.lineraisecolor = GET_COLOR(COLOR_BLACK, COLOR_WHITE),
115*61ba55bcSBaptiste Daroussin .dialog.linelowercolor = GET_COLOR(COLOR_BLACK, COLOR_WHITE),
1168c4f4028SBaptiste Daroussin .dialog.color = GET_COLOR(COLOR_BLACK, COLOR_WHITE),
1178c4f4028SBaptiste Daroussin .dialog.bottomtitlecolor = GET_COLOR(COLOR_BLACK, COLOR_WHITE) | A_BOLD,
118b319d934SAlfonso S. Siciliano .dialog.arrowcolor = GET_COLOR(COLOR_BLUE, COLOR_WHITE),
119c76f0793SBaptiste Daroussin
120*61ba55bcSBaptiste Daroussin .menu.f_prefixcolor = GET_COLOR(COLOR_BLACK, COLOR_WHITE),
121*61ba55bcSBaptiste Daroussin .menu.prefixcolor = GET_COLOR(COLOR_BLACK, COLOR_WHITE),
122bce40c02SAlfonso S. Siciliano .menu.f_selectorcolor = GET_COLOR(COLOR_WHITE, COLOR_BLUE),
123b319d934SAlfonso S. Siciliano .menu.selectorcolor = GET_COLOR(COLOR_BLACK, COLOR_WHITE),
124263660c0SAlfonso Siciliano .menu.f_desccolor = GET_COLOR(COLOR_WHITE, COLOR_BLUE),
125263660c0SAlfonso Siciliano .menu.desccolor = GET_COLOR(COLOR_BLACK, COLOR_WHITE),
126bce40c02SAlfonso S. Siciliano .menu.f_namecolor = GET_COLOR(COLOR_WHITE, COLOR_BLUE),
127263660c0SAlfonso Siciliano .menu.namecolor = GET_COLOR(COLOR_BLUE, COLOR_WHITE),
128263660c0SAlfonso Siciliano .menu.f_shortcutcolor = GET_COLOR(COLOR_RED, COLOR_BLUE),
129263660c0SAlfonso Siciliano .menu.shortcutcolor = GET_COLOR(COLOR_RED, COLOR_WHITE),
130b319d934SAlfonso S. Siciliano .menu.bottomdesccolor = GET_COLOR(COLOR_WHITE, COLOR_BLUE),
131*61ba55bcSBaptiste Daroussin .menu.sepnamecolor = GET_COLOR(COLOR_RED, COLOR_WHITE),
132*61ba55bcSBaptiste Daroussin .menu.sepdesccolor = GET_COLOR(COLOR_RED, COLOR_WHITE),
133c76f0793SBaptiste Daroussin
134f499134dSBaptiste Daroussin .form.f_fieldcolor = GET_COLOR(COLOR_WHITE, COLOR_BLUE) | A_BOLD,
135f499134dSBaptiste Daroussin .form.fieldcolor = GET_COLOR(COLOR_WHITE, COLOR_CYAN) | A_BOLD,
136f499134dSBaptiste Daroussin .form.readonlycolor = GET_COLOR(COLOR_CYAN, COLOR_WHITE)| A_BOLD,
137b319d934SAlfonso S. Siciliano .form.bottomdesccolor = GET_COLOR(COLOR_WHITE, COLOR_BLUE),
138c76f0793SBaptiste Daroussin
139f499134dSBaptiste Daroussin .bar.f_color = GET_COLOR(COLOR_WHITE, COLOR_BLUE) | A_BOLD,
140f499134dSBaptiste Daroussin .bar.color = GET_COLOR(COLOR_BLUE, COLOR_WHITE) | A_BOLD,
141c76f0793SBaptiste Daroussin
142b319d934SAlfonso S. Siciliano .button.minmargin = 1,
143b319d934SAlfonso S. Siciliano .button.maxmargin = 5,
144*61ba55bcSBaptiste Daroussin .button.leftdelim = '[',
145*61ba55bcSBaptiste Daroussin .button.rightdelim = ']',
146f499134dSBaptiste Daroussin .button.f_delimcolor = GET_COLOR(COLOR_WHITE, COLOR_BLUE) | A_BOLD,
147f499134dSBaptiste Daroussin .button.delimcolor = GET_COLOR(COLOR_BLACK, COLOR_WHITE),
148f499134dSBaptiste Daroussin .button.f_color = GET_COLOR(COLOR_YELLOW, COLOR_BLUE) | A_BOLD,
149f499134dSBaptiste Daroussin .button.color = GET_COLOR(COLOR_BLACK, COLOR_WHITE),
150f499134dSBaptiste Daroussin .button.f_shortcutcolor = GET_COLOR(COLOR_WHITE, COLOR_BLUE) | A_BOLD,
151f499134dSBaptiste Daroussin .button.shortcutcolor = GET_COLOR(COLOR_RED, COLOR_WHITE) | A_BOLD
152c76f0793SBaptiste Daroussin };
153c76f0793SBaptiste Daroussin
1548c4f4028SBaptiste Daroussin static void
set_theme(struct bsddialog_theme * dst,struct bsddialog_theme * src)1558c4f4028SBaptiste Daroussin set_theme(struct bsddialog_theme *dst, struct bsddialog_theme *src)
156c76f0793SBaptiste Daroussin {
157263660c0SAlfonso Siciliano dst->screen.color = src->screen.color;
158263660c0SAlfonso Siciliano
1598c4f4028SBaptiste Daroussin dst->shadow.color = src->shadow.color;
160b319d934SAlfonso S. Siciliano dst->shadow.y = src->shadow.y;
161b319d934SAlfonso S. Siciliano dst->shadow.x = src->shadow.x;
162c76f0793SBaptiste Daroussin
1638c4f4028SBaptiste Daroussin dst->dialog.delimtitle = src->dialog.delimtitle;
1648c4f4028SBaptiste Daroussin dst->dialog.titlecolor = src->dialog.titlecolor;
1658c4f4028SBaptiste Daroussin dst->dialog.lineraisecolor = src->dialog.lineraisecolor;
1668c4f4028SBaptiste Daroussin dst->dialog.linelowercolor = src->dialog.linelowercolor;
1678c4f4028SBaptiste Daroussin dst->dialog.color = src->dialog.color;
1688c4f4028SBaptiste Daroussin dst->dialog.bottomtitlecolor = src->dialog.bottomtitlecolor;
169bce40c02SAlfonso S. Siciliano dst->dialog.arrowcolor = src->dialog.arrowcolor;
170c76f0793SBaptiste Daroussin
171*61ba55bcSBaptiste Daroussin dst->menu.f_prefixcolor = src->menu.f_prefixcolor;
172*61ba55bcSBaptiste Daroussin dst->menu.prefixcolor = src->menu.prefixcolor;
173bce40c02SAlfonso S. Siciliano dst->menu.f_selectorcolor = src->menu.f_selectorcolor;
1748c4f4028SBaptiste Daroussin dst->menu.selectorcolor = src->menu.selectorcolor;
1758c4f4028SBaptiste Daroussin dst->menu.f_desccolor = src->menu.f_desccolor;
1768c4f4028SBaptiste Daroussin dst->menu.desccolor = src->menu.desccolor;
1778c4f4028SBaptiste Daroussin dst->menu.f_namecolor = src->menu.f_namecolor;
1788c4f4028SBaptiste Daroussin dst->menu.namecolor = src->menu.namecolor;
1798c4f4028SBaptiste Daroussin dst->menu.f_shortcutcolor = src->menu.f_shortcutcolor;
1808c4f4028SBaptiste Daroussin dst->menu.shortcutcolor = src->menu.shortcutcolor;
181b319d934SAlfonso S. Siciliano dst->menu.bottomdesccolor = src->menu.bottomdesccolor;
182*61ba55bcSBaptiste Daroussin dst->menu.sepnamecolor = src->menu.sepnamecolor;
183*61ba55bcSBaptiste Daroussin dst->menu.sepdesccolor = src->menu.sepdesccolor;
184c76f0793SBaptiste Daroussin
1858c4f4028SBaptiste Daroussin dst->form.f_fieldcolor = src->form.f_fieldcolor;
1868c4f4028SBaptiste Daroussin dst->form.fieldcolor = src->form.fieldcolor;
1878c4f4028SBaptiste Daroussin dst->form.readonlycolor = src->form.readonlycolor;
188b319d934SAlfonso S. Siciliano dst->form.bottomdesccolor = src->form.bottomdesccolor;
189c76f0793SBaptiste Daroussin
1908c4f4028SBaptiste Daroussin dst->bar.f_color = src->bar.f_color;
1918c4f4028SBaptiste Daroussin dst->bar.color = src->bar.color;
192c76f0793SBaptiste Daroussin
193b319d934SAlfonso S. Siciliano dst->button.minmargin = src->button.minmargin;
194b319d934SAlfonso S. Siciliano dst->button.maxmargin = src->button.maxmargin;
195bce40c02SAlfonso S. Siciliano dst->button.leftdelim = src->button.leftdelim;
196bce40c02SAlfonso S. Siciliano dst->button.rightdelim = src->button.rightdelim;
1978c4f4028SBaptiste Daroussin dst->button.f_delimcolor = src->button.f_delimcolor;
1988c4f4028SBaptiste Daroussin dst->button.delimcolor = src->button.delimcolor;
1998c4f4028SBaptiste Daroussin dst->button.f_color = src->button.f_color;
2008c4f4028SBaptiste Daroussin dst->button.color = src->button.color;
2018c4f4028SBaptiste Daroussin dst->button.f_shortcutcolor = src->button.f_shortcutcolor;
2028c4f4028SBaptiste Daroussin dst->button.shortcutcolor = src->button.shortcutcolor;
203c76f0793SBaptiste Daroussin
204263660c0SAlfonso Siciliano bkgd(dst->screen.color);
205c76f0793SBaptiste Daroussin }
206c76f0793SBaptiste Daroussin
2078c4f4028SBaptiste Daroussin /* API */
bsddialog_get_theme(struct bsddialog_theme * theme)2088c4f4028SBaptiste Daroussin int bsddialog_get_theme(struct bsddialog_theme *theme)
2098c4f4028SBaptiste Daroussin {
210*61ba55bcSBaptiste Daroussin CHECK_PTR(theme);
2118c4f4028SBaptiste Daroussin set_theme(theme, &t);
2128c4f4028SBaptiste Daroussin
213b319d934SAlfonso S. Siciliano return (BSDDIALOG_OK);
2148c4f4028SBaptiste Daroussin }
2158c4f4028SBaptiste Daroussin
bsddialog_set_theme(struct bsddialog_theme * theme)2168c4f4028SBaptiste Daroussin int bsddialog_set_theme(struct bsddialog_theme *theme)
2178c4f4028SBaptiste Daroussin {
218*61ba55bcSBaptiste Daroussin CHECK_PTR(theme);
2198c4f4028SBaptiste Daroussin set_theme(&t, theme);
220*61ba55bcSBaptiste Daroussin refresh();
2218c4f4028SBaptiste Daroussin
222b319d934SAlfonso S. Siciliano return (BSDDIALOG_OK);
2238c4f4028SBaptiste Daroussin }
2248c4f4028SBaptiste Daroussin
bsddialog_set_default_theme(enum bsddialog_default_theme newtheme)225c76f0793SBaptiste Daroussin int bsddialog_set_default_theme(enum bsddialog_default_theme newtheme)
226c76f0793SBaptiste Daroussin {
227*61ba55bcSBaptiste Daroussin if (newtheme == BSDDIALOG_THEME_3D) {
228*61ba55bcSBaptiste Daroussin set_theme(&t, &flat);
229*61ba55bcSBaptiste Daroussin t.dialog.lineraisecolor =
230*61ba55bcSBaptiste Daroussin GET_COLOR(COLOR_WHITE, COLOR_WHITE) | A_BOLD;
231*61ba55bcSBaptiste Daroussin t.dialog.delimtitle = false;
232*61ba55bcSBaptiste Daroussin t.dialog.bottomtitlecolor = t.dialog.bottomtitlecolor | A_BOLD;
233*61ba55bcSBaptiste Daroussin } else if (newtheme == BSDDIALOG_THEME_BLACKWHITE) {
234*61ba55bcSBaptiste Daroussin set_theme(&t, &blackwhite);
235*61ba55bcSBaptiste Daroussin } else if (newtheme == BSDDIALOG_THEME_FLAT) {
236*61ba55bcSBaptiste Daroussin set_theme(&t, &flat);
237*61ba55bcSBaptiste Daroussin } else {
238*61ba55bcSBaptiste Daroussin RETURN_FMTERROR("Unknown default theme (%d), "
239*61ba55bcSBaptiste Daroussin "to use enum bsddialog_default_theme",
240*61ba55bcSBaptiste Daroussin newtheme);
2418c4f4028SBaptiste Daroussin }
242*61ba55bcSBaptiste Daroussin refresh();
243c76f0793SBaptiste Daroussin
244b319d934SAlfonso S. Siciliano return (BSDDIALOG_OK);
245c76f0793SBaptiste Daroussin }
246c76f0793SBaptiste Daroussin
247c76f0793SBaptiste Daroussin int
bsddialog_color(enum bsddialog_color foreground,enum bsddialog_color background,unsigned int flags)248d93b4d32SBaptiste Daroussin bsddialog_color(enum bsddialog_color foreground,
249d93b4d32SBaptiste Daroussin enum bsddialog_color background, unsigned int flags)
250c76f0793SBaptiste Daroussin {
251*61ba55bcSBaptiste Daroussin unsigned int i, f;
252c76f0793SBaptiste Daroussin
253*61ba55bcSBaptiste Daroussin f = 0;
254*61ba55bcSBaptiste Daroussin for (i=0; i < NFLAGS; i++)
255*61ba55bcSBaptiste Daroussin if (flags & flagconv[i].public)
256*61ba55bcSBaptiste Daroussin f |= flagconv[i].private;
257c76f0793SBaptiste Daroussin
258*61ba55bcSBaptiste Daroussin return (GET_COLOR(foreground, background) | f);
259c76f0793SBaptiste Daroussin }
260b319d934SAlfonso S. Siciliano
261b319d934SAlfonso S. Siciliano int
bsddialog_color_attrs(int color,enum bsddialog_color * foreground,enum bsddialog_color * background,unsigned int * flags)262b319d934SAlfonso S. Siciliano bsddialog_color_attrs(int color, enum bsddialog_color *foreground,
263b319d934SAlfonso S. Siciliano enum bsddialog_color *background, unsigned int *flags)
264b319d934SAlfonso S. Siciliano {
265*61ba55bcSBaptiste Daroussin short fg, bg;
266*61ba55bcSBaptiste Daroussin unsigned int i, f;
267b319d934SAlfonso S. Siciliano
268*61ba55bcSBaptiste Daroussin if (flags != NULL) {
269*61ba55bcSBaptiste Daroussin f = 0;
270*61ba55bcSBaptiste Daroussin for (i=0; i < NFLAGS; i++)
271*61ba55bcSBaptiste Daroussin if (color & flagconv[i].private)
272*61ba55bcSBaptiste Daroussin f |= flagconv[i].public;
273*61ba55bcSBaptiste Daroussin *flags = f;
274*61ba55bcSBaptiste Daroussin }
275*61ba55bcSBaptiste Daroussin if (pair_content(PAIR_NUMBER(color), &fg, &bg) != OK)
276b319d934SAlfonso S. Siciliano RETURN_ERROR("Cannot get color attributes");
277b319d934SAlfonso S. Siciliano if (foreground != NULL)
278*61ba55bcSBaptiste Daroussin *foreground = fg;
279b319d934SAlfonso S. Siciliano if (background != NULL)
280*61ba55bcSBaptiste Daroussin *background = bg;
281b319d934SAlfonso S. Siciliano
282b319d934SAlfonso S. Siciliano return (BSDDIALOG_OK);
283b319d934SAlfonso S. Siciliano }
284b319d934SAlfonso S. Siciliano
bsddialog_hascolors(void)285b319d934SAlfonso S. Siciliano bool bsddialog_hascolors(void)
286b319d934SAlfonso S. Siciliano {
287*61ba55bcSBaptiste Daroussin return (hastermcolors);
288b319d934SAlfonso S. Siciliano }
289