add function to give the minimum size of an appearance to fully render it's data

This commit is contained in:
Dana Jansens 2003-04-06 06:19:36 +00:00
parent 852f36235e
commit 8d08de4bb6
2 changed files with 43 additions and 1 deletions

View file

@ -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;
}

View file

@ -156,4 +156,6 @@ void truecolor_startup(void);
void pseudocolor_startup(void);
void pixel32_to_pixmap(pixel32 *in, Pixmap out, int x, int y, int w, int h);
void appearance_minsize(Appearance *l, Size *s);
#endif /*__render_h*/