render.h for the Openbox window manager
Copyright (c) 2006 Mikael Magnusson
- Copyright (c) 2003 Ben Jansens
+ Copyright (c) 2003-2007 Dana Jansens
Copyright (c) 2003 Derek Foreman
This program is free software; you can redistribute it and/or modify
#include "version.h"
#include <X11/Xlib.h> /* some platforms dont include this as needed for Xft */
-#define _XFT_NO_COMPAT_ /* no Xft 1 API */
-#include <X11/Xft/Xft.h>
+#include <pango/pangoxft.h>
#include <glib.h>
G_BEGIN_DECLS
typedef guint32 RrPixel32;
typedef guint16 RrPixel16;
+typedef guchar RrPixel8;
typedef enum {
RR_RELIEF_FLAT,
RR_SURFACE_DIAGONAL,
RR_SURFACE_CROSS_DIAGONAL,
RR_SURFACE_PYRAMID,
- RR_SURFACE_MIRROR_HORIZONTAL,
+ RR_SURFACE_MIRROR_HORIZONTAL
} RrSurfaceColorType;
typedef enum {
RR_JUSTIFY_RIGHT
} RrJustify;
+typedef enum {
+ RR_FONTWEIGHT_LIGHT,
+ RR_FONTWEIGHT_NORMAL,
+ RR_FONTWEIGHT_SEMIBOLD,
+ RR_FONTWEIGHT_BOLD,
+ RR_FONTWEIGHT_ULTRABOLD
+} RrFontWeight;
+
+typedef enum {
+ RR_FONTSLANT_NORMAL,
+ RR_FONTSLANT_ITALIC,
+ RR_FONTSLANT_OBLIQUE
+} RrFontSlant;
+
struct _RrSurface {
RrSurfaceColorType grad;
RrReliefType relief;
RrFont *font;
RrJustify justify;
RrColor *color;
- gchar *string;
+ const gchar *string;
+ gint shadow_offset_x;
+ gint shadow_offset_y;
+ RrColor *shadow_color;
+ guchar shadow_alpha;
+ gboolean shortcut; /*!< Underline a character */
+ guint shortcut_pos; /*!< Position in bytes of the character to underline */
};
struct _RrPixmapMask {
#define RrDefaultGreenOffset 8
#define RrDefaultBlueOffset 0
+#define RrDefaultFontFamily "arial,sans"
+#define RrDefaultFontSize 8
+#define RrDefaultFontWeight RR_FONTWEIGHT_NORMAL
+#define RrDefaultFontSlant RR_FONTSLANT_NORMAL
+
RrInstance* RrInstanceNew (Display *display, gint screen);
void RrInstanceFree (RrInstance *inst);
RrAppearance *RrAppearanceCopy (RrAppearance *a);
void RrAppearanceFree (RrAppearance *a);
-RrSize *RrFontMeasureString (const RrFont *f, const gchar *str);
-gint RrFontHeight (const RrFont *f);
-gint RrFontMaxCharWidth (const RrFont *f);
-
-void RrPaint (RrAppearance *a, Window win, gint w, gint h);
-void RrMinsize (RrAppearance *a, gint *w, gint *h);
-void RrMargins (RrAppearance *a, gint *l, gint *t, gint *r, gint *b);
+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 RrFontHeight (const RrFont *f, gint shadow_offset_y);
+gint RrFontMaxCharWidth (const RrFont *f);
+
+/* Paint into the appearance. The old pixmap is returned (if there was one). It
+ is the responsibility of the caller to call XFreePixmap on the return when
+ it is non-null. */
+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);
+gint RrMinHeight (RrAppearance *a);
+void RrMargins (RrAppearance *a, gint *l, gint *t, gint *r, gint *b);
gboolean RrPixmapToRGBA(const RrInstance *inst,
Pixmap pmap, Pixmap mask,