all repos — openbox @ e91814e99f8e71fdf2d930acf43988110969547d

openbox fork - make it a bit more like ryudo

add interlaceColor, and support interlaced gradients
Dana Jansens danakj@orodu.net
commit

e91814e99f8e71fdf2d930acf43988110969547d

parent

93547b57949f3fbb125d1bf9520c006930932b3b

3 files changed, 28 insertions(+), 2 deletions(-)

jump to
M render/gradient.crender/gradient.c

@@ -82,6 +82,23 @@ data + off * w + w - 2,

a->surface.relief==RR_RELIEF_RAISED); } } + + if (a->surface.interlaced) { + int i; + RrPixel32 *p; + + r = a->surface.interlace_color->r; + g = a->surface.interlace_color->g; + b = a->surface.interlace_color->b; + current = (r << RrDefaultRedOffset) + + (g << RrDefaultGreenOffset) + + (b << RrDefaultBlueOffset); + p = data; + for (i = 0; i < h; i += 2, p += w) + for (x = 0; x < w; ++x, ++p) + *p = current; + } + } static void highlight(RrPixel32 *x, RrPixel32 *y, gboolean raised)

@@ -166,7 +183,8 @@ 0, 0, w, h);

if (sp->interlaced) { for (i = 0; i < h; i += 2) - XDrawLine(RrDisplay(l->inst), l->pixmap, RrColorGC(sp->secondary), + XDrawLine(RrDisplay(l->inst), l->pixmap, + RrColorGC(sp->interlace_color), 0, i, w, i); }
M render/render.hrender/render.h

@@ -67,6 +67,7 @@ RrColor *secondary;

RrColor *border_color; RrColor *bevel_dark; RrColor *bevel_light; + RrColor *interlace_color; gboolean interlaced; gboolean border; RrAppearance *parent;
M render/theme.crender/theme.c

@@ -1170,13 +1170,15 @@ gchar *rname, RrAppearance *value,

gboolean allow_trans) { gboolean ret = FALSE; - char *rclass = create_class_name(rname), *cname, *ctoname, *bcname; + char *rclass = create_class_name(rname); + char *cname, *ctoname, *bcname, *icname; char *rettype; XrmValue retvalue; cname = g_strconcat(rname, ".color", NULL); ctoname = g_strconcat(rname, ".colorTo", NULL); bcname = g_strconcat(rname, ".borderColor", NULL); + icname = g_strconcat(rname, ".interlaceColor", NULL); if (XrmGetResource(db, rname, rclass, &rettype, &retvalue) && retvalue.addr != NULL) {

@@ -1195,9 +1197,14 @@ if (value->surface.border)

if (!read_color(db, inst, bcname, &value->surface.border_color)) value->surface.border_color = RrColorNew(inst, 0, 0, 0); + if (value->surface.interlaced) + if (!read_color(db, inst, icname, + &value->surface.interlace_color)) + value->surface.interlace_color = RrColorNew(inst, 0, 0, 0); ret = TRUE; } + g_free(icname); g_free(bcname); g_free(ctoname); g_free(cname);