]> Dogcows Code - chaz/openbox/blob - render/render.h
offsets in planar surfaces
[chaz/openbox] / render / render.h
1 #ifndef __render_h
2 #define __render_h
3
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"
9
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
17
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 */
25
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 */
37
38 typedef enum {
39 Surface_Planar,
40 Surface_Nonplanar
41 } SurfaceType;
42
43 typedef enum {
44 Flat,
45 Raised,
46 Sunken
47 } ReliefType;
48
49 typedef enum {
50 Bevel1,
51 Bevel2
52 } BevelType;
53
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;
66
67 typedef enum {
68 Bitmask,
69 Text,
70 RGBA
71 } TextureType;
72
73 typedef struct PlanarSurface {
74 int xoff;
75 int yoff;
76 int width;
77 int height;
78 SurfaceColorType grad;
79 ReliefType relief;
80 BevelType bevel;
81 color_rgb *primary;
82 color_rgb *secondary;
83 color_rgb *border_color;
84 gboolean interlaced;
85 gboolean border;
86 pixel32 *pixel_data;
87 } PlanarSurface;
88
89 typedef struct NonplanarSurface {
90 int poo;
91 } NonplanarSurface;
92
93 typedef union {
94 PlanarSurface planar;
95 NonplanarSurface nonplanar;
96 } SurfaceData;
97
98 typedef struct Surface {
99 SurfaceType type;
100 SurfaceColorType colortype;
101 SurfaceData data;
102 } Surface;
103
104 typedef struct {
105 XftFont *xftfont;
106 } ObFont;
107
108 typedef enum {
109 Justify_Center,
110 Justify_Left,
111 Justify_Right
112 } Justify;
113
114 typedef struct TextureText {
115 ObFont *font;
116 Justify justify;
117 int shadow;
118 unsigned char tint;
119 unsigned char offset;
120 color_rgb *color;
121 char *string;
122 } TextureText;
123
124 typedef struct {
125 Pixmap mask;
126 guint w, h;
127 } pixmap_mask;
128
129 typedef struct TextureMask {
130 color_rgb *color;
131 pixmap_mask *mask;
132 } TextureMask;
133
134 typedef struct TextureRGBA {
135 int poo;
136 } TextureRGBA;
137
138 typedef union {
139 TextureRGBA rgba;
140 TextureText text;
141 TextureMask mask;
142 } TextureData;
143
144 typedef struct Texture {
145 TextureType type;
146 TextureData data;
147 } Texture;
148
149 typedef struct Appearance {
150 Surface surface;
151 int textures;
152 Texture *texture;
153 Pixmap pixmap;
154 XftDraw *xftdraw;
155 } Appearance;
156
157 extern Visual *render_visual;
158 extern int render_depth;
159 extern Colormap render_colormap;
160
161 void (*paint)(Window win, Appearance *l, int w, int h);
162
163 void render_startup(void);
164 void init_appearance(Appearance *l);
165 void x_paint(Window win, Appearance *l, int w, int h);
166 void render_shutdown(void);
167 Appearance *appearance_new(SurfaceType type, int numtex);
168 Appearance *appearance_copy(Appearance *a);
169 void appearance_free(Appearance *a);
170 #endif /*__render_h*/
This page took 0.045598 seconds and 5 git commands to generate.