summaryrefslogtreecommitdiff
path: root/render
diff options
context:
space:
mode:
Diffstat (limited to 'render')
-rw-r--r--render/render.c42
-rw-r--r--render/render.h2
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*/