mirror of
https://github.com/mintycube/dwm.git
synced 2024-10-18 05:05:48 +02:00
6b9c484b78
This involves always having configuration for floating border, regardless of whether it is used or not. Also permanently dropping the const expectation for color configuration in dwm, so that vtcolors and xrdb patches can change color configuration.
113 lines
3.3 KiB
C
113 lines
3.3 KiB
C
/* See LICENSE file for copyright and license details. */
|
|
|
|
#if BAR_PANGO_PATCH
|
|
#include <pango/pango.h>
|
|
#include <pango/pangoxft.h>
|
|
#endif // BAR_PANGO_PATCH
|
|
|
|
typedef struct {
|
|
Cursor cursor;
|
|
} Cur;
|
|
|
|
typedef struct Fnt {
|
|
Display *dpy;
|
|
unsigned int h;
|
|
#if BAR_PANGO_PATCH
|
|
PangoLayout *layout;
|
|
#else
|
|
XftFont *xfont;
|
|
FcPattern *pattern;
|
|
struct Fnt *next;
|
|
#endif // BAR_PANGO_PATCH
|
|
} Fnt;
|
|
|
|
#if FLOAT_BORDER_COLOR_PATCH
|
|
enum { ColFg, ColBg, ColBorder, ColFloat, ColCount }; /* Clr scheme index */
|
|
#else
|
|
enum { ColFg, ColBg, ColBorder, ColCount }; /* Clr scheme index */
|
|
#endif // FLOAT_BORDER_COLOR_PATCH
|
|
typedef XftColor Clr;
|
|
|
|
typedef struct {
|
|
unsigned int w, h;
|
|
Display *dpy;
|
|
int screen;
|
|
Window root;
|
|
#if BAR_ALPHA_PATCH
|
|
Visual *visual;
|
|
unsigned int depth;
|
|
Colormap cmap;
|
|
#endif // BAR_ALPHA_PATCH
|
|
Drawable drawable;
|
|
GC gc;
|
|
Clr *scheme;
|
|
Fnt *fonts;
|
|
} Drw;
|
|
|
|
/* Drawable abstraction */
|
|
#if BAR_ALPHA_PATCH
|
|
Drw *drw_create(Display *dpy, int screen, Window win, unsigned int w, unsigned int h, Visual *visual, unsigned int depth, Colormap cmap);
|
|
#else
|
|
Drw *drw_create(Display *dpy, int screen, Window win, unsigned int w, unsigned int h);
|
|
#endif // BAR_ALPHA_PATCH
|
|
void drw_resize(Drw *drw, unsigned int w, unsigned int h);
|
|
void drw_free(Drw *drw);
|
|
|
|
/* Fnt abstraction */
|
|
#if BAR_PANGO_PATCH
|
|
Fnt *drw_font_create(Drw* drw, const char font[]);
|
|
void drw_font_free(Fnt* set);
|
|
unsigned int drw_font_getwidth(Drw *drw, const char *text, Bool markup);
|
|
void drw_font_getexts(Fnt *font, const char *text, unsigned int len, unsigned int *w, unsigned int *h, Bool markup);
|
|
#else
|
|
Fnt *drw_fontset_create(Drw* drw, const char *fonts[], size_t fontcount);
|
|
void drw_fontset_free(Fnt* set);
|
|
unsigned int drw_fontset_getwidth(Drw *drw, const char *text);
|
|
void drw_font_getexts(Fnt *font, const char *text, unsigned int len, unsigned int *w, unsigned int *h);
|
|
#endif // BAR_PANGO_PATCH
|
|
|
|
/* Colorscheme abstraction */
|
|
void drw_clr_create(
|
|
Drw *drw,
|
|
Clr *dest,
|
|
const char *clrname
|
|
#if BAR_ALPHA_PATCH
|
|
, unsigned int alpha
|
|
#endif // BAR_ALPHA_PATCH
|
|
);
|
|
Clr *drw_scm_create(
|
|
Drw *drw,
|
|
char *clrnames[],
|
|
#if BAR_ALPHA_PATCH
|
|
const unsigned int alphas[],
|
|
#endif // BAR_ALPHA_PATCH
|
|
size_t clrcount
|
|
);
|
|
|
|
/* Cursor abstraction */
|
|
Cur *drw_cur_create(Drw *drw, int shape);
|
|
void drw_cur_free(Drw *drw, Cur *cursor);
|
|
|
|
/* Drawing context manipulation */
|
|
#if !PANGO_PATCH
|
|
void drw_setfontset(Drw *drw, Fnt *set);
|
|
#endif // BAR_PANGO_PATCH
|
|
void drw_setscheme(Drw *drw, Clr *scm);
|
|
#if BAR_POWERLINE_TAGS_PATCH || BAR_POWERLINE_STATUS_PATCH
|
|
void drw_settrans(Drw *drw, Clr *psc, Clr *nsc);
|
|
#endif // BAR_POWERLINE_TAGS_PATCH | BAR_POWERLINE_STATUS_PATCH
|
|
|
|
/* Drawing functions */
|
|
void drw_rect(Drw *drw, int x, int y, unsigned int w, unsigned int h, int filled, int invert);
|
|
#if BAR_PANGO_PATCH
|
|
int drw_text(Drw *drw, int x, int y, unsigned int w, unsigned int h, unsigned int lpad, const char *text, int invert, Bool markup);
|
|
#else
|
|
int drw_text(Drw *drw, int x, int y, unsigned int w, unsigned int h, unsigned int lpad, const char *text, int invert);
|
|
#endif // BAR_PANGO_PATCH
|
|
#if BAR_POWERLINE_TAGS_PATCH || BAR_POWERLINE_STATUS_PATCH
|
|
void drw_arrow(Drw *drw, int x, int y, unsigned int w, unsigned int h, int direction, int slash);
|
|
#endif // BAR_POWERLINE_TAGS_PATCH | BAR_POWERLINE_STATUS_PATCH
|
|
|
|
/* Map functions */
|
|
void drw_map(Drw *drw, Window win, int x, int y, unsigned int w, unsigned int h);
|