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
91 RR_FONTWEIGHT_SEMIBOLD
,
93 RR_FONTWEIGHT_ULTRABOLD
103 RrSurfaceColorType grad
;
108 RrColor
*border_color
;
110 RrColor
*bevel_light
;
111 RrColor
*interlace_color
;
114 RrAppearance
*parent
;
117 RrPixel32
*pixel_data
;
120 struct _RrTextureText
{
125 gint shadow_offset_x
;
126 gint shadow_offset_y
;
127 RrColor
*shadow_color
;
129 gboolean shortcut
; /*!< Underline a character */
130 guint shortcut_pos
; /*!< Position in bytes of the character to underline */
133 struct _RrPixmapMask
{
134 const RrInstance
*inst
;
141 struct _RrTextureMask
{
146 struct _RrTextureRGBA
{
151 /* cached scaled so we don't have to scale often */
157 struct _RrTextureLineArt
{
165 union _RrTextureData
{
169 RrTextureLineArt lineart
;
177 struct _RrAppearance
{
178 const RrInstance
*inst
;
186 /* cached for internal use */
190 /* these are the same on all endian machines because it seems to be dependant
191 on the endianness of the gfx card, not the cpu. */
192 #define RrDefaultAlphaOffset 24
193 #define RrDefaultRedOffset 16
194 #define RrDefaultGreenOffset 8
195 #define RrDefaultBlueOffset 0
197 #define RrDefaultFontFamily "arial,sans"
198 #define RrDefaultFontSize 8
199 #define RrDefaultFontWeight RR_FONTWEIGHT_NORMAL
200 #define RrDefaultFontSlant RR_FONTSLANT_NORMAL
202 RrInstance
* RrInstanceNew (Display
*display
, gint screen
);
203 void RrInstanceFree (RrInstance
*inst
);
205 Display
* RrDisplay (const RrInstance
*inst
);
206 gint
RrScreen (const RrInstance
*inst
);
207 Window
RrRootWindow (const RrInstance
*inst
);
208 Visual
* RrVisual (const RrInstance
*inst
);
209 gint
RrDepth (const RrInstance
*inst
);
210 Colormap
RrColormap (const RrInstance
*inst
);
211 gint
RrRedOffset (const RrInstance
*inst
);
212 gint
RrGreenOffset (const RrInstance
*inst
);
213 gint
RrBlueOffset (const RrInstance
*inst
);
214 gint
RrRedShift (const RrInstance
*inst
);
215 gint
RrGreenShift (const RrInstance
*inst
);
216 gint
RrBlueShift (const RrInstance
*inst
);
217 gint
RrRedMask (const RrInstance
*inst
);
218 gint
RrGreenMask (const RrInstance
*inst
);
219 gint
RrBlueMask (const RrInstance
*inst
);
221 RrColor
*RrColorNew (const RrInstance
*inst
, gint r
, gint g
, gint b
);
222 RrColor
*RrColorParse (const RrInstance
*inst
, gchar
*colorname
);
223 void RrColorFree (RrColor
*in
);
225 gint
RrColorRed (const RrColor
*c
);
226 gint
RrColorGreen (const RrColor
*c
);
227 gint
RrColorBlue (const RrColor
*c
);
228 gulong
RrColorPixel (const RrColor
*c
);
229 GC
RrColorGC (RrColor
*c
);
231 RrAppearance
*RrAppearanceNew (const RrInstance
*inst
, gint numtex
);
232 RrAppearance
*RrAppearanceCopy (RrAppearance
*a
);
233 void RrAppearanceFree (RrAppearance
*a
);
234 void RrAppearanceAddTextures(RrAppearance
*a
, gint numtex
);
236 RrFont
*RrFontOpen (const RrInstance
*inst
, const gchar
*name
, gint size
,
237 RrFontWeight weight
, RrFontSlant slant
);
238 RrFont
*RrFontOpenDefault (const RrInstance
*inst
);
239 void RrFontClose (RrFont
*f
);
240 RrSize
*RrFontMeasureString (const RrFont
*f
, const gchar
*str
,
241 gint shadow_offset_x
, gint shadow_offset_y
);
242 gint
RrFontHeight (const RrFont
*f
, gint shadow_offset_y
);
243 gint
RrFontMaxCharWidth (const RrFont
*f
);
245 /* Paint into the appearance. The old pixmap is returned (if there was one). It
246 is the responsibility of the caller to call XFreePixmap on the return when
248 Pixmap
RrPaintPixmap (RrAppearance
*a
, gint w
, gint h
);
249 void RrPaint (RrAppearance
*a
, Window win
, gint w
, gint h
);
250 void RrMinSize (RrAppearance
*a
, gint
*w
, gint
*h
);
251 gint
RrMinWidth (RrAppearance
*a
);
252 gint
RrMinHeight (RrAppearance
*a
);
253 void RrMargins (RrAppearance
*a
, gint
*l
, gint
*t
, gint
*r
, gint
*b
);
255 gboolean
RrPixmapToRGBA(const RrInstance
*inst
,
256 Pixmap pmap
, Pixmap mask
,
257 gint
*w
, gint
*h
, RrPixel32
**data
);
261 #endif /*__render_h*/