|
|
@ -17,10 +17,6 @@ |
|
|
|
|
|
|
|
|
|
|
|
static char *argv0; |
|
|
|
static char *argv0; |
|
|
|
#include "arg.h" |
|
|
|
#include "arg.h" |
|
|
|
|
|
|
|
|
|
|
|
#define Glyph Glyph_ |
|
|
|
|
|
|
|
#define Font Font_ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#include "st.h" |
|
|
|
#include "st.h" |
|
|
|
#include "win.h" |
|
|
|
#include "win.h" |
|
|
|
|
|
|
|
|
|
|
@ -35,6 +31,7 @@ static char *argv0; |
|
|
|
|
|
|
|
|
|
|
|
typedef XftDraw *Draw; |
|
|
|
typedef XftDraw *Draw; |
|
|
|
typedef XftColor Color; |
|
|
|
typedef XftColor Color; |
|
|
|
|
|
|
|
typedef XftGlyphFontSpec GlyphFontSpec; |
|
|
|
|
|
|
|
|
|
|
|
/* Purely graphic info */ |
|
|
|
/* Purely graphic info */ |
|
|
|
typedef struct { |
|
|
|
typedef struct { |
|
|
@ -42,6 +39,7 @@ typedef struct { |
|
|
|
Colormap cmap; |
|
|
|
Colormap cmap; |
|
|
|
Window win; |
|
|
|
Window win; |
|
|
|
Drawable buf; |
|
|
|
Drawable buf; |
|
|
|
|
|
|
|
GlyphFontSpec *specbuf; /* font spec buffer used for rendering */ |
|
|
|
Atom xembed, wmdeletewin, netwmname, netwmpid; |
|
|
|
Atom xembed, wmdeletewin, netwmname, netwmpid; |
|
|
|
XIM xim; |
|
|
|
XIM xim; |
|
|
|
XIC xic; |
|
|
|
XIC xic; |
|
|
@ -59,6 +57,7 @@ typedef struct { |
|
|
|
} XSelection; |
|
|
|
} XSelection; |
|
|
|
|
|
|
|
|
|
|
|
/* Font structure */ |
|
|
|
/* Font structure */ |
|
|
|
|
|
|
|
#define Font Font_ |
|
|
|
typedef struct { |
|
|
|
typedef struct { |
|
|
|
int height; |
|
|
|
int height; |
|
|
|
int width; |
|
|
|
int width; |
|
|
@ -166,6 +165,9 @@ typedef struct { |
|
|
|
/* Fontcache is an array now. A new font will be appended to the array. */ |
|
|
|
/* Fontcache is an array now. A new font will be appended to the array. */ |
|
|
|
static Fontcache frc[16]; |
|
|
|
static Fontcache frc[16]; |
|
|
|
static int frclen = 0; |
|
|
|
static int frclen = 0; |
|
|
|
|
|
|
|
static char *usedfont = NULL; |
|
|
|
|
|
|
|
static double usedfontsize = 0; |
|
|
|
|
|
|
|
static double defaultfontsize = 0; |
|
|
|
|
|
|
|
|
|
|
|
void |
|
|
|
void |
|
|
|
zoom(const Arg *arg) |
|
|
|
zoom(const Arg *arg) |
|
|
@ -605,6 +607,9 @@ xresize(int col, int row) |
|
|
|
DefaultDepth(xw.dpy, xw.scr)); |
|
|
|
DefaultDepth(xw.dpy, xw.scr)); |
|
|
|
XftDrawChange(xw.draw, xw.buf); |
|
|
|
XftDrawChange(xw.draw, xw.buf); |
|
|
|
xclear(0, 0, win.w, win.h); |
|
|
|
xclear(0, 0, win.w, win.h); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* resize to new width */ |
|
|
|
|
|
|
|
xw.specbuf = xrealloc(xw.specbuf, col * sizeof(GlyphFontSpec)); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
ushort |
|
|
|
ushort |
|
|
@ -965,6 +970,9 @@ xinit(void) |
|
|
|
XSetForeground(xw.dpy, dc.gc, dc.col[defaultbg].pixel); |
|
|
|
XSetForeground(xw.dpy, dc.gc, dc.col[defaultbg].pixel); |
|
|
|
XFillRectangle(xw.dpy, xw.buf, dc.gc, 0, 0, win.w, win.h); |
|
|
|
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 */ |
|
|
|
/* Xft rendering context */ |
|
|
|
xw.draw = XftDrawCreate(xw.dpy, xw.buf, xw.vis, xw.cmap); |
|
|
|
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; |
|
|
|
term.dirty[y] = 0; |
|
|
|
|
|
|
|
|
|
|
|
specs = term.specbuf; |
|
|
|
specs = xw.specbuf; |
|
|
|
numspecs = xmakeglyphfontspecs(specs, &term.line[y][x1], x2 - x1, x1, y); |
|
|
|
numspecs = xmakeglyphfontspecs(specs, &term.line[y][x1], x2 - x1, x1, y); |
|
|
|
|
|
|
|
|
|
|
|
i = ox = 0; |
|
|
|
i = ox = 0; |
|
|
|