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;
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);
*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;
}
}
typedef struct _RrTextureMask RrTextureMask;
typedef struct _RrTextureRGBA RrTextureRGBA;
typedef struct _RrTextureText RrTextureText;
+typedef struct _RrTextureLineArt RrTextureLineArt;
typedef struct _RrPixmapMask RrPixmapMask;
typedef struct _RrInstance RrInstance;
typedef struct _RrColor RrColor;
RR_TEXTURE_NONE,
RR_TEXTURE_MASK,
RR_TEXTURE_TEXT,
+ RR_TEXTURE_LINE_ART,
RR_TEXTURE_RGBA
} RrTextureType;
RrPixel32 *cache;
};
+struct _RrTextureLineArt {
+ RrColor *color;
+ gint x1;
+ gint y1;
+ gint x2;
+ gint y2;
+};
+
union _RrTextureData {
RrTextureRGBA rgba;
RrTextureText text;
RrTextureMask mask;
+ RrTextureLineArt lineart;
};
struct _RrTexture {
gint RrColorGreen (const RrColor *c);
gint RrColorBlue (const RrColor *c);
gulong RrColorPixel (const RrColor *c);
+GC RrColorGC (RrColor *c);
RrAppearance *RrAppearanceNew (const RrInstance *inst, gint numtex);
RrAppearance *RrAppearanceCopy (RrAppearance *a);