X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=render%2Frender.c;h=0e4d244e9d86bc3e0333f038ce6ae8a6f34db8b4;hb=8a4e27bdc362e3781ac947ff5536c1f0dbd3ba60;hp=71bf7fa3323369e25a4558de34f11feca4b2ee35;hpb=214fa8714ea0d2182c155eeb4b32ec32d7df337f;p=chaz%2Fopenbox diff --git a/render/render.c b/render/render.c index 71bf7fa3..0e4d244e 100644 --- a/render/render.c +++ b/render/render.c @@ -7,7 +7,7 @@ #include "mask.h" #include "color.h" #include "image.h" -#include "../kernel/openbox.h" +#include "kernel/openbox.h" int render_depth; Visual *render_visual; @@ -385,3 +385,43 @@ void pixel32_to_pixmap(pixel32 *in, Pixmap out, int x, int y, int w, int h) im->data = NULL; XDestroyImage(im); } + +void appearance_minsize(Appearance *l, Size *s) +{ + int i; + SIZE_SET(*s, 0, 0); + + switch (l->surface.type) { + case Surface_Planar: + if (l->surface.data.planar.border || + l->surface.data.planar.bevel == Bevel1) + SIZE_SET(*s, 2, 2); + else if (l->surface.data.planar.bevel == Bevel2) + SIZE_SET(*s, 4, 4); + + for (i = 0; i < l->textures; ++i) + switch (l->texture[i].type) { + case Bitmask: + s->width += l->texture[i].data.mask.mask->w; + s->height += l->texture[i].data.mask.mask->h; + break; + case Text: + s->width +=font_measure_string(l->texture[i].data.text.font, + l->texture[i].data.text.string, + l->texture[i].data.text.shadow, + l->texture[i].data.text.offset); + s->height += font_height(l->texture[i].data.text.font, + l->texture[i].data.text.shadow, + l->texture[i].data.text.offset); + break; + case RGBA: + s->width += l->texture[i].data.rgba.width; + s->height += l->texture[i].data.rgba.height; + break; + case NoTexture: + break; + } + break; + } + return s; +}