[hackers] [st] Move font/fontspec variables into x.c and XWindow || Devin J. Pohly

From: <git_AT_suckless.org>
Date: Fri, 9 Mar 2018 15:37:36 +0100 (CET)

commit a09138afa57adb4b76dba8ca72dc7ee2642a5c8d
Author: Devin J. Pohly <djpohly_AT_gmail.com>
AuthorDate: Tue Oct 10 12:17:25 2017 -0500
Commit: Devin J. Pohly <djpohly_AT_gmail.com>
CommitDate: Sun Feb 25 21:53:24 2018 -0600

    Move font/fontspec variables into x.c and XWindow
    
    Signed-off-by: Devin J. Pohly <djpohly_AT_gmail.com>

diff --git a/st.c b/st.c
index df43fac..540b487 100644
--- a/st.c
+++ b/st.c
_AT_@ -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"
 
_AT_@ -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;
_AT_@ -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};
_AT_@ -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
index ad94351..2199c13 100644
--- a/st.h
+++ b/st.h
_AT_@ -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 */
_AT_@ -100,7 +101,6 @@ typedef struct {
 } Glyph;
 
 typedef Glyph *Line;
-typedef XftGlyphFontSpec GlyphFontSpec;
 
 typedef struct {
         Glyph attr; /* current char attributes */
_AT_@ -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 */
_AT_@ -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 */
_AT_@ -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
index 5b3c97b..186e408 100644
--- a/x.c
+++ b/x.c
_AT_@ -17,10 +17,6 @@
 
 static char *argv0;
 #include "arg.h"
-
-#define Glyph Glyph_
-#define Font Font_
-
 #include "st.h"
 #include "win.h"
 
_AT_@ -35,6 +31,7 @@ static char *argv0;
 
 typedef XftDraw *Draw;
 typedef XftColor Color;
+typedef XftGlyphFontSpec GlyphFontSpec;
 
 /* Purely graphic info */
 typedef struct {
_AT_@ -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;
_AT_@ -59,6 +57,7 @@ typedef struct {
 } XSelection;
 
 /* Font structure */
+#define Font Font_
 typedef struct {
         int height;
         int width;
_AT_@ -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)
_AT_@ -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
_AT_@ -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);
 
_AT_@ -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;
Received on Fri Mar 09 2018 - 15:37:36 CET

This archive was generated by hypermail 2.3.0 : Fri Mar 09 2018 - 15:48:46 CET