diff options
| author | Dana Jansens <danakj@orodu.net> | 2003-04-06 06:19:36 +0000 |
|---|---|---|
| committer | Dana Jansens <danakj@orodu.net> | 2003-04-06 06:19:36 +0000 |
| commit | 8d08de4bb62ad9a114488e4ca281d4dcc03d84d9 (patch) | |
| tree | 8dc02ab2c338015b074eec62cf92edefc30d82f0 /render | |
| parent | 852f36235eee5f3414430d1b89e91b1ba68db666 (diff) | |
add function to give the minimum size of an appearance to fully render it's data
Diffstat (limited to 'render')
| -rw-r--r-- | render/render.c | 42 | ||||
| -rw-r--r-- | render/render.h | 2 |
2 files changed, 43 insertions, 1 deletions
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; +} diff --git a/render/render.h b/render/render.h index e282740e..1a41b219 100644 --- a/render/render.h +++ b/render/render.h @@ -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*/ |
