Introduction
Introduction Statistics Contact Development Disclaimer Help
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;
You are viewing proxied material from mx1.adamsgaard.dk. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.