]> Dogcows Code - chaz/openbox/blob - render/render.h
another silly bug. i rule the school.
[chaz/openbox] / render / render.h
1 /* -*- indent-tabs-mode: nil; tab-width: 4; c-basic-offset: 4; -*-
2
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
7
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.
12
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.
17
18 See the COPYING file for a copy of the GNU General Public License.
19 */
20
21 #ifndef __render_h
22 #define __render_h
23
24 #include "geom.h"
25 #include "version.h"
26
27 #include <X11/Xlib.h> /* some platforms dont include this as needed for Xft */
28 #include <pango/pangoxft.h>
29 #include <glib.h>
30
31 G_BEGIN_DECLS
32
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;
45
46 typedef guint32 RrPixel32;
47 typedef guint16 RrPixel16;
48
49 typedef enum {
50 RR_RELIEF_FLAT,
51 RR_RELIEF_RAISED,
52 RR_RELIEF_SUNKEN
53 } RrReliefType;
54
55 typedef enum {
56 RR_BEVEL_1,
57 RR_BEVEL_2
58 } RrBevelType;
59
60 typedef enum {
61 RR_SURFACE_NONE,
62 RR_SURFACE_PARENTREL,
63 RR_SURFACE_SOLID,
64 RR_SURFACE_SPLIT_VERTICAL,
65 RR_SURFACE_HORIZONTAL,
66 RR_SURFACE_VERTICAL,
67 RR_SURFACE_DIAGONAL,
68 RR_SURFACE_CROSS_DIAGONAL,
69 RR_SURFACE_PYRAMID,
70 RR_SURFACE_MIRROR_HORIZONTAL
71 } RrSurfaceColorType;
72
73 typedef enum {
74 RR_TEXTURE_NONE,
75 RR_TEXTURE_MASK,
76 RR_TEXTURE_TEXT,
77 RR_TEXTURE_LINE_ART,
78 RR_TEXTURE_RGBA
79 } RrTextureType;
80
81 typedef enum {
82 RR_JUSTIFY_LEFT,
83 RR_JUSTIFY_CENTER,
84 RR_JUSTIFY_RIGHT
85 } RrJustify;
86
87 typedef enum {
88 RR_FONTWEIGHT_LIGHT,
89 RR_FONTWEIGHT_NORMAL,
90 RR_FONTWEIGHT_SEMIBOLD,
91 RR_FONTWEIGHT_BOLD,
92 RR_FONTWEIGHT_ULTRABOLD
93 } RrFontWeight;
94
95 typedef enum {
96 RR_FONTSLANT_NORMAL,
97 RR_FONTSLANT_ITALIC,
98 RR_FONTSLANT_OBLIQUE
99 } RrFontSlant;
100
101 struct _RrSurface {
102 RrSurfaceColorType grad;
103 RrReliefType relief;
104 RrBevelType bevel;
105 RrColor *primary;
106 RrColor *secondary;
107 RrColor *border_color;
108 RrColor *bevel_dark;
109 RrColor *bevel_light;
110 RrColor *interlace_color;
111 gboolean interlaced;
112 gboolean border;
113 RrAppearance *parent;
114 gint parentx;
115 gint parenty;
116 RrPixel32 *pixel_data;
117 };
118
119 struct _RrTextureText {
120 RrFont *font;
121 RrJustify justify;
122 RrColor *color;
123 gchar *string;
124 gint shadow_offset_x;
125 gint shadow_offset_y;
126 RrColor *shadow_color;
127 gchar shadow_alpha;
128 };
129
130 struct _RrPixmapMask {
131 const RrInstance *inst;
132 Pixmap mask;
133 gint width;
134 gint height;
135 gchar *data;
136 };
137
138 struct _RrTextureMask {
139 RrColor *color;
140 RrPixmapMask *mask;
141 };
142
143 struct _RrTextureRGBA {
144 gint width;
145 gint height;
146 RrPixel32 *data;
147 /* cached scaled so we don't have to scale often */
148 gint cwidth;
149 gint cheight;
150 RrPixel32 *cache;
151 };
152
153 struct _RrTextureLineArt {
154 RrColor *color;
155 gint x1;
156 gint y1;
157 gint x2;
158 gint y2;
159 };
160
161 union _RrTextureData {
162 RrTextureRGBA rgba;
163 RrTextureText text;
164 RrTextureMask mask;
165 RrTextureLineArt lineart;
166 };
167
168 struct _RrTexture {
169 RrTextureType type;
170 RrTextureData data;
171 };
172
173 struct _RrAppearance {
174 const RrInstance *inst;
175
176 RrSurface surface;
177 gint textures;
178 RrTexture *texture;
179 Pixmap pixmap;
180 XftDraw *xftdraw;
181
182 /* cached for internal use */
183 gint w, h;
184 };
185
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
192
193 #define RrDefaultFontFamily "arial,sans"
194 #define RrDefaultFontSize 8
195 #define RrDefaultFontWeight RR_FONTWEIGHT_NORMAL
196 #define RrDefaultFontSlant RR_FONTSLANT_NORMAL
197
198 RrInstance* RrInstanceNew (Display *display, gint screen);
199 void RrInstanceFree (RrInstance *inst);
200
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);
216
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);
220
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);
226
227 RrAppearance *RrAppearanceNew (const RrInstance *inst, gint numtex);
228 RrAppearance *RrAppearanceCopy (RrAppearance *a);
229 void RrAppearanceFree (RrAppearance *a);
230
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);
239
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
242 it is non-null. */
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);
247
248 gboolean RrPixmapToRGBA(const RrInstance *inst,
249 Pixmap pmap, Pixmap mask,
250 gint *w, gint *h, RrPixel32 **data);
251
252 G_END_DECLS
253
254 #endif /*__render_h*/
This page took 0.041986 seconds and 4 git commands to generate.