1 /* -*- indent-tabs-mode: nil; tab-width: 4; c-basic-offset: 4; -*-
3 render.h for the Openbox window manager
4 Copyright (c) 2006 Mikael Magnusson
5 Copyright (c) 2003-2007 Dana Jansens
6 Copyright (c) 2003 Derek Foreman
8 This program is free software; you can redistribute it and/or modify
9 it under the terms of the GNU General Public License as published by
10 the Free Software Foundation; either version 2 of the License, or
11 (at your option) any later version.
13 This program is distributed in the hope that it will be useful,
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 GNU General Public License for more details.
18 See the COPYING file for a copy of the GNU General Public License.
27 #include <X11/Xlib.h> /* some platforms dont include this as needed for Xft */
28 #include <pango/pango.h>
29 #include <pango/pangoxft.h>
34 typedef union _RrTextureData RrTextureData;
35 typedef struct _RrAppearance RrAppearance;
36 typedef struct _RrSurface RrSurface;
37 typedef struct _RrFont RrFont;
38 typedef struct _RrTexture RrTexture;
39 typedef struct _RrTextureMask RrTextureMask;
40 typedef struct _RrTextureRGBA RrTextureRGBA;
41 typedef struct _RrTextureText RrTextureText;
42 typedef struct _RrTextureLineArt RrTextureLineArt;
43 typedef struct _RrPixmapMask RrPixmapMask;
44 typedef struct _RrInstance RrInstance;
45 typedef struct _RrColor RrColor;
47 typedef guint32 RrPixel32;
48 typedef guint16 RrPixel16;
49 typedef guchar RrPixel8;
66 RR_SURFACE_SPLIT_VERTICAL,
67 RR_SURFACE_HORIZONTAL,
70 RR_SURFACE_CROSS_DIAGONAL,
72 RR_SURFACE_MIRROR_HORIZONTAL
89 /* Put middle first so it's the default */
100 RR_FONTWEIGHT_SEMIBOLD,
102 RR_FONTWEIGHT_ULTRABOLD
112 RrSurfaceColorType grad;
117 RrColor *border_color;
119 RrColor *bevel_light;
120 RrColor *interlace_color;
123 RrAppearance *parent;
126 RrPixel32 *pixel_data;
127 gint bevel_dark_adjust; /* 0-255, default is 64 */
128 gint bevel_light_adjust; /* 0-255, default is 128 */
129 RrColor *split_primary;
130 RrColor *split_secondary;
133 struct _RrTextureText {
138 gint shadow_offset_x;
139 gint shadow_offset_y;
140 RrColor *shadow_color;
142 gboolean shortcut; /*!< Underline/hilight a character */
143 guint shortcut_pos; /*!< Position in bytes of the character to hilight */
144 RrColor *shortcut_color; /*!< Color for the hilighted character, or NULL */
145 RrEllipsizeMode ellipsize;
148 struct _RrPixmapMask {
149 const RrInstance *inst;
156 struct _RrTextureMask {
161 struct _RrTextureRGBA {
166 /* cached scaled so we don't have to scale often */
172 struct _RrTextureLineArt {
180 union _RrTextureData {
184 RrTextureLineArt lineart;
192 struct _RrAppearance {
193 const RrInstance *inst;
201 /* cached for internal use */
205 /* these are the same on all endian machines because it seems to be dependant
206 on the endianness of the gfx card, not the cpu. */
207 #define RrDefaultAlphaOffset 24
208 #define RrDefaultRedOffset 16
209 #define RrDefaultGreenOffset 8
210 #define RrDefaultBlueOffset 0
212 #define RrDefaultFontFamily "arial,sans"
213 #define RrDefaultFontSize 8
214 #define RrDefaultFontWeight RR_FONTWEIGHT_NORMAL
215 #define RrDefaultFontSlant RR_FONTSLANT_NORMAL
217 RrInstance* RrInstanceNew (Display *display, gint screen);
218 void RrInstanceFree (RrInstance *inst);
220 Display* RrDisplay (const RrInstance *inst);
221 gint RrScreen (const RrInstance *inst);
222 Window RrRootWindow (const RrInstance *inst);
223 Visual* RrVisual (const RrInstance *inst);
224 gint RrDepth (const RrInstance *inst);
225 Colormap RrColormap (const RrInstance *inst);
226 gint RrRedOffset (const RrInstance *inst);
227 gint RrGreenOffset (const RrInstance *inst);
228 gint RrBlueOffset (const RrInstance *inst);
229 gint RrRedShift (const RrInstance *inst);
230 gint RrGreenShift (const RrInstance *inst);
231 gint RrBlueShift (const RrInstance *inst);
232 gint RrRedMask (const RrInstance *inst);
233 gint RrGreenMask (const RrInstance *inst);
234 gint RrBlueMask (const RrInstance *inst);
236 RrColor *RrColorNew (const RrInstance *inst, gint r, gint g, gint b);
237 RrColor *RrColorParse (const RrInstance *inst, gchar *colorname);
238 void RrColorFree (RrColor *in);
240 gint RrColorRed (const RrColor *c);
241 gint RrColorGreen (const RrColor *c);
242 gint RrColorBlue (const RrColor *c);
243 gulong RrColorPixel (const RrColor *c);
244 GC RrColorGC (RrColor *c);
246 RrAppearance *RrAppearanceNew (const RrInstance *inst, gint numtex);
247 RrAppearance *RrAppearanceCopy (RrAppearance *a);
248 void RrAppearanceFree (RrAppearance *a);
249 void RrAppearanceAddTextures(RrAppearance *a, gint numtex);
251 RrFont *RrFontOpen (const RrInstance *inst, const gchar *name,
252 gint size, RrFontWeight weight,
254 RrFont *RrFontOpenDefault (const RrInstance *inst);
255 void RrFontClose (RrFont *f);
256 RrSize *RrFontMeasureString (const RrFont *f, const gchar *str,
257 gint shadow_offset_x, gint shadow_offset_y);
258 gint RrFontHeight (const RrFont *f, gint shadow_offset_y);
259 gint RrFontMaxCharWidth (const RrFont *f);
261 /* Paint into the appearance. The old pixmap is returned (if there was one). It
262 is the responsibility of the caller to call XFreePixmap on the return when
264 Pixmap RrPaintPixmap (RrAppearance *a, gint w, gint h);
265 void RrPaint (RrAppearance *a, Window win, gint w, gint h);
266 void RrMinSize (RrAppearance *a, gint *w, gint *h);
267 gint RrMinWidth (RrAppearance *a);
268 gint RrMinHeight (RrAppearance *a);
269 void RrMargins (RrAppearance *a, gint *l, gint *t, gint *r, gint *b);
271 gboolean RrPixmapToRGBA(const RrInstance *inst,
272 Pixmap pmap, Pixmap mask,
273 gint *w, gint *h, RrPixel32 **data);
277 #endif /*__render_h*/