Introduction
Introduction Statistics Contact Development Disclaimer Help
Allow a configurable border color. - sam - An updated version of the sam text e…
git clone git://vernunftzentrum.de/sam.git
Log
Files
Refs
LICENSE
---
commit 24c99b85f003d2e76ca80334f5e8604e8ef15398
parent bbfde92dd63eb2d1d28f48aff13ecd90e6574c76
Author: Rob King <[email protected]>
Date: Sun, 14 Aug 2016 23:24:39 -0500
Allow a configurable border color.
Diffstat:
include/libg.h | 4 ++--
libXg/bitblt.c | 9 ++++++---
libXg/border.c | 36 ++++++++++++++++---------------
libXg/gcs.c | 12 ++++--------
libXg/getrect.c | 4 ++--
libXg/libgint.h | 4 ++--
libXg/menuhit.c | 4 ++--
libXg/xtbinit.c | 8 +++++---
libframe/frdelete.c | 8 ++++----
libframe/frinsert.c | 10 +++++-----
libframe/frselect.c | 8 ++++----
samterm/flayer.c | 20 ++++++++++----------
samterm/scroll.c | 8 ++++----
13 files changed, 69 insertions(+), 66 deletions(-)
---
diff --git a/include/libg.h b/include/libg.h
@@ -155,7 +155,7 @@ extern int rectclip(Rectangle*, Rectangle);
extern void xtbinit(Errfunc, char*, int*, char**, char**);
extern void bclose(void);
extern void berror(char*);
-extern void bitblt2(Bitmap*, Point, Bitmap*, Rectangle, Fcode, unsigne…
+extern void bitblt2(Bitmap*, Point, Bitmap*, Rectangle, Fcode, unsigne…
extern void bitblt(Bitmap*, Point, Bitmap*, Rectangle, Fcode);
extern void copymasked(Bitmap*, Point, Bitmap*, Bitmap*, Rectangle);
extern int bitbltclip(void*);
@@ -179,7 +179,7 @@ extern int ptinrect(Point, Rectangle);
extern int rectXrect(Rectangle, Rectangle);
extern int eqpt(Point, Point);
extern int eqrect(Rectangle, Rectangle);
-extern void border(Bitmap*, Rectangle, int, Fcode);
+extern void border(Bitmap*, Rectangle, int, Fcode, unsigned long);
extern void cursorswitch(Cursor*);
extern void cursorset(Point);
extern Rectangle bscreenrect(Rectangle*);
diff --git a/libXg/bitblt.c b/libXg/bitblt.c
@@ -7,17 +7,20 @@
void
bitblt(Bitmap *d, Point p, Bitmap *s, Rectangle r, Fcode f)
{
- bitblt2(d, p, s, r, f, _bgpixel);
+ bitblt2(d, p, s, r, f, _fgpixel, _bgpixel);
}
void
-bitblt2(Bitmap *d, Point p, Bitmap *s, Rectangle r, Fcode f, unsigned long bg)
+bitblt2(Bitmap *d, Point p, Bitmap *s, Rectangle r, Fcode f, unsigned long fg,…
{
int sx, sy, dx, dy, bfunc;
GC g;
unsigned long plane;
Bitmap *btmp;
+ if (fg == 0)
+ fg = _fgpixel;
+
if (bg == 0)
bg = _bgpixel;
@@ -35,7 +38,7 @@ bitblt2(Bitmap *d, Point p, Bitmap *s, Rectangle r, Fcode f, …
dx -= d->r.min.x;
dy -= d->r.min.y;
}
- g = _getcopygc2(f, d, s, &bfunc, bg);
+ g = _getcopygc2(f, d, s, &bfunc, fg, bg);
if(bfunc == UseCopyArea)
XCopyArea(_dpy, (Drawable)s->id, (Drawable)d->id, g,
sx, sy, Dx(r), Dy(r), dx, dy);
diff --git a/libXg/border.c b/libXg/border.c
@@ -3,26 +3,28 @@
#include <libc.h>
#include <libg.h>
+extern unsigned long _borderpixel;
+
void
-border(Bitmap *l, Rectangle r, int i, Fcode c)
+border(Bitmap *l, Rectangle r, int i, Fcode c, unsigned long bg)
{
if(i > 0){
- bitblt(l, r.min,
- l, Rect(r.min.x, r.min.y, r.max.x, r.min.y+i), c);
- bitblt(l, Pt(r.min.x, r.max.y-i),
- l, Rect(r.min.x, r.max.y-i, r.max.x, r.max.y), c);
- bitblt(l, Pt(r.min.x, r.min.y+i),
- l, Rect(r.min.x, r.min.y+i, r.min.x+i, r.max.y-i), c);
- bitblt(l, Pt(r.max.x-i, r.min.y+i),
- l, Rect(r.max.x-i, r.min.y+i, r.max.x, r.max.y-i), c);
+ bitblt2(l, r.min,
+ l, Rect(r.min.x, r.min.y, r.max.x, r.min.y+i), c, _bor…
+ bitblt2(l, Pt(r.min.x, r.max.y-i),
+ l, Rect(r.min.x, r.max.y-i, r.max.x, r.max.y), c, _bor…
+ bitblt2(l, Pt(r.min.x, r.min.y+i),
+ l, Rect(r.min.x, r.min.y+i, r.min.x+i, r.max.y-i), c, …
+ bitblt2(l, Pt(r.max.x-i, r.min.y+i),
+ l, Rect(r.max.x-i, r.min.y+i, r.max.x, r.max.y-i), c, …
}else if(i < 0){
- bitblt(l, Pt(r.min.x, r.min.y+i),
- l, Rect(r.min.x, r.min.y+i, r.max.x, r.min.y), c);
- bitblt(l, Pt(r.min.x, r.max.y),
- l, Rect(r.min.x, r.max.y, r.max.x, r.max.y-i), c);
- bitblt(l, Pt(r.min.x+i, r.min.y+i),
- l, Rect(r.min.x+i, r.min.y+i, r.min.x, r.max.y-i), c);
- bitblt(l, Pt(r.max.x, r.min.y+i),
- l, Rect(r.max.x, r.min.y+i, r.max.x-i, r.max.y-i), c);
+ bitblt2(l, Pt(r.min.x, r.min.y+i),
+ l, Rect(r.min.x, r.min.y+i, r.max.x, r.min.y), c, _bor…
+ bitblt2(l, Pt(r.min.x, r.max.y),
+ l, Rect(r.min.x, r.max.y, r.max.x, r.max.y-i), c, _bor…
+ bitblt2(l, Pt(r.min.x+i, r.min.y+i),
+ l, Rect(r.min.x+i, r.min.y+i, r.min.x, r.max.y-i), c, …
+ bitblt2(l, Pt(r.max.x, r.min.y+i),
+ l, Rect(r.max.x, r.min.y+i, r.max.x-i, r.max.y-i), c, …
}
}
diff --git a/libXg/gcs.c b/libXg/gcs.c
@@ -201,18 +201,16 @@ _getgc(Bitmap *b, unsigned long gcvm, XGCValues *pgcv)
GC
_getfillgc(Fcode f, Bitmap *b, unsigned long val)
{
- return _getfillgc2(f, b, val, _bgpixel);
+ return _getfillgc2(f, b, val, _fgpixel, _bgpixel);
}
GC
-_getfillgc2(Fcode f, Bitmap *b, unsigned long val, unsigned long bg)
+_getfillgc2(Fcode f, Bitmap *b, unsigned long val, unsigned long fg, unsigned …
{
int xf, m;
unsigned long v, spix, vmax;
XGCValues gcv;
- unsigned long fg = _fgpixel;
-
f &= F;
vmax = _ld2dmask[b->ldepth];
v = val & vmax;
@@ -303,19 +301,17 @@ _getfillgc2(Fcode f, Bitmap *b, unsigned long val, unsign…
GC
_getcopygc(Fcode f, Bitmap *db, Bitmap *sb, int *bltfunc)
{
- return _getcopygc2(f, db, sb, bltfunc, _bgpixel);
+ return _getcopygc2(f, db, sb, bltfunc, _fgpixel, _bgpixel);
}
GC
-_getcopygc2(Fcode f, Bitmap *db, Bitmap *sb, int *bltfunc, unsigned long bg)
+_getcopygc2(Fcode f, Bitmap *db, Bitmap *sb, int *bltfunc, unsigned long fg, u…
{
unsigned long spix, df, sf;
int xf, c;
XGCValues gcv;
unsigned long gcvm;
- unsigned long fg = _fgpixel;
-
f &= F;
gcvm = 0;
df = db->flag;
diff --git a/libXg/getrect.c b/libXg/getrect.c
@@ -57,9 +57,9 @@ getrect(int but, Mouse *m){
r.max = m->xy;
do{
rc = rcanon(r);
- border(&screen, rc, 2, F&~D);
+ border(&screen, rc, 2, F&~D, _bgpixel);
*m = emouse();
- border(&screen, rc, 2, F&~D);
+ border(&screen, rc, 2, F&~D, _bgpixel);
r.max = m->xy;
}while(m->buttons & but);
diff --git a/libXg/libgint.h b/libXg/libgint.h
@@ -34,8 +34,8 @@ typedef char* caddr_t;
/* Return a GCs for solid filling/strings/etc., segments/points, and tiling */
extern GC _getfillgc(Fcode, Bitmap*, unsigned long);
extern GC _getcopygc(Fcode, Bitmap*, Bitmap*, int*);
-extern GC _getfillgc2(Fcode, Bitmap*, unsigned long, unsigned long);
-extern GC _getcopygc2(Fcode, Bitmap*, Bitmap*, int*, unsigned long);
+extern GC _getfillgc2(Fcode, Bitmap*, unsigned long, unsigned long, uns…
+extern GC _getcopygc2(Fcode, Bitmap*, Bitmap*, int*, unsigned long, uns…
extern GC _getgc(Bitmap*, unsigned long, XGCValues *);
/* convert between different bitmap depths */
diff --git a/libXg/menuhit.c b/libXg/menuhit.c
@@ -117,7 +117,7 @@ menuscrollpaint(Rectangle scrollr, int off, int nitem, int …
r.max.y = scrollr.min.y + (Dy(scrollr)*(off+nitemdrawn))/nitem;
if(r.max.y < r.min.y+2)
r.max.y = r.min.y+2;
- border(&screen, r, 1, F);
+ border(&screen, r, 1, F, _bgpixel);
if(menutxt == 0){
menutxt = balloc(Rect(0, 0, 16, 16), 0);
if(menutxt)
@@ -197,7 +197,7 @@ menuhit(int but, Mouse *m, Menu *menu)
b = &screen;
bitblt(b, menur.min, &screen, menur, S);
bitblt(&screen, menur.min, &screen, menur, 0);
- border(&screen, menur, Blackborder, F);
+ border(&screen, menur, Blackborder, F, _bgpixel);
r = menurect(textr, lasti);
cursorset(divpt(add(r.min, r.max), 2));
menupaint(menu, textr, off, nitemdrawn);
diff --git a/libXg/xtbinit.c b/libXg/xtbinit.c
@@ -41,8 +41,8 @@ XftColor bgcolor;
extern char *machine;
Display *_dpy;
Widget _toplevel;
-unsigned long _fgpixel, _bgpixel, _cmdbgpixel;
-XColor _fgcolor, _bgcolor, _cmdbgcolor;
+unsigned long _fgpixel, _bgpixel, _cmdbgpixel, _borderpixel;
+XColor _fgcolor, _bgcolor, _cmdbgcolor, _bordercolor;
int _ld2d[6] = { 1, 2, 4, 8, 16, 24 };
unsigned long _ld2dmask[6] = { 0x1, 0x3, 0xF, 0xFF, 0xFFFF, 0x00FFFFFF …
Colormap _libg_cmap;
@@ -163,7 +163,7 @@ xtbinit(Errfunc f, char *class, int *pargc, char **argv, ch…
widg = XtCreateManagedWidget("gwin", gwinWidgetClass, _toplevel, args, n);
char bgspec[512] = {0};
- snprintf(bgspec, sizeof(bgspec) - 1, "%s", getenv("BACKGROUND") ? getenv("…
+ strncpy(bgspec, getenv("BACKGROUND") ? getenv("BACKGROUND") : "#ffffff", s…
char tbg[512], cbg[512];
if (sscanf(bgspec, "%511[^:]:%s", &tbg, &cbg) == 1)
@@ -173,6 +173,7 @@ xtbinit(Errfunc f, char *class, int *pargc, char **argv, ch…
XAllocNamedColor(_dpy, DefaultColormap(_dpy, DefaultScreen(_dpy)), getenv(…
XAllocNamedColor(_dpy, DefaultColormap(_dpy, DefaultScreen(_dpy)), tbg, &_…
XAllocNamedColor(_dpy, DefaultColormap(_dpy, DefaultScreen(_dpy)), cbg, &_…
+ XAllocNamedColor(_dpy, DefaultColormap(_dpy, DefaultScreen(_dpy)), getenv(…
n = 0;
XtSetArg(args[n], XtNdepth, &depth); n++;
@@ -195,6 +196,7 @@ xtbinit(Errfunc f, char *class, int *pargc, char **argv, ch…
_fgpixel = _fgcolor.pixel;
_bgpixel = _bgcolor.pixel;
_cmdbgpixel = _cmdbgcolor.pixel;
+ _borderpixel = _bordercolor.pixel;
XRenderColor xrcolor = {0};
xrcolor.red = _fgcolor.red;
diff --git a/libframe/frdelete.c b/libframe/frdelete.c
@@ -53,10 +53,10 @@ frdelete(Frame *f, ulong p0, ulong p1)
r.max = pt1;
r.max.x += b->wid;
r.max.y += f->fheight;
- bitblt2(f->b, pt0, f->b, r, S, f->bg);
+ bitblt2(f->b, pt0, f->b, r, S, 0, f->bg);
if(pt0.y == pt1.y)
r.min.x = r.max.x-(pt1.x-pt0.x);
- bitblt2(f->b, r.min, f->b, r, 0, f->bg);
+ bitblt2(f->b, r.min, f->b, r, 0, 0, f->bg);
}
_fradvance(f, &pt1, b);
pt0.x += _frnewwid(f, pt0, b);
@@ -75,8 +75,8 @@ frdelete(Frame *f, ulong p0, ulong p1)
q0 = pt0.y+f->fheight;
q1 = pt1.y+f->fheight;
q2 = pt2.y+f->fheight;
- bitblt2(f->b, pt0, f->b, Rect(pt1.x, pt1.y, f->r.max.x…
- bitblt2(f->b, Pt(f->r.min.x, q0), f->b, Rect(f->r.min.…
+ bitblt2(f->b, pt0, f->b, Rect(pt1.x, pt1.y, f->r.max.x…
+ bitblt2(f->b, Pt(f->r.min.x, q0), f->b, Rect(f->r.min.…
frselectf(f, Pt(pt2.x, pt2.y-(pt1.y-pt0.y)), pt2, 0);
}else
frselectf(f, pt0, pt2, 0);
diff --git a/libframe/frinsert.c b/libframe/frinsert.c
@@ -185,10 +185,10 @@ frinsert(Frame *f, Rune *sp, Rune *ep, ulong p0)
r.min.y = q0;
r.max.y = y-(q1-q0);
if(q1 < y)
- bitblt2(f->b, Pt(f->r.min.x, q1), f->b, r, S, …
+ bitblt2(f->b, Pt(f->r.min.x, q1), f->b, r, S, …
r.min = pt0;
r.max.y = q0;
- bitblt2(f->b, pt1, f->b, r, S, f->bg);
+ bitblt2(f->b, pt1, f->b, r, S, 0, f->bg);
}
}
/*
@@ -203,14 +203,14 @@ frinsert(Frame *f, Rune *sp, Rune *ep, ulong p0)
r.max = r.min;
r.max.x += b->wid;
r.max.y += f->fheight;
- bitblt2(f->b, pt, f->b, r, S, f->bg);
+ bitblt2(f->b, pt, f->b, r, S, 0, f->bg);
if(pt.y < y){ /* clear bit hanging off right */
r.min = pt;
r.max = pt;
r.min.x += b->wid;
r.max.x = f->r.max.x;
r.max.y += f->fheight;
- bitblt2(f->b, r.min, f->b, r, 0, f->bg);
+ bitblt2(f->b, r.min, f->b, r, 0, 0, f->bg);
}
y = pt.y;
}else{
@@ -220,7 +220,7 @@ frinsert(Frame *f, Rune *sp, Rune *ep, ulong p0)
r.max.y += f->fheight;
if(r.max.x >= f->r.max.x)
r.max.x = f->r.max.x;
- bitblt2(f->b, r.min, f->b, r, 0, f->bg);
+ bitblt2(f->b, r.min, f->b, r, 0, 0, f->bg);
y = (pt.x == f->left)? pt.y : 0;
}
}
diff --git a/libframe/frselect.c b/libframe/frselect.c
@@ -70,16 +70,16 @@ frselectf(Frame *f, Point p0, Point p1, Fcode c)
q1.x++;
else
p0.x--;
- bitblt2(f->b, p0, f->b, Rpt(p0, q1), c, f->bg);
+ bitblt2(f->b, p0, f->b, Rpt(p0, q1), c, 0, f->bg);
}else{
if(p0.x >= f->r.max.x)
p0.x = f->r.max.x-1;
- bitblt2(f->b, p0, f->b, Rect(p0.x, p0.y, f->r.max.x, q0.y), c,…
+ bitblt2(f->b, p0, f->b, Rect(p0.x, p0.y, f->r.max.x, q0.y), c,…
if(n > 1)
bitblt2(f->b, Pt(f->r.min.x, q0.y),
- f->b, Rect(f->r.min.x, q0.y, f->r.max.x, p1.y)…
+ f->b, Rect(f->r.min.x, q0.y, f->r.max.x, p1.y)…
bitblt2(f->b, Pt(f->r.min.x, p1.y),
- f->b, Rect(f->r.min.x, p1.y, q1.x, q1.y), c, f…
+ f->b, Rect(f->r.min.x, p1.y, q1.x, q1.y), c, 0…
}
}
diff --git a/samterm/flayer.c b/samterm/flayer.c
@@ -65,7 +65,7 @@ flinit(Flayer *l, Rectangle r, XftFont *ft, unsigned long bg)
l->origin = l->p0 = l->p1 = 0;
frinit(&l->f, inset(flrect(l, r), FLMARGIN), ft, &screen, bg);
newvisibilities(1);
- bitblt2(&screen, l->entire.min, &screen, l->entire, 0, l->bg);
+ bitblt2(&screen, l->entire.min, &screen, l->entire, 0, 0, l->bg);
scrdraw(l, 0L);
flborder(l, 0);
}
@@ -74,12 +74,12 @@ void
flclose(Flayer *l)
{
if(l->visible == All)
- bitblt2(&screen, l->entire.min, &screen, l->entire, 0, l->bg);
+ bitblt2(&screen, l->entire.min, &screen, l->entire, 0, 0, l->b…
else if(l->visible == Some){
if(l->f.b == 0)
l->f.b = balloc(l->entire, screen.ldepth);
if(l->f.b){
- bitblt2(l->f.b, l->entire.min, l->f.b, l->entire, 0, l…
+ bitblt2(l->f.b, l->entire.min, l->f.b, l->entire, 0, 0…
flrefresh(l, l->entire, 0);
}
}
@@ -95,8 +95,8 @@ void
flborder(Flayer *l, int wide)
{
if(flprepare(l)){
- border(l->f.b, l->entire, FLMARGIN, 0);
- border(l->f.b, l->entire, wide? FLMARGIN : 1, F&~D);
+ border(l->f.b, l->entire, FLMARGIN, 0, l->bg);
+ border(l->f.b, l->entire, wide? FLMARGIN : 1, F&~D, l->bg);
if(l->visible==Some)
flrefresh(l, l->entire, 0);
}
@@ -166,7 +166,7 @@ newvisibilities(int redraw)
case V(Some, All):
if(l->f.b){
- bitblt2(&screen, l->entire.min, l->f.b, l->ent…
+ bitblt2(&screen, l->entire.min, l->f.b, l->ent…
bfree(l->f.b);
l->f.b = &screen;
break;
@@ -319,7 +319,7 @@ flreshape(Rectangle dr)
lDrect = dr;
move = 0;
/* no moving on rio; must repaint */
- bitblt2(&screen, lDrect.min, &screen, lDrect, 0, l->bg);
+ bitblt2(&screen, lDrect.min, &screen, lDrect, 0, 0, l->bg);
for(i=0; i<nllist; i++){
l = llist[i];
f = &l->f;
@@ -371,8 +371,8 @@ flprepare(Flayer *l)
f->b = &screen;
else if((f->b = balloc(l->entire, screen.ldepth))==0)
return 0;
- bitblt2(f->b, l->entire.min, f->b, l->entire, 0, l->bg);
- border(f->b, l->entire, l==llist[0]? FLMARGIN : 1, F&~D);
+ bitblt2(f->b, l->entire.min, f->b, l->entire, 0, 0, l->bg);
+ border(f->b, l->entire, l==llist[0]? FLMARGIN : 1, F&~D, l->bg…
n = f->nchars;
frinit(f, f->entire, f->font, f->b, l->bg);
r = (*l->textfn)(l, n, &n);
@@ -410,7 +410,7 @@ flrefresh(Flayer *l, Rectangle r, int i)
Top:
if((t=llist[i++]) == l){
if(!justvis)
- bitblt2(&screen, r.min, l->f.b, r, S, l->bg);
+ bitblt2(&screen, r.min, l->f.b, r, S, 0, l->bg);
somevis = 1;
}else{
if(!rectXrect(t->entire, r))
diff --git a/samterm/scroll.c b/samterm/scroll.c
@@ -38,7 +38,7 @@ void
scrflip(Flayer *l, Rectangle r)
{
if(rectclip(&r, l->scroll))
- bitblt2(l->f.b, r.min, l->f.b, r, F&~D, l->bg);
+ bitblt2(l->f.b, r.min, l->f.b, r, F&~D, 0, l->bg);
}
void
@@ -67,12 +67,12 @@ scrdraw(Flayer *l, long tot)
r1.max.x = Dx(r);
}else
b = l->f.b;
- bitblt2(b, r1.min, b, r1, F, l->bg);
+ bitblt2(b, r1.min, b, r1, F, 0, l->bg);
texture(b, inset(r1, 1), darkgrey, S);
r2 = scrpos(r1, l->origin, l->origin+l->f.nchars, tot);
- bitblt2(b, r2.min, b, r2, 0, l->bg);
+ bitblt2(b, r2.min, b, r2, 0, 0, l->bg);
if(b!=l->f.b)
- bitblt2(l->f.b, r.min, b, r1, S, l->bg);
+ bitblt2(l->f.b, r.min, b, r1, S, 0, l->bg);
}
void
You are viewing proxied material from vernunftzentrum.de. 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.