tMove font/fontspec variables into x.c and XWindow - st - [fork] customized bui… | |
git clone git://src.adamsgaard.dk/st | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
commit a09138afa57adb4b76dba8ca72dc7ee2642a5c8d | |
parent 626b0ae40c71b6c1e02ece79bf033432647381a6 | |
Author: Devin J. Pohly <[email protected]> | |
Date: Tue, 10 Oct 2017 12:17:25 -0500 | |
Move font/fontspec variables into x.c and XWindow | |
Signed-off-by: Devin J. Pohly <[email protected]> | |
Diffstat: | |
M st.c | 11 ----------- | |
M st.h | 8 ++------ | |
M x.c | 18 +++++++++++++----- | |
3 files changed, 15 insertions(+), 22 deletions(-) | |
--- | |
diff --git a/st.c b/st.c | |
t@@ -28,9 +28,6 @@ | |
#include <X11/cursorfont.h> | |
#include <X11/Xft/Xft.h> | |
-#define Glyph Glyph_ | |
-#define Font Font_ | |
- | |
#include "st.h" | |
#include "win.h" | |
t@@ -196,7 +193,6 @@ static size_t utf8validate(Rune *, size_t); | |
static char *base64dec(const char *); | |
static ssize_t xwrite(int, const char *, size_t); | |
-static void *xrealloc(void *, size_t); | |
/* Globals */ | |
TermWindow win; | |
t@@ -218,10 +214,6 @@ static CSIEscape csiescseq; | |
static STREscape strescseq; | |
static int iofd = 1; | |
-char *usedfont = NULL; | |
-double usedfontsize = 0; | |
-double defaultfontsize = 0; | |
- | |
static uchar utfbyte[UTF_SIZ + 1] = {0x80, 0, 0xC0, 0xE0, 0xF0}; | |
static uchar utfmask[UTF_SIZ + 1] = {0xC0, 0x80, 0xE0, 0xF0, 0xF8}; | |
static Rune utfmin[UTF_SIZ + 1] = { 0, 0, 0x80, 0x800, 0x10000}; | |
t@@ -2516,9 +2508,6 @@ tresize(int col, int row) | |
free(term.alt[i]); | |
} | |
- /* resize to new width */ | |
- term.specbuf = xrealloc(term.specbuf, col * sizeof(GlyphFontSpec)); | |
- | |
/* resize to new height */ | |
term.line = xrealloc(term.line, row * sizeof(Line)); | |
term.alt = xrealloc(term.alt, row * sizeof(Line)); | |
diff --git a/st.h b/st.h | |
t@@ -92,6 +92,7 @@ typedef unsigned short ushort; | |
typedef uint_least32_t Rune; | |
+#define Glyph Glyph_ | |
typedef struct { | |
Rune u; /* character code */ | |
ushort mode; /* attribute flags */ | |
t@@ -100,7 +101,6 @@ typedef struct { | |
} Glyph; | |
typedef Glyph *Line; | |
-typedef XftGlyphFontSpec GlyphFontSpec; | |
typedef struct { | |
Glyph attr; /* current char attributes */ | |
t@@ -116,7 +116,6 @@ typedef struct { | |
Line *line; /* screen */ | |
Line *alt; /* alternate screen */ | |
int *dirty; /* dirtyness of lines */ | |
- GlyphFontSpec *specbuf; /* font spec buffer used for rendering */ | |
TCursor c; /* cursor */ | |
int top; /* top scroll limit */ | |
int bot; /* bottom scroll limit */ | |
t@@ -213,6 +212,7 @@ size_t utf8decode(char *, Rune *, size_t); | |
size_t utf8encode(Rune, char *); | |
void *xmalloc(size_t); | |
+void *xrealloc(void *, size_t); | |
char *xstrdup(char *); | |
/* Globals */ | |
t@@ -231,10 +231,6 @@ extern char *opt_name; | |
extern char *opt_title; | |
extern int oldbutton; | |
-extern char *usedfont; | |
-extern double usedfontsize; | |
-extern double defaultfontsize; | |
- | |
/* config.h globals */ | |
extern char font[]; | |
extern int borderpx; | |
diff --git a/x.c b/x.c | |
t@@ -17,10 +17,6 @@ | |
static char *argv0; | |
#include "arg.h" | |
- | |
-#define Glyph Glyph_ | |
-#define Font Font_ | |
- | |
#include "st.h" | |
#include "win.h" | |
t@@ -35,6 +31,7 @@ static char *argv0; | |
typedef XftDraw *Draw; | |
typedef XftColor Color; | |
+typedef XftGlyphFontSpec GlyphFontSpec; | |
/* Purely graphic info */ | |
typedef struct { | |
t@@ -42,6 +39,7 @@ typedef struct { | |
Colormap cmap; | |
Window win; | |
Drawable buf; | |
+ GlyphFontSpec *specbuf; /* font spec buffer used for rendering */ | |
Atom xembed, wmdeletewin, netwmname, netwmpid; | |
XIM xim; | |
XIC xic; | |
t@@ -59,6 +57,7 @@ typedef struct { | |
} XSelection; | |
/* Font structure */ | |
+#define Font Font_ | |
typedef struct { | |
int height; | |
int width; | |
t@@ -166,6 +165,9 @@ typedef struct { | |
/* Fontcache is an array now. A new font will be appended to the array. */ | |
static Fontcache frc[16]; | |
static int frclen = 0; | |
+static char *usedfont = NULL; | |
+static double usedfontsize = 0; | |
+static double defaultfontsize = 0; | |
void | |
zoom(const Arg *arg) | |
t@@ -605,6 +607,9 @@ xresize(int col, int row) | |
DefaultDepth(xw.dpy, xw.scr)); | |
XftDrawChange(xw.draw, xw.buf); | |
xclear(0, 0, win.w, win.h); | |
+ | |
+ /* resize to new width */ | |
+ xw.specbuf = xrealloc(xw.specbuf, col * sizeof(GlyphFontSpec)); | |
} | |
ushort | |
t@@ -965,6 +970,9 @@ xinit(void) | |
XSetForeground(xw.dpy, dc.gc, dc.col[defaultbg].pixel); | |
XFillRectangle(xw.dpy, xw.buf, dc.gc, 0, 0, win.w, win.h); | |
+ /* font spec buffer */ | |
+ xw.specbuf = xmalloc(term.col * sizeof(GlyphFontSpec)); | |
+ | |
/* Xft rendering context */ | |
xw.draw = XftDrawCreate(xw.dpy, xw.buf, xw.vis, xw.cmap); | |
t@@ -1456,7 +1464,7 @@ drawregion(int x1, int y1, int x2, int y2) | |
term.dirty[y] = 0; | |
- specs = term.specbuf; | |
+ specs = xw.specbuf; | |
numspecs = xmakeglyphfontspecs(specs, &term.line[y][x1], x2 - … | |
i = ox = 0; |