]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - contrib/bsddialog/lib/bsddialog_theme.h
Merge one true awk from 2024-01-22 for the Awk Second Edition support
[FreeBSD/FreeBSD.git] / contrib / bsddialog / lib / bsddialog_theme.h
1 /*-
2  * SPDX-License-Identifier: BSD-2-Clause
3  *
4  * Copyright (c) 2021-2023 Alfonso Sabato Siciliano
5  *
6  * Redistribution and use in source and binary forms, with or without
7  * modification, are permitted provided that the following conditions
8  * are met:
9  * 1. Redistributions of source code must retain the above copyright
10  *    notice, this list of conditions and the following disclaimer.
11  * 2. Redistributions in binary form must reproduce the above copyright
12  *    notice, this list of conditions and the following disclaimer in the
13  *    documentation and/or other materials provided with the distribution.
14  *
15  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
16  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
19  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
20  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
21  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
22  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
23  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
24  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
25  * SUCH DAMAGE.
26  */
27
28 #ifndef _LIBBSDDIALOG_THEME_H_
29 #define _LIBBSDDIALOG_THEME_H_
30
31 /* color flags */
32 #define BSDDIALOG_BLINK       1U
33 #define BSDDIALOG_BOLD        2U
34 #define BSDDIALOG_HALFBRIGHT  4U
35 #define BSDDIALOG_HIGHLIGHT   8U
36 #define BSDDIALOG_REVERSE    16U
37 #define BSDDIALOG_UNDERLINE  32U
38
39 struct bsddialog_theme {
40         struct {
41                 int color;
42         } screen;
43         struct {
44                 int color;
45                 unsigned int y;
46                 unsigned int x;
47         } shadow;
48         struct {
49                 int  color;
50                 bool delimtitle;
51                 int  titlecolor;
52                 int  lineraisecolor;
53                 int  linelowercolor;
54                 int  bottomtitlecolor;
55                 int  arrowcolor;
56         } dialog;
57         struct {
58                 int f_prefixcolor;
59                 int prefixcolor;
60                 int f_selectorcolor;
61                 int selectorcolor;
62                 int f_namecolor;
63                 int namecolor;
64                 int f_desccolor;
65                 int desccolor;
66                 int f_shortcutcolor;
67                 int shortcutcolor;
68                 int bottomdesccolor;
69                 int sepnamecolor;
70                 int sepdesccolor;
71         } menu;
72         struct {
73                 int f_fieldcolor;
74                 int fieldcolor;
75                 int readonlycolor;
76                 int bottomdesccolor;
77         } form;
78         struct {
79                 int f_color;
80                 int color;
81         } bar;
82         struct {
83                 unsigned int minmargin;
84                 unsigned int maxmargin;
85                 char leftdelim;
86                 char rightdelim;
87                 int f_delimcolor;
88                 int delimcolor;
89                 int f_color;
90                 int color;
91                 int f_shortcutcolor;
92                 int shortcutcolor;
93         } button;
94 };
95
96 enum bsddialog_default_theme {
97         BSDDIALOG_THEME_3D,
98         BSDDIALOG_THEME_BLACKWHITE,
99         BSDDIALOG_THEME_FLAT
100 };
101
102 enum bsddialog_color {
103         BSDDIALOG_BLACK = 0,
104         BSDDIALOG_RED,
105         BSDDIALOG_GREEN,
106         BSDDIALOG_YELLOW,
107         BSDDIALOG_BLUE,
108         BSDDIALOG_MAGENTA,
109         BSDDIALOG_CYAN,
110         BSDDIALOG_WHITE
111 };
112
113 int
114 bsddialog_color(enum bsddialog_color foreground,
115     enum bsddialog_color background, unsigned int flags);
116 int
117 bsddialog_color_attrs(int color, enum bsddialog_color *foreground,
118     enum bsddialog_color *background, unsigned int *flags);
119 int bsddialog_get_theme(struct bsddialog_theme *theme);
120 bool bsddialog_hascolors(void);
121 int bsddialog_set_default_theme(enum bsddialog_default_theme theme);
122 int bsddialog_set_theme(struct bsddialog_theme *theme);
123
124 #endif