NeoMutt  2025-09-05-55-g97fc89
Teaching an old dog new tricks
DOXYGEN
Loading...
Searching...
No Matches
simple.c
Go to the documentation of this file.
1
22
29
30#include "config.h"
31#include <stdbool.h>
32#include <stddef.h>
33#include "mutt/lib.h"
34#include "gui/lib.h"
35#include "attr.h"
36#include "color.h"
37#include "commands.h"
38#include "debug.h"
39#include "notify2.h"
40#include "simple2.h"
41
43
48{
49 for (int i = 0; i < MT_COLOR_MAX; i++)
50 {
51 SimpleColors[i].fg.color = COLOR_DEFAULT;
52 SimpleColors[i].bg.color = COLOR_DEFAULT;
53 }
54
55 // Set some defaults
56 color_debug(LL_DEBUG5, "init indicator, markers, etc\n");
57 SimpleColors[MT_COLOR_BOLD].attrs = A_BOLD;
58 SimpleColors[MT_COLOR_INDICATOR].attrs = A_REVERSE;
60 SimpleColors[MT_COLOR_MARKERS].attrs = A_REVERSE;
61 SimpleColors[MT_COLOR_SEARCH].attrs = A_REVERSE;
62 SimpleColors[MT_COLOR_STATUS].attrs = A_REVERSE;
63 SimpleColors[MT_COLOR_STRIPE_EVEN].attrs = A_BOLD;
64 SimpleColors[MT_COLOR_UNDERLINE].attrs = A_UNDERLINE;
65}
66
71{
72 color_debug(LL_DEBUG5, "reset defs\n");
73 for (size_t i = 0; i < MT_COLOR_MAX; i++)
74 {
76 }
78}
79
87
96{
97 if (cid >= MT_COLOR_MAX)
98 {
99 mutt_debug(LL_DEBUG1, "color overflow %d/%d\n", cid, MT_COLOR_MAX);
100 return NULL;
101 }
102 if (cid <= MT_COLOR_NONE)
103 {
104 mutt_debug(LL_DEBUG1, "color underflow %d/%d\n", cid, MT_COLOR_NONE);
105 return NULL;
106 }
107
108 return &SimpleColors[cid];
109}
110
117{
119}
120
127struct AttrColor *simple_color_set(enum ColorId cid, struct AttrColor *ac_val)
128{
129 struct AttrColor *ac = simple_color_get(cid);
130 if (!ac)
131 return NULL;
132
133 attr_color_overwrite(ac, ac_val);
134
135 struct Buffer *buf = buf_pool_get();
136 get_colorid_name(cid, buf);
137 color_debug(LL_DEBUG5, "NT_COLOR_SET: %s\n", buf_string(buf));
138 buf_pool_release(&buf);
139
140 struct EventColor ev_c = { cid, NULL };
142
143 return ac;
144}
145
151{
152 struct AttrColor *ac = simple_color_get(cid);
153 if (!ac)
154 return;
155
156 struct Buffer *buf = buf_pool_get();
157 get_colorid_name(cid, buf);
158 color_debug(LL_DEBUG5, "NT_COLOR_RESET: %s\n", buf_string(buf));
159 buf_pool_release(&buf);
160
162
163 struct EventColor ev_c = { cid, ac };
165}
void attr_color_clear(struct AttrColor *ac)
Free the contents of an AttrColor.
Definition attr.c:47
void attr_color_overwrite(struct AttrColor *ac_old, const struct AttrColor *ac_new)
Update an AttrColor in-place.
Definition attr.c:394
bool attr_color_is_set(const struct AttrColor *ac)
Is the object coloured?
Definition attr.c:178
Colour and attributes.
static const char * buf_string(const struct Buffer *buf)
Convert a buffer to a const char * "string".
Definition buffer.h:96
void get_colorid_name(unsigned int cid, struct Buffer *buf)
Get the name of a Colour ID.
Definition commands.c:128
Parse colour commands.
struct Notify * ColorsNotify
Notifications: ColorId, EventColor.
Definition notify.c:36
void simple_colors_init(void)
Initialise the simple colour definitions.
Definition simple.c:47
struct AttrColor * simple_color_set(enum ColorId cid, struct AttrColor *ac_val)
Set the colour of a simple object.
Definition simple.c:127
void simple_colors_cleanup(void)
Cleanup the simple colour definitions.
Definition simple.c:83
void simple_colors_reset(void)
Reset the simple colour definitions.
Definition simple.c:70
void simple_color_reset(enum ColorId cid)
Clear the colour of a simple object.
Definition simple.c:150
bool simple_color_is_set(enum ColorId cid)
Is the object coloured?
Definition simple.c:116
struct AttrColor * simple_color_get(enum ColorId cid)
Get the colour of an object by its ID.
Definition simple.c:95
struct AttrColor SimpleColors[MT_COLOR_MAX]
Array of Simple colours.
Definition simple.c:42
Color and attribute parsing.
#define COLOR_DEFAULT
Definition color.h:103
ColorId
List of all coloured objects.
Definition color.h:36
@ MT_COLOR_MARKERS
Pager: markers, line continuation.
Definition color.h:52
@ MT_COLOR_MAX
Definition color.h:98
@ MT_COLOR_STATUS
Status bar (takes a pattern)
Definition color.h:79
@ MT_COLOR_INDICATOR
Selected item in list.
Definition color.h:50
@ MT_COLOR_STRIPE_EVEN
Stripes: even lines of the Help Page.
Definition color.h:80
@ MT_COLOR_NONE
No colour.
Definition color.h:37
@ MT_COLOR_BOLD
Bold text.
Definition color.h:41
@ MT_COLOR_SEARCH
Pager: search matches.
Definition color.h:68
@ MT_COLOR_ITALIC
Italic text.
Definition color.h:51
@ MT_COLOR_UNDERLINE
Underlined text.
Definition color.h:84
Colour Debugging.
static int color_debug(enum LogLevel level, const char *format,...)
Definition debug.h:52
#define mutt_debug(LEVEL,...)
Definition logging2.h:90
Convenience wrapper for the gui headers.
@ LL_DEBUG5
Log at debug level 5.
Definition logging2.h:48
@ LL_DEBUG1
Log at debug level 1.
Definition logging2.h:44
Convenience wrapper for the library headers.
bool notify_send(struct Notify *notify, enum NotifyType event_type, int event_subtype, void *event_data)
Send out a notification message.
Definition notify.c:173
#define A_ITALIC
Definition mutt_curses.h:49
Colour notifications.
@ NT_COLOR_RESET
Color has been reset/removed.
Definition notify2.h:44
@ NT_COLOR_SET
Color has been set.
Definition notify2.h:43
@ NT_COLOR
Colour has changed, NotifyColor, EventColor.
Definition notify_type.h:41
struct Buffer * buf_pool_get(void)
Get a Buffer from the pool.
Definition pool.c:82
void buf_pool_release(struct Buffer **ptr)
Return a Buffer to the pool.
Definition pool.c:96
Simple colour.
A curses colour and its attributes.
Definition attr.h:66
String manipulation buffer.
Definition buffer.h:36
An Event that happened to a Colour.
Definition notify2.h:55
enum ColorId cid
Colour ID that has changed.
Definition notify2.h:56