~petersanchez/st

a09138afa57adb4b76dba8ca72dc7ee2642a5c8d — Devin J. Pohly 6 years ago 626b0ae
Move font/fontspec variables into x.c and XWindow

Signed-off-by: Devin J. Pohly <djpohly@gmail.com>
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;