Merge branch 'wip/alttab'
[mikachu/openbox.git] / render / render.h
index c13894a..260ebeb 100644 (file)
@@ -22,7 +22,7 @@
 #define __render_h
 
 #include "geom.h"
-#include "version.h"
+#include "render/version.h"
 
 #include <X11/Xlib.h> /* some platforms dont include this as needed for Xft */
 #include <pango/pangoxft.h>
@@ -85,6 +85,14 @@ typedef enum {
     RR_JUSTIFY_RIGHT
 } RrJustify;
 
+/* Put middle first so it's the default */
+typedef enum {
+    RR_ELLIPSIZE_MIDDLE,
+    RR_ELLIPSIZE_NONE,
+    RR_ELLIPSIZE_START,
+    RR_ELLIPSIZE_END
+} RrEllipsizeMode;
+
 typedef enum {
     RR_FONTWEIGHT_LIGHT,
     RR_FONTWEIGHT_NORMAL,
@@ -106,7 +114,7 @@ struct _RrSurface {
     RrColor *primary;
     RrColor *secondary;
     RrColor *border_color;
-    RrColor *bevel_dark; 
+    RrColor *bevel_dark;
     RrColor *bevel_light;
     RrColor *interlace_color;
     gboolean interlaced;
@@ -115,6 +123,10 @@ struct _RrSurface {
     gint parentx;
     gint parenty;
     RrPixel32 *pixel_data;
+    gint bevel_dark_adjust;  /* 0-255, default is 64 */
+    gint bevel_light_adjust; /* 0-255, default is 128 */
+    RrColor *split_primary;
+    RrColor *split_secondary;
 };
 
 struct _RrTextureText {
@@ -128,6 +140,9 @@ struct _RrTextureText {
     guchar shadow_alpha;
     gboolean shortcut; /*!< Underline a character */
     guint shortcut_pos; /*!< Position in bytes of the character to underline */
+    RrEllipsizeMode ellipsize;
+    gboolean flow; /* allow multiple lines.  must set maxwidth below */
+    gint maxwidth;
 };
 
 struct _RrPixmapMask {
@@ -152,6 +167,11 @@ struct _RrTextureRGBA {
     gint cwidth;
     gint cheight;
     RrPixel32 *cache;
+/* size and position to draw at */
+    gint tx;
+    gint ty;
+    gint twidth;
+    gint theight;
 };
 
 struct _RrTextureLineArt {
@@ -231,14 +251,16 @@ GC       RrColorGC    (RrColor *c);
 RrAppearance *RrAppearanceNew  (const RrInstance *inst, gint numtex);
 RrAppearance *RrAppearanceCopy (RrAppearance *a);
 void          RrAppearanceFree (RrAppearance *a);
+void          RrAppearanceRemoveTextures(RrAppearance *a);
 void          RrAppearanceAddTextures(RrAppearance *a, gint numtex);
 
-RrFont *RrFontOpen          (const RrInstance *inst, const gchar *name, gint size,
-                             RrFontWeight weight, RrFontSlant slant);
+RrFont *RrFontOpen          (const RrInstance *inst, const gchar *name,
+                             gint size, RrFontWeight weight, RrFontSlant slant);
 RrFont *RrFontOpenDefault   (const RrInstance *inst);
 void    RrFontClose         (RrFont *f);
 RrSize *RrFontMeasureString (const RrFont *f, const gchar *str,
-                             gint shadow_offset_x, gint shadow_offset_y);
+                             gint shadow_offset_x, gint shadow_offset_y,
+                             gboolean flow, gint maxwidth);
 gint    RrFontHeight        (const RrFont *f, gint shadow_offset_y);
 gint    RrFontMaxCharWidth  (const RrFont *f);
 
@@ -249,6 +271,8 @@ Pixmap RrPaintPixmap (RrAppearance *a, gint w, gint h);
 void   RrPaint       (RrAppearance *a, Window win, gint w, gint h);
 void   RrMinSize     (RrAppearance *a, gint *w, gint *h);
 gint   RrMinWidth    (RrAppearance *a);
+/* For text textures, if flow is TRUE, then the string must be set before
+   calling this, otherwise it doesn't need to be */
 gint   RrMinHeight   (RrAppearance *a);
 void   RrMargins     (RrAppearance *a, gint *l, gint *t, gint *r, gint *b);