3 files changed, 15 insertions(+), 22 deletions(-)
M st.c
M st.h
M x.c
M st.c => st.c +0 -11
@@ 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"
@@ 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;
@@ 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};
@@ 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));
M st.h => st.h +2 -6
@@ 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 */
@@ 100,7 101,6 @@ typedef struct {
} Glyph;
typedef Glyph *Line;
-typedef XftGlyphFontSpec GlyphFontSpec;
typedef struct {
Glyph attr; /* current char attributes */
@@ 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 */
@@ 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 */
@@ 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;
M x.c => x.c +13 -5
@@ 17,10 17,6 @@
static char *argv0;
#include "arg.h"
-
-#define Glyph Glyph_
-#define Font Font_
-
#include "st.h"
#include "win.h"
@@ 35,6 31,7 @@ static char *argv0;
typedef XftDraw *Draw;
typedef XftColor Color;
+typedef XftGlyphFontSpec GlyphFontSpec;
/* Purely graphic info */
typedef struct {
@@ 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;
@@ 59,6 57,7 @@ typedef struct {
} XSelection;
/* Font structure */
+#define Font Font_
typedef struct {
int height;
int width;
@@ 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)
@@ 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
@@ 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);
@@ 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 - x1, x1, y);
i = ox = 0;