summaryrefslogtreecommitdiffstats
path: root/src/glut/directfb/internal.h
diff options
context:
space:
mode:
authorClaudio Ciccani <[email protected]>2006-05-31 17:02:45 +0000
committerClaudio Ciccani <[email protected]>2006-05-31 17:02:45 +0000
commitb18191cf306c255fe5eff7762fc8e419e043a621 (patch)
treef83208c8d975dad0047ee0a6755ecbcd12d346a7 /src/glut/directfb/internal.h
parent9400550c168f685e82a2ab7bfaf3344f985127ca (diff)
Added DirectFB GLUT implementation.
Diffstat (limited to 'src/glut/directfb/internal.h')
-rw-r--r--src/glut/directfb/internal.h180
1 files changed, 180 insertions, 0 deletions
diff --git a/src/glut/directfb/internal.h b/src/glut/directfb/internal.h
new file mode 100644
index 00000000000..787ef89543a
--- /dev/null
+++ b/src/glut/directfb/internal.h
@@ -0,0 +1,180 @@
+/*
+ * Copyright (C) 2006 Claudio Ciccani <[email protected]>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+#ifndef __GLUT_INTERNAL_H__
+#define __GLUT_INTERNAL_H__
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include <directfb.h>
+#include <directfb_version.h>
+
+#include "GL/glut.h"
+#include "GL/directfbgl.h"
+
+
+#define VERSION_CODE( M, m, r ) (((M) << 16) | ((m) << 8) | ((r)))
+
+#define DIRECTFB_VERSION_CODE VERSION_CODE( DIRECTFB_MAJOR_VERSION, \
+ DIRECTFB_MINOR_VERSION, \
+ DIRECTFB_MICRO_VERSION )
+
+
+#define DEFAULT_WIDTH 640
+#define DEFAULT_HEIGHT 480
+
+/*
+ * Window request flags
+ */
+#define WINDOW_REQUEST_POSITION 0x00000001
+#define WINDOW_REQUEST_RESIZE 0x00000002
+#define WINDOW_REQUEST_RESTACK 0x00000004
+#define WINDOW_REQUEST_SHOW 0x00000008
+#define WINDOW_REQUEST_HIDE 0x00000010
+#define WINDOW_REQUEST_DESTROY 0x00000020
+
+/*
+ * GLUT Window implementation
+ */
+typedef struct __GlutWindow_s {
+ int id;
+ DFBWindowID wid;
+
+ IDirectFBWindow *window; /* NULL = fullscreen (game mode) */
+ IDirectFBSurface *surface;
+ IDirectFBGL *gl;
+
+ /* pointer position in fullscreen mode */
+ int cx;
+ int cy;
+ int cz;
+ /* pressed modifiers */
+ int modifiers;
+ /* pressed buttons */
+ int buttons;
+ /* current cursor shape */
+ int cursor;
+
+ struct {
+ int flags;
+ int x;
+ int y;
+ int w;
+ int h;
+ int z;
+ } req;
+
+ GLboolean visible;
+ GLboolean redisplay;
+ GLboolean reshape;
+ GLboolean visibility;
+
+ struct __GlutWindow_s *next;
+ struct __GlutWindow_s *prev;
+} __GlutWindow;
+
+
+/* Global Vars */
+extern IDirectFB *dfb;
+extern IDirectFBDisplayLayer *primary;
+extern IDirectFBEventBuffer *events;
+extern IDirectFBInputDevice *keyboard;
+extern IDirectFBInputDevice *mouse;
+extern IDirectFBInputDevice *joystick;
+
+extern GLenum g_display_mode;
+extern GLuint g_width;
+extern GLuint g_height;
+extern GLint g_xpos;
+extern GLint g_ypos;
+extern GLint g_bpp;
+extern GLboolean g_idle;
+extern __GlutWindow *g_current;
+extern __GlutWindow *g_game;
+
+
+/* Global Funcs */
+/* window.c */
+extern __GlutWindow* __glutCreateWindow( GLboolean fullscreen );
+extern __GlutWindow* __glutFindWindow( DFBWindowID id );
+extern void __glutSetWindow( __GlutWindow *window );
+extern void __glutHandleWindows( void );
+extern void __glutDestroyWindow( __GlutWindow *window );
+extern void __glutDestroyWindows( void );
+/* callback.c */
+extern void __glutHandleTimers( void );
+extern void __glutFreeTimers( void );
+
+
+/* Global Callbacks */
+extern void (GLUTCALLBACK *display_func) (void);
+extern void (GLUTCALLBACK *reshape_func) (int width, int height);
+extern void (GLUTCALLBACK *keyboard_func) (unsigned char key, int x, int y);
+extern void (GLUTCALLBACK *mouse_func) (int button, int state, int x, int y);
+extern void (GLUTCALLBACK *motion_func) (int x, int y);
+extern void (GLUTCALLBACK *passive_motion_func) (int x, int y);
+extern void (GLUTCALLBACK *entry_func) (int state);
+extern void (GLUTCALLBACK *visibility_func) (int state);
+extern void (GLUTCALLBACK *idle_func) (void);
+extern void (GLUTCALLBACK *menu_state_func) (int state);
+extern void (GLUTCALLBACK *special_func) (int key, int x, int y);
+extern void (GLUTCALLBACK *spaceball_motion_func) (int x, int y, int z);
+extern void (GLUTCALLBACK *spaceball_rotate_func) (int x, int y, int z);
+extern void (GLUTCALLBACK *spaceball_button_func) (int button, int state);
+extern void (GLUTCALLBACK *button_box_func) (int button, int state);
+extern void (GLUTCALLBACK *dials_func) (int dial, int value);
+extern void (GLUTCALLBACK *tablet_motion_func) (int x, int y);
+extern void (GLUTCALLBACK *tabled_button_func) (int button, int state, int x, int y);
+extern void (GLUTCALLBACK *menu_status_func) (int status, int x, int y);
+extern void (GLUTCALLBACK *overlay_display_func) (void);
+extern void (GLUTCALLBACK *window_status_func) (int state);
+extern void (GLUTCALLBACK *keyboard_up_func) (unsigned char key, int x, int y);
+extern void (GLUTCALLBACK *special_up_func) (int key, int x, int y);
+extern void (GLUTCALLBACK *joystick_func) (unsigned int buttons, int x, int y, int z);
+
+
+#ifdef DEBUG
+# define __glutAssert( exp ) {\
+ if (!(exp)) {\
+ fprintf( stderr, "(!!) *** Assertion [%s] failed in %s() ***\n",\
+ #exp, __FUNCTION__ );
+ fflush( stderr );\
+ exit( -1 );\
+ }\
+ }
+#else
+# define __glutAssert( exp )
+#endif
+
+#define __glutWarning( format, ... ) {\
+ fprintf( stderr, "(!) GLUT: " format "!\n", ## __VA_ARGS__ );\
+ fflush( stderr );\
+}
+
+#define __glutFatalError( format, ... ) {\
+ fprintf( stderr, "(!) GLUT: " format "!\n", ## __VA_ARGS__ );\
+ fprintf( stderr, "\t-> from %s() at line %d\n", __FUNCTION__, __LINE__ );\
+ fflush( stderr );\
+ exit( -1 );\
+}
+
+
+#endif /* __GLUT_INTERNAL_H__ */
+