added justification to textureText
[openbox.git] / render / render.h
blobf8f0db8681c99745e19d4207ad1f1a4fd01ba054
1 #ifndef __render_h
2 #define __render_h
4 #include <X11/Xlib.h>
5 #define _XFT_NO_COMPAT_ /* no Xft 1 API */
6 #include <X11/Xft/Xft.h>
7 #include <glib.h>
8 #include "color.h"
10 #ifdef HAVE_STDINT_H
11 # include <stdint.h>
12 #else
13 # ifdef HAVE_SYS_TYPES_H
14 # include <sys/types.h>
15 # endif
16 #endif
18 #ifdef HAVE_STDINT_H
19 typedef uint32_t pixel32;
20 typedef uint16_t pixel16;
21 #else
22 typedef u_int32_t pixel32;
23 typedef u_int16_t pixel16;
24 #endif /* HAVE_STDINT_H */
26 #if (G_ENDIAN == G_BIG_ENDIAN)
27 #define default_red_shift 0
28 #define default_green_shift 8
29 #define default_blue_shift 16
30 #define endian MSBFirst
31 #else
32 #define default_red_shift 16
33 #define default_green_shift 8
34 #define default_blue_shift 0
35 #define endian LSBFirst
36 #endif /* G_ENDIAN == G_BIG_ENDIAN */
38 typedef enum {
39 Surface_Planar,
40 Surface_Nonplanar
41 } SurfaceType;
43 typedef enum {
44 Flat,
45 Raised,
46 Sunken
47 } ReliefType;
49 typedef enum {
50 Bevel1,
51 Bevel2
52 } BevelType;
54 typedef enum {
55 Background_ParentRelative,
56 Background_Solid,
57 Background_Horizontal,
58 Background_Vertical,
59 Background_Diagonal,
60 Background_CrossDiagonal,
61 Background_PipeCross,
62 Background_Rectangle,
63 Background_Pyramid,
64 Background_Elliptic
65 } SurfaceColorType;
67 typedef enum {
68 Bitmask,
69 Text,
70 RGBA
71 } TextureType;
73 typedef struct PlanarSurface {
74 SurfaceColorType grad;
75 ReliefType relief;
76 BevelType bevel;
77 color_rgb *primary;
78 color_rgb *secondary;
79 color_rgb *border_color;
80 gboolean interlaced;
81 gboolean border;
82 pixel32 *pixel_data;
83 } PlanarSurface;
85 typedef struct NonplanarSurface {
86 int poo;
87 } NonplanarSurface;
89 typedef union {
90 PlanarSurface planar;
91 NonplanarSurface nonplanar;
92 } SurfaceData;
94 typedef struct Surface {
95 SurfaceType type;
96 SurfaceColorType colortype;
97 SurfaceData data;
98 } Surface;
100 typedef struct {
101 XftFont *xftfont;
102 } ObFont;
104 typedef enum {
105 Justify_Center,
106 Justify_Left,
107 Justify_Right
108 } Justify;
110 typedef struct TextureText {
111 ObFont *font;
112 Justify justify;
113 int shadow;
114 unsigned char tint;
115 unsigned char offset;
116 color_rgb *color;
117 char *string;
118 } TextureText;
120 typedef struct {
121 Pixmap mask;
122 guint w, h;
123 } pixmap_mask;
125 typedef struct TextureMask {
126 color_rgb *color;
127 pixmap_mask *mask;
128 } TextureMask;
130 typedef struct TextureRGBA {
131 int poo;
132 } TextureRGBA;
134 typedef union {
135 TextureRGBA rgba;
136 TextureText text;
137 TextureMask mask;
138 } TextureData;
140 typedef struct Texture {
141 TextureType type;
142 TextureData data;
143 } Texture;
145 typedef struct Appearance {
146 Surface surface;
147 int textures;
148 Texture *texture;
149 Pixmap pixmap;
150 XftDraw *xftdraw;
151 } Appearance;
153 extern Visual *render_visual;
154 extern int render_depth;
155 extern Colormap render_colormap;
157 void (*paint)(Window win, Appearance *l, int w, int h);
159 void render_startup(void);
160 void init_appearance(Appearance *l);
161 void x_paint(Window win, Appearance *l, int w, int h);
162 void render_shutdown(void);
163 Appearance *appearance_new(SurfaceType type, int numtex);
164 Appearance *appearance_copy(Appearance *a);
165 void appearance_free(Appearance *a);
166 #endif /*__render_h*/