summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDana Jansens <danakj@orodu.net>2003-09-01 03:10:47 +0000
committerDana Jansens <danakj@orodu.net>2003-09-01 03:10:47 +0000
commite91814e99f8e71fdf2d930acf43988110969547d (patch)
treebc280f5ae1973f3ed64ddbc877033d57bd825497
parent93547b57949f3fbb125d1bf9520c006930932b3b (diff)
add interlaceColor, and support interlaced gradients
-rw-r--r--render/gradient.c20
-rw-r--r--render/render.h1
-rw-r--r--render/theme.c9
3 files changed, 28 insertions, 2 deletions
diff --git a/render/gradient.c b/render/gradient.c
index a08c258b..c2f7fac7 100644
--- a/render/gradient.c
+++ b/render/gradient.c
@@ -82,6 +82,23 @@ void RrRender(RrAppearance *a, int w, int h)
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 @@ static void gradient_solid(RrAppearance *l, int w, int 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);
}
diff --git a/render/render.h b/render/render.h
index 19f0989e..88590713 100644
--- a/render/render.h
+++ b/render/render.h
@@ -67,6 +67,7 @@ struct _RrSurface {
RrColor *border_color;
RrColor *bevel_dark;
RrColor *bevel_light;
+ RrColor *interlace_color;
gboolean interlaced;
gboolean border;
RrAppearance *parent;
diff --git a/render/theme.c b/render/theme.c
index c87f58c2..d8bd41f0 100644
--- a/render/theme.c
+++ b/render/theme.c
@@ -1170,13 +1170,15 @@ static gboolean read_appearance(XrmDatabase db, const RrInstance *inst,
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 @@ static gboolean read_appearance(XrmDatabase db, const RrInstance *inst,
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);