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
;
64 RR_SURFACE_SPLIT_VERTICAL
,
65 RR_SURFACE_HORIZONTAL
,
68 RR_SURFACE_CROSS_DIAGONAL
,
70 RR_SURFACE_MIRROR_HORIZONTAL
90 RR_FONTWEIGHT_SEMIBOLD
,
92 RR_FONTWEIGHT_ULTRABOLD
102 RrSurfaceColorType grad
;
107 RrColor
*border_color
;
109 RrColor
*bevel_light
;
110 RrColor
*interlace_color
;
113 RrAppearance
*parent
;
116 RrPixel32
*pixel_data
;
119 struct _RrTextureText
{
124 gint shadow_offset_x
;
125 gint shadow_offset_y
;
126 RrColor
*shadow_color
;
130 struct _RrPixmapMask
{
131 const RrInstance
*inst
;
138 struct _RrTextureMask
{
143 struct _RrTextureRGBA
{
147 /* cached scaled so we don't have to scale often */
153 struct _RrTextureLineArt
{
161 union _RrTextureData
{
165 RrTextureLineArt lineart
;
173 struct _RrAppearance
{
174 const RrInstance
*inst
;
182 /* cached for internal use */
186 /* these are the same on all endian machines because it seems to be dependant
187 on the endianness of the gfx card, not the cpu. */
188 #define RrDefaultAlphaOffset 24
189 #define RrDefaultRedOffset 16
190 #define RrDefaultGreenOffset 8
191 #define RrDefaultBlueOffset 0
193 #define RrDefaultFontFamily "arial,sans"
194 #define RrDefaultFontSize 8
195 #define RrDefaultFontWeight RR_FONTWEIGHT_NORMAL
196 #define RrDefaultFontSlant RR_FONTSLANT_NORMAL
198 RrInstance
* RrInstanceNew (Display
*display
, gint screen
);
199 void RrInstanceFree (RrInstance
*inst
);
201 Display
* RrDisplay (const RrInstance
*inst
);
202 gint
RrScreen (const RrInstance
*inst
);
203 Window
RrRootWindow (const RrInstance
*inst
);
204 Visual
* RrVisual (const RrInstance
*inst
);
205 gint
RrDepth (const RrInstance
*inst
);
206 Colormap
RrColormap (const RrInstance
*inst
);
207 gint
RrRedOffset (const RrInstance
*inst
);
208 gint
RrGreenOffset (const RrInstance
*inst
);
209 gint
RrBlueOffset (const RrInstance
*inst
);
210 gint
RrRedShift (const RrInstance
*inst
);
211 gint
RrGreenShift (const RrInstance
*inst
);
212 gint
RrBlueShift (const RrInstance
*inst
);
213 gint
RrRedMask (const RrInstance
*inst
);
214 gint
RrGreenMask (const RrInstance
*inst
);
215 gint
RrBlueMask (const RrInstance
*inst
);
217 RrColor
*RrColorNew (const RrInstance
*inst
, gint r
, gint g
, gint b
);
218 RrColor
*RrColorParse (const RrInstance
*inst
, gchar
*colorname
);
219 void RrColorFree (RrColor
*in
);
221 gint
RrColorRed (const RrColor
*c
);
222 gint
RrColorGreen (const RrColor
*c
);
223 gint
RrColorBlue (const RrColor
*c
);
224 gulong
RrColorPixel (const RrColor
*c
);
225 GC
RrColorGC (RrColor
*c
);
227 RrAppearance
*RrAppearanceNew (const RrInstance
*inst
, gint numtex
);
228 RrAppearance
*RrAppearanceCopy (RrAppearance
*a
);
229 void RrAppearanceFree (RrAppearance
*a
);
231 RrFont
*RrFontOpen (const RrInstance
*inst
, gchar
*name
, gint size
,
232 RrFontWeight weight
, RrFontSlant slant
);
233 RrFont
*RrFontOpenDefault (const RrInstance
*inst
);
234 void RrFontClose (RrFont
*f
);
235 RrSize
*RrFontMeasureString (const RrFont
*f
, const gchar
*str
,
236 gint shadow_offset_x
, gint shadow_offset_y
);
237 gint
RrFontHeight (const RrFont
*f
, gint shadow_offset_y
);
238 gint
RrFontMaxCharWidth (const RrFont
*f
);
240 /* Paint into the appearance. The old pixmap is returned (if there was one). It
241 is the responsibility of the caller to call XFreePixmap on the return when
243 Pixmap
RrPaintPixmap (RrAppearance
*a
, gint w
, gint h
);
244 void RrPaint (RrAppearance
*a
, Window win
, gint w
, gint h
);
245 void RrMinsize (RrAppearance
*a
, gint
*w
, gint
*h
);
246 void RrMargins (RrAppearance
*a
, gint
*l
, gint
*t
, gint
*r
, gint
*b
);
248 gboolean
RrPixmapToRGBA(const RrInstance
*inst
,
249 Pixmap pmap
, Pixmap mask
,
250 gint
*w
, gint
*h
, RrPixel32
**data
);
254 #endif /*__render_h*/