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
;
126 gint bevel_dark_adjust
; /* 0-255, default is 64 */
127 gint bevel_light_adjust
; /* 0-255, default is 128 */
130 struct _RrTextureText
{
135 gint shadow_offset_x
;
136 gint shadow_offset_y
;
137 RrColor
*shadow_color
;
139 gboolean shortcut
; /*!< Underline a character */
140 guint shortcut_pos
; /*!< Position in bytes of the character to underline */
141 RrEllipsizeMode ellipsize
;
144 struct _RrPixmapMask
{
145 const RrInstance
*inst
;
152 struct _RrTextureMask
{
157 struct _RrTextureRGBA
{
162 /* cached scaled so we don't have to scale often */
168 struct _RrTextureLineArt
{
176 union _RrTextureData
{
180 RrTextureLineArt lineart
;
188 struct _RrAppearance
{
189 const RrInstance
*inst
;
197 /* cached for internal use */
201 /* these are the same on all endian machines because it seems to be dependant
202 on the endianness of the gfx card, not the cpu. */
203 #define RrDefaultAlphaOffset 24
204 #define RrDefaultRedOffset 16
205 #define RrDefaultGreenOffset 8
206 #define RrDefaultBlueOffset 0
208 #define RrDefaultFontFamily "arial,sans"
209 #define RrDefaultFontSize 8
210 #define RrDefaultFontWeight RR_FONTWEIGHT_NORMAL
211 #define RrDefaultFontSlant RR_FONTSLANT_NORMAL
213 RrInstance
* RrInstanceNew (Display
*display
, gint screen
);
214 void RrInstanceFree (RrInstance
*inst
);
216 Display
* RrDisplay (const RrInstance
*inst
);
217 gint
RrScreen (const RrInstance
*inst
);
218 Window
RrRootWindow (const RrInstance
*inst
);
219 Visual
* RrVisual (const RrInstance
*inst
);
220 gint
RrDepth (const RrInstance
*inst
);
221 Colormap
RrColormap (const RrInstance
*inst
);
222 gint
RrRedOffset (const RrInstance
*inst
);
223 gint
RrGreenOffset (const RrInstance
*inst
);
224 gint
RrBlueOffset (const RrInstance
*inst
);
225 gint
RrRedShift (const RrInstance
*inst
);
226 gint
RrGreenShift (const RrInstance
*inst
);
227 gint
RrBlueShift (const RrInstance
*inst
);
228 gint
RrRedMask (const RrInstance
*inst
);
229 gint
RrGreenMask (const RrInstance
*inst
);
230 gint
RrBlueMask (const RrInstance
*inst
);
232 RrColor
*RrColorNew (const RrInstance
*inst
, gint r
, gint g
, gint b
);
233 RrColor
*RrColorParse (const RrInstance
*inst
, gchar
*colorname
);
234 void RrColorFree (RrColor
*in
);
236 gint
RrColorRed (const RrColor
*c
);
237 gint
RrColorGreen (const RrColor
*c
);
238 gint
RrColorBlue (const RrColor
*c
);
239 gulong
RrColorPixel (const RrColor
*c
);
240 GC
RrColorGC (RrColor
*c
);
242 RrAppearance
*RrAppearanceNew (const RrInstance
*inst
, gint numtex
);
243 RrAppearance
*RrAppearanceCopy (RrAppearance
*a
);
244 void RrAppearanceFree (RrAppearance
*a
);
245 void RrAppearanceAddTextures(RrAppearance
*a
, gint numtex
);
247 RrFont
*RrFontOpen (const RrInstance
*inst
, const gchar
*name
, gint size
,
248 RrFontWeight weight
, RrFontSlant slant
);
249 RrFont
*RrFontOpenDefault (const RrInstance
*inst
);
250 void RrFontClose (RrFont
*f
);
251 RrSize
*RrFontMeasureString (const RrFont
*f
, const gchar
*str
,
252 gint shadow_offset_x
, gint shadow_offset_y
);
253 gint
RrFontHeight (const RrFont
*f
, gint shadow_offset_y
);
254 gint
RrFontMaxCharWidth (const RrFont
*f
);
256 /* Paint into the appearance. The old pixmap is returned (if there was one). It
257 is the responsibility of the caller to call XFreePixmap on the return when
259 Pixmap
RrPaintPixmap (RrAppearance
*a
, gint w
, gint h
);
260 void RrPaint (RrAppearance
*a
, Window win
, gint w
, gint h
);
261 void RrMinSize (RrAppearance
*a
, gint
*w
, gint
*h
);
262 gint
RrMinWidth (RrAppearance
*a
);
263 gint
RrMinHeight (RrAppearance
*a
);
264 void RrMargins (RrAppearance
*a
, gint
*l
, gint
*t
, gint
*r
, gint
*b
);
266 gboolean
RrPixmapToRGBA(const RrInstance
*inst
,
267 Pixmap pmap
, Pixmap mask
,
268 gint
*w
, gint
*h
, RrPixel32
**data
);
272 #endif /*__render_h*/