gint xmargin;
gint ymargin;
+
+ Ulong fg;
+ Ulong bg;
+
} DviPixbufDevice;
static void dvi_pixbuf_draw_rule(DviContext *dvi, int x, int y, Uint w, Uint h, int fill);
{
DviPixbufDevice *c_device = (DviPixbufDevice *) dvi->device.device_data;
gint rowstride;
- gchar *p;
+ guchar *p;
gint i, j;
+ gint red, green, blue;
+
+ red = (c_device->fg >> 16) & 0xff;
+ green = (c_device->fg >> 8) & 0xff;
+ blue = c_device->fg & 0xff;
x += c_device->xmargin; y += c_device->ymargin;
return;
rowstride = gdk_pixbuf_get_rowstride (c_device->pixbuf);
- p = gdk_pixbuf_get_pixels (c_device->pixbuf) + rowstride * y + 4 * x;
+ p = gdk_pixbuf_get_pixels (c_device->pixbuf) + rowstride * y + 3 * x;
for (i = 0; i < h; i++) {
if (i == 0 || i == h - 1 || fill) {
for (j = 0; j < w; j++) {
- p[j * 4] = 0x00;
- p[j * 4 + 1] = 0x00;
- p[j * 4 + 2] = 0x00;
- p[j * 4 + 3] = 0xff;
+ p[j * 3] = red;
+ p[j * 3 + 1] = green;
+ p[j * 3 + 2] = blue;
}
} else {
- p[0] = 0x00;
- p[1] = 0x00;
- p[2] = 0x00;
- p[3] = 0xff;
- p[(w - 1) * 4] = 0x00;
- p[(w - 1) * 4 + 1] = 0x00;
- p[(w - 1) * 4 + 2] = 0x00;
- p[(w - 1) * 4 + 3] = 0xff;
+ p[0] = red;
+ p[1] = green;
+ p[2] = blue;
+ p[(w - 1) * 3] = red;
+ p[(w - 1) * 3 + 1] = green;
+ p[(w - 1) * 3 + 2] = blue;
}
p += rowstride;
}
static void *dvi_pixbuf_create_image(void *device_data, Uint w, Uint h, Uint bpp)
{
- return gdk_pixbuf_new (GDK_COLORSPACE_RGB, TRUE, 8, w, h);
+ return gdk_pixbuf_new (GDK_COLORSPACE_RGB, FALSE, 8, w, h);
return NULL;
}
static void dvi_pixbuf_put_pixel(void *image, int x, int y, Ulong color)
{
- gchar *p;
+ guchar *p;
- p = gdk_pixbuf_get_pixels (GDK_PIXBUF(image)) + y * gdk_pixbuf_get_rowstride(GDK_PIXBUF(image)) + x * 4;
+ p = gdk_pixbuf_get_pixels (GDK_PIXBUF(image)) + y * gdk_pixbuf_get_rowstride(GDK_PIXBUF(image)) + x * 3;
p[0] = (color >> 16) & 0xff;
p[1] = (color >> 8) & 0xff;
p[2] = color & 0xff;
- p[3] = (color >> 24) & 0xff;
}
static void dvi_pixbuf_set_color(void *device_data, Ulong fg, Ulong bg)
{
+ DviPixbufDevice *c_device = (DviPixbufDevice *) device_data;
+ c_device->fg = fg;
+
return;
}
page_width = dvi->dvi_page_w * dvi->params.conv + 2 * c_device->xmargin;
page_height = dvi->dvi_page_h * dvi->params.vconv + 2 * c_device->ymargin;
-
- c_device->pixbuf = gdk_pixbuf_new (GDK_COLORSPACE_RGB, TRUE, 8, page_width, page_height);
+
+ c_device->pixbuf = gdk_pixbuf_new (GDK_COLORSPACE_RGB, FALSE, 8, page_width, page_height);
gdk_pixbuf_fill (c_device->pixbuf, 0xffffffff);
mdvi_dopage (dvi, dvi->currpage);