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/pangoxft.h>
33 typedef union _RrTextureData RrTextureData;
34 typedef struct _RrAppearance RrAppearance;
35 typedef struct _RrSurface RrSurface;
36 typedef struct _RrFont RrFont;
37 typedef struct _RrTexture RrTexture;
38 typedef struct _RrTextureMask RrTextureMask;
39 typedef struct _RrTextureRGBA RrTextureRGBA;
40 typedef struct _RrTextureText RrTextureText;
41 typedef struct _RrTextureLineArt RrTextureLineArt;
42 typedef struct _RrPixmapMask RrPixmapMask;
43 typedef struct _RrInstance RrInstance;
44 typedef struct _RrColor RrColor;
46 typedef guint32 RrPixel32;
47 typedef guint16 RrPixel16;
48 typedef guchar RrPixel8;
65 RR_SURFACE_SPLIT_VERTICAL,
66 RR_SURFACE_HORIZONTAL,
69 RR_SURFACE_CROSS_DIAGONAL,
71 RR_SURFACE_MIRROR_HORIZONTAL
88 /* Put middle first so it's the default */
99 RR_FONTWEIGHT_SEMIBOLD,
101 RR_FONTWEIGHT_ULTRABOLD
111 RrSurfaceColorType grad;
116 RrColor *border_color;
118 RrColor *bevel_light;
119 RrColor *interlace_color;
122 RrAppearance *parent;
125 RrPixel32 *pixel_data;
128 struct _RrTextureText {
133 gint shadow_offset_x;
134 gint shadow_offset_y;
135 RrColor *shadow_color;
137 gboolean shortcut; /*!< Underline a character */
138 guint shortcut_pos; /*!< Position in bytes of the character to underline */
139 RrEllipsizeMode ellipsize;
142 struct _RrPixmapMask {
143 const RrInstance *inst;
150 struct _RrTextureMask {
155 struct _RrTextureRGBA {
160 /* cached scaled so we don't have to scale often */
166 struct _RrTextureLineArt {
174 union _RrTextureData {
178 RrTextureLineArt lineart;
186 struct _RrAppearance {
187 const RrInstance *inst;
195 /* cached for internal use */
199 /* these are the same on all endian machines because it seems to be dependant
200 on the endianness of the gfx card, not the cpu. */
201 #define RrDefaultAlphaOffset 24
202 #define RrDefaultRedOffset 16
203 #define RrDefaultGreenOffset 8
204 #define RrDefaultBlueOffset 0
206 #define RrDefaultFontFamily "arial,sans"
207 #define RrDefaultFontSize 8
208 #define RrDefaultFontWeight RR_FONTWEIGHT_NORMAL
209 #define RrDefaultFontSlant RR_FONTSLANT_NORMAL
211 RrInstance* RrInstanceNew (Display *display, gint screen);
212 void RrInstanceFree (RrInstance *inst);
214 Display* RrDisplay (const RrInstance *inst);
215 gint RrScreen (const RrInstance *inst);
216 Window RrRootWindow (const RrInstance *inst);
217 Visual* RrVisual (const RrInstance *inst);
218 gint RrDepth (const RrInstance *inst);
219 Colormap RrColormap (const RrInstance *inst);
220 gint RrRedOffset (const RrInstance *inst);
221 gint RrGreenOffset (const RrInstance *inst);
222 gint RrBlueOffset (const RrInstance *inst);
223 gint RrRedShift (const RrInstance *inst);
224 gint RrGreenShift (const RrInstance *inst);
225 gint RrBlueShift (const RrInstance *inst);
226 gint RrRedMask (const RrInstance *inst);
227 gint RrGreenMask (const RrInstance *inst);
228 gint RrBlueMask (const RrInstance *inst);
230 RrColor *RrColorNew (const RrInstance *inst, gint r, gint g, gint b);
231 RrColor *RrColorParse (const RrInstance *inst, gchar *colorname);
232 void RrColorFree (RrColor *in);
234 gint RrColorRed (const RrColor *c);
235 gint RrColorGreen (const RrColor *c);
236 gint RrColorBlue (const RrColor *c);
237 gulong RrColorPixel (const RrColor *c);
238 GC RrColorGC (RrColor *c);
240 RrAppearance *RrAppearanceNew (const RrInstance *inst, gint numtex);
241 RrAppearance *RrAppearanceCopy (RrAppearance *a);
242 void RrAppearanceFree (RrAppearance *a);
243 void RrAppearanceAddTextures(RrAppearance *a, gint numtex);
245 RrFont *RrFontOpen (const RrInstance *inst, const gchar *name, gint size,
246 RrFontWeight weight, RrFontSlant slant);
247 RrFont *RrFontOpenDefault (const RrInstance *inst);
248 void RrFontClose (RrFont *f);
249 RrSize *RrFontMeasureString (const RrFont *f, const gchar *str,
250 gint shadow_offset_x, gint shadow_offset_y);
251 gint RrFontHeight (const RrFont *f, gint shadow_offset_y);
252 gint RrFontMaxCharWidth (const RrFont *f);
254 /* Paint into the appearance. The old pixmap is returned (if there was one). It
255 is the responsibility of the caller to call XFreePixmap on the return when
257 Pixmap RrPaintPixmap (RrAppearance *a, gint w, gint h);
258 void RrPaint (RrAppearance *a, Window win, gint w, gint h);
259 void RrMinSize (RrAppearance *a, gint *w, gint *h);
260 gint RrMinWidth (RrAppearance *a);
261 gint RrMinHeight (RrAppearance *a);
262 void RrMargins (RrAppearance *a, gint *l, gint *t, gint *r, gint *b);
264 gboolean RrPixmapToRGBA(const RrInstance *inst,
265 Pixmap pmap, Pixmap mask,
266 gint *w, gint *h, RrPixel32 **data);
270 #endif /*__render_h*/