source: project/gl-display-glx/src/glx_display.h @ 7349

Last change on this file since 7349 was 7349, checked in by thu, 13 years ago

moved things around

File size: 3.9 KB
Line 
1#ifndef GLX_DISPLAY_H
2#define GLX_DISPLAY_H
3
4/* #define GLX_DISPLAY_SINGLESTATE */
5
6#include <GL/glx.h>
7#include <X11/keysym.h>
8#include <X11/extensions/shape.h>
9
10#include "keycodes.h"
11
12typedef struct gl_window_s
13{
14  Display      * display;
15  Window       window;
16  int          screen;
17  GLXWindow    glx_window;
18  GLXContext   glx_context;
19  XSetWindowAttributes attributes;
20  int          fullscreen_flag;
21  int          double_buffered_flag;
22  int          mouse_flag; /* used? */
23  int          cycling_cursor_flag;
24  int          center_cursor_flag;
25  int          autorepeat_flag;
26  /* XF86VidModeModeInfo original_mode; *//* i.e. desktop mode */
27  int          x;
28  int          y;
29
30  /*unsigned*/ int width;
31  /*unsigned*/ int height;
32  unsigned int depth;
33  unsigned int screen_width;
34  unsigned int screen_height;
35 
36  XEvent       e;
37  int          pending;
38  /* Variables to hold deltas in x and y coordinates.
39   * They complement a XMotionEvent structure to support
40   * relative cursor movements, not only absolute cursor
41   * position.
42   */
43  int          last_x;
44  int          last_y;
45  int          motion_dx;
46  int          motion_dy;
47  char         keys[256];
48  int          mouse_x;
49  int          mouse_y;
50} gl_window_t;
51
52#ifdef GLX_DISPLAY_SINGLESTATE
53unsigned int get_width();
54unsigned int get_height();
55unsigned int get_screen_width();
56unsigned int get_screen_height();
57#else
58unsigned int get_width( gl_window_t  * gl_window );
59unsigned int get_height( gl_window_t  * gl_window );
60unsigned int get_screen_width( gl_window_t  * gl_window );
61unsigned int get_screen_height( gl_window_t  * gl_window );
62#endif
63
64void
65enable_autorepeat (
66#ifndef GLX_DISPLAY_SINGLESTATE
67  gl_window_t  * gl_window
68#endif
69  );
70
71void
72disable_autorepeat (
73#ifndef GLX_DISPLAY_SINGLESTATE
74  gl_window_t  * gl_window
75#endif
76  );
77 
78void destroy_gl_window (
79#ifndef GLX_DISPLAY_SINGLESTATE
80  gl_window_t  * gl_window
81#endif
82  );
83
84#ifndef GLX_DISPLAY_SINGLESTATE
85  gl_window_t  *
86#else
87  void
88#endif
89create_gl_window (
90/*              const char * title, */
91                unsigned int width,
92                unsigned int height,
93                int double_buffered,
94                int fullscreen,
95                int no_border,
96                int use_shape_extension);
97
98void swap_buffers (
99#ifndef GLX_DISPLAY_SINGLESTATE
100  gl_window_t  * gl_window
101#endif
102  );
103
104void disable_cursor (
105#ifndef GLX_DISPLAY_SINGLESTATE
106  gl_window_t  * gl_window
107#endif
108  );
109void enable_centered_cursor (
110#ifndef GLX_DISPLAY_SINGLESTATE
111  gl_window_t  * gl_window
112#endif
113  );
114void disable_centered_cursor (
115#ifndef GLX_DISPLAY_SINGLESTATE
116  gl_window_t  * gl_window
117#endif
118  );
119void enable_cycling_cursor (
120#ifndef GLX_DISPLAY_SINGLESTATE
121  gl_window_t  * gl_window
122#endif
123  );
124void disable_cycling_cursor (
125#ifndef GLX_DISPLAY_SINGLESTATE
126  gl_window_t  * gl_window
127#endif
128  );
129
130int event_type( XEvent * e );
131int event_x( XButtonEvent * e );
132int event_y( XButtonEvent * e );
133int event_button( XButtonEvent * e );
134int event_xkeycode( XEvent * e );
135unsigned int event_keysym( XKeyEvent * e );
136int event_dx (
137#ifndef GLX_DISPLAY_SINGLESTATE
138  gl_window_t  * gl_window
139#endif
140  );
141int event_dy (
142#ifndef GLX_DISPLAY_SINGLESTATE
143  gl_window_t  * gl_window
144#endif
145  );
146/* returns the mouse location in window manager window coordinates,
147 * (0,0) is the upper-left corner.
148 */
149int mouse_x (
150#ifndef GLX_DISPLAY_SINGLESTATE
151  gl_window_t  * gl_window
152#endif
153  );
154int mouse_y (
155#ifndef GLX_DISPLAY_SINGLESTATE
156  gl_window_t  * gl_window
157#endif
158  );
159/* returns the mouse location in opengl window coordinates,
160 * (0,0) is the lower-left corner.
161 */
162int mouse_x_gl (
163#ifndef GLX_DISPLAY_SINGLESTATE
164  gl_window_t  * gl_window
165#endif
166  );
167int mouse_y_gl (
168#ifndef GLX_DISPLAY_SINGLESTATE
169  gl_window_t  * gl_window
170#endif
171  );
172
173XEvent *
174receive_event (
175#ifndef GLX_DISPLAY_SINGLESTATE
176  gl_window_t  * gl_window
177#endif
178  );
179
180int time_milliseconds( void );
181
182unsigned int event_keycode( XEvent * e );
183
184int is_key_pressed( gl_window_t * gl_window, keycode_t keycode );
185
186#endif /* GLX_DISPLAY_H */
187
Note: See TracBrowser for help on using the repository browser.