summaryrefslogtreecommitdiff
path: root/render/render.c
diff options
context:
space:
mode:
authorDana Jansens <danakj@orodu.net>2003-08-31 17:02:49 +0000
committerDana Jansens <danakj@orodu.net>2003-08-31 17:02:49 +0000
commitcd75b454eba706f89e82041c3f62ab08998d0397 (patch)
tree9e10bf822cc940bf2dbe0b505ad63614cb48c079 /render/render.c
parent6e86a42c4b468c6c58cf1acf6b288a250543db98 (diff)
add RrColorGC
add a LineArt texture type for drawing a line, this is used for drawing the menu separators
Diffstat (limited to 'render/render.c')
-rw-r--r--render/render.c32
1 files changed, 27 insertions, 5 deletions
diff --git a/render/render.c b/render/render.c
index 4735ec51..1351cb36 100644
--- a/render/render.c
+++ b/render/render.c
@@ -97,18 +97,35 @@ void RrPaint(RrAppearance *l, Window win, gint w, gint h)
RrColormap(l->inst));
}
RrFontDraw(l->xftdraw, &l->texture[i].data.text, &tarea);
- break;
+ break;
+ case RR_TEXTURE_LINE_ART:
+ if (!transferred) {
+ transferred = 1;
+ if (l->surface.grad != RR_SURFACE_SOLID)
+ pixel_data_to_pixmap(l, 0, 0, w, h);
+ }
+ g_message("%d %d -> %d %d",
+ l->texture[i].data.lineart.x1,
+ l->texture[i].data.lineart.y1,
+ l->texture[i].data.lineart.x2,
+ l->texture[i].data.lineart.y2);
+ XDrawLine(RrDisplay(l->inst), l->pixmap,
+ RrColorGC(l->texture[i].data.lineart.color),
+ l->texture[i].data.lineart.x1,
+ l->texture[i].data.lineart.y1,
+ l->texture[i].data.lineart.x2,
+ l->texture[i].data.lineart.y2);
+ break;
case RR_TEXTURE_MASK:
if (!transferred) {
transferred = 1;
if (l->surface.grad != RR_SURFACE_SOLID)
pixel_data_to_pixmap(l, 0, 0, w, h);
}
- if (l->texture[i].data.mask.color->gc == None)
- RrColorAllocateGC(l->texture[i].data.mask.color);
RrPixmapMaskDraw(l->pixmap, &l->texture[i].data.mask, &tarea);
- break;
+ break;
case RR_TEXTURE_RGBA:
+ g_assert(!transferred);
RrImageDraw(l->surface.pixel_data,
&l->texture[i].data.rgba, &tarea);
break;
@@ -121,7 +138,6 @@ void RrPaint(RrAppearance *l, Window win, gint w, gint h)
pixel_data_to_pixmap(l, 0, 0, w, h);
}
-
XSetWindowBackgroundPixmap(RrDisplay(l->inst), win, l->pixmap);
XClearWindow(RrDisplay(l->inst), win);
if (oldp) XFreePixmap(RrDisplay(l->inst), oldp);
@@ -288,6 +304,12 @@ void RrMinsize(RrAppearance *l, gint *w, gint *h)
*w += MAX(*w, l->texture[i].data.rgba.width);
*h += MAX(*h, l->texture[i].data.rgba.height);
break;
+ case RR_TEXTURE_LINE_ART:
+ *w += MAX(*w, MAX(l->texture[i].data.lineart.x1,
+ l->texture[i].data.lineart.x2));
+ *h += MAX(*h, MAX(l->texture[i].data.lineart.y1,
+ l->texture[i].data.lineart.y2));
+ break;
}
}