#include "font.h"
#include "mask.h"
#include "color.h"
+#include "image.h"
#include "../kernel/openbox.h"
int render_depth;
XImage *im = NULL;
Pixmap oldp;
- if (w <= 0 || h <= 0) return;
+ if (w <= 0 || h <= 0 || x+w <= 0 || y+h <= 0) return;
g_assert(l->surface.type == Surface_Planar);
render_colormap);
g_assert(l->xftdraw != NULL);
- if (l->surface.data.planar.pixel_data != NULL)
- g_free(l->surface.data.planar.pixel_data);
+ g_free(l->surface.data.planar.pixel_data);
l->surface.data.planar.pixel_data = g_new(pixel32, w * h);
if (l->surface.data.planar.grad == Background_Solid)
l->xftdraw = XftDrawCreate(ob_display, l->pixmap,
render_visual, render_colormap);
}
- font_draw(l->xftdraw, &l->texture[i].data.text, x, y, w, h);
+ font_draw(l->xftdraw, &l->texture[i].data.text,
+ &l->texture[i].position);
break;
case Bitmask:
if (l->texture[i].data.mask.color->gc == None)
color_allocate_gc(l->texture[i].data.mask.color);
- mask_draw(l->pixmap, &l->texture[i].data.mask, w, h);
+ mask_draw(l->pixmap, &l->texture[i].data.mask,
+ &l->texture[i].position);
+ break;
+ case RGBA:
+ image_draw(l->surface.data.planar.pixel_data,
+ &l->texture[i].data.rgba,
+ &l->texture[i].position);
break;
}
}
out->surface.type = type;
out->textures = numtex;
out->xftdraw = NULL;
- if (numtex) out->texture = g_new(Texture, numtex);
+ if (numtex) out->texture = g_new0(Texture, numtex);
else out->texture = NULL;
out->pixmap = None;