summaryrefslogtreecommitdiffstats
path: root/src/glut/glx/win32_x11.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/glut/glx/win32_x11.h')
-rw-r--r--src/glut/glx/win32_x11.h319
1 files changed, 319 insertions, 0 deletions
diff --git a/src/glut/glx/win32_x11.h b/src/glut/glx/win32_x11.h
new file mode 100644
index 00000000000..bb499773169
--- /dev/null
+++ b/src/glut/glx/win32_x11.h
@@ -0,0 +1,319 @@
+#ifndef __win32_x11_h__
+#define __win32_x11_h__
+
+/* Copyright (c) Nate Robins, 1997. */
+
+/* This program is freely distributable without licensing fees
+ and is provided without guarantee or warrantee expressed or
+ implied. This program is -not- in the public domain. */
+
+#include <stdlib.h>
+#include <windows.h>
+
+/* Type definitions (conversions) */
+typedef int Visual; /* Win32 equivalent of X11 type */
+typedef HWND Window;
+typedef HPALETTE Colormap;
+typedef PIXELFORMATDESCRIPTOR XVisualInfo;
+typedef BOOL Bool;
+typedef MSG XEvent;
+typedef HDC Display;
+typedef HCURSOR Cursor;
+
+typedef int Atom; /* dummies */
+typedef int XDevice;
+typedef int Status;
+
+#define True TRUE /* Win32 equivalents of X11 booleans */
+#define False FALSE
+
+#define None 0L /* universal null resource or null atom */
+
+/* Input Event Masks. Used as event-mask window attribute and as arguments
+ to Grab requests. Not to be confused with event names. */
+
+#define NoEventMask 0L
+#define KeyPressMask (1L<<0)
+#define KeyReleaseMask (1L<<1)
+#define ButtonPressMask (1L<<2)
+#define ButtonReleaseMask (1L<<3)
+#define EnterWindowMask (1L<<4)
+#define LeaveWindowMask (1L<<5)
+#define PointerMotionMask (1L<<6)
+#define PointerMotionHintMask (1L<<7)
+#define Button1MotionMask (1L<<8)
+#define Button2MotionMask (1L<<9)
+#define Button3MotionMask (1L<<10)
+#define Button4MotionMask (1L<<11)
+#define Button5MotionMask (1L<<12)
+#define ButtonMotionMask (1L<<13)
+#define KeymapStateMask (1L<<14)
+#define ExposureMask (1L<<15)
+#define VisibilityChangeMask (1L<<16)
+#define StructureNotifyMask (1L<<17)
+#define ResizeRedirectMask (1L<<18)
+#define SubstructureNotifyMask (1L<<19)
+#define SubstructureRedirectMask (1L<<20)
+#define FocusChangeMask (1L<<21)
+#define PropertyChangeMask (1L<<22)
+#define ColormapChangeMask (1L<<23)
+#define OwnerGrabButtonMask (1L<<24)
+
+/* Key masks. Used as modifiers to GrabButton and GrabKey, results of
+ QueryPointer, state in various key-, mouse-, and button-related
+ events. */
+
+#define ShiftMask (1<<0)
+#define LockMask (1<<1)
+#define ControlMask (1<<2)
+#define Mod1Mask (1<<3)
+#define Mod2Mask (1<<4)
+#define Mod3Mask (1<<5)
+#define Mod4Mask (1<<6)
+#define Mod5Mask (1<<7)
+
+/* Window classes used by CreateWindow */
+/* Note that CopyFromParent is already defined as 0 above */
+
+#define InputOutput 1
+#define InputOnly 2
+
+/* Window attributes for CreateWindow and ChangeWindowAttributes */
+
+#define CWBackPixmap (1L<<0)
+#define CWBackPixel (1L<<1)
+#define CWBorderPixmap (1L<<2)
+#define CWBorderPixel (1L<<3)
+#define CWBitGravity (1L<<4)
+#define CWWinGravity (1L<<5)
+#define CWBackingStore (1L<<6)
+#define CWBackingPlanes (1L<<7)
+#define CWBackingPixel (1L<<8)
+#define CWOverrideRedirect (1L<<9)
+#define CWSaveUnder (1L<<10)
+#define CWEventMask (1L<<11)
+#define CWDontPropagate (1L<<12)
+#define CWColormap (1L<<13)
+#define CWCursor (1L<<14)
+
+/* ConfigureWindow structure */
+
+#define CWX (1<<0)
+#define CWY (1<<1)
+#define CWWidth (1<<2)
+#define CWHeight (1<<3)
+#define CWBorderWidth (1<<4)
+#define CWSibling (1<<5)
+#define CWStackMode (1<<6)
+
+
+/* Used in GetWindowAttributes reply */
+
+#define IsUnmapped 0
+#define IsUnviewable 1
+#define IsViewable 2
+
+/* Window stacking method (in configureWindow) */
+
+#define Above 0
+#define Below 1
+#define TopIf 2
+#define BottomIf 3
+#define Opposite 4
+
+/* For CreateColormap */
+
+#define AllocNone 0 /* create map with no entries */
+#define AllocAll 1 /* allocate entire map writeable */
+
+
+/* Flags used in StoreNamedColor, StoreColors */
+
+#define DoRed (1<<0)
+#define DoGreen (1<<1)
+#define DoBlue (1<<2)
+
+/*
+ * Bitmask returned by XParseGeometry(). Each bit tells if the corresponding
+ * value (x, y, width, height) was found in the parsed string.
+ */
+#define NoValue 0x0000
+#define XValue 0x0001
+#define YValue 0x0002
+#define WidthValue 0x0004
+#define HeightValue 0x0008
+#define AllValues 0x000F
+#define XNegative 0x0010
+#define YNegative 0x0020
+
+/* flags argument in size hints */
+#define USPosition (1L << 0) /* user specified x, y */
+#define USSize (1L << 1) /* user specified width, height */
+
+/* definitions for initial window state */
+#define WithdrawnState 0 /* for windows that are not mapped */
+#define NormalState 1 /* most applications want to start this way */
+#define IconicState 3 /* application wants to start as an icon */
+#define GameModeState 4 /* Win32 GLUT only (not in Xlib!). */
+
+/* Type definitions */
+
+typedef struct {
+ unsigned int background_pixmap; /* background pixmap */
+ unsigned long background_pixel; /* background pixel */
+ unsigned long border_pixel; /* border pixel value */
+ long event_mask; /* set of events that should be saved */
+ long do_not_propagate_mask; /* set of events that should not propagate */
+ Bool override_redirect; /* boolean value for override-redirect */
+ Colormap colormap; /* color map to be associated with window */
+} XSetWindowAttributes;
+
+typedef struct {
+ unsigned long pixel;
+ unsigned short red, green, blue;
+ char flags; /* do_red, do_green, do_blue */
+} XColor;
+
+typedef struct {
+ unsigned char *value; /* same as Property routines */
+ Atom encoding; /* prop type */
+ int format; /* prop data format: 8, 16, or 32 */
+ unsigned long nitems; /* number of data items in value */
+} XTextProperty;
+
+typedef struct {
+ long flags; /* marks which fields in this structure are defined */
+ int x, y; /* obsolete for new window mgrs, but clients */
+ int width, height; /* should set so old wm's don't mess up */
+} XSizeHints;
+
+/* Functions emulated by macros. */
+
+#define XFreeColormap(display, colormap) \
+ DeleteObject(colormap)
+
+#define XCreateFontCursor(display, shape) \
+ LoadCursor(NULL, shape)
+
+#define XDefineCursor(display, window, cursor) \
+ SetCursor(cursor)
+
+#define XFlush(display) \
+ /* Nothing. */
+
+#define DisplayWidth(display, screen) \
+ GetSystemMetrics(SM_CXSCREEN)
+
+#define DisplayHeight(display, screen) \
+ GetSystemMetrics(SM_CYSCREEN)
+
+#define XMapWindow(display, window) \
+ ShowWindow(window, SW_SHOWNORMAL)
+
+#define XUnmapWindow(display, window) \
+ ShowWindow(window, SW_HIDE)
+
+#define XIconifyWindow(display, window, screen) \
+ ShowWindow(window, SW_MINIMIZE)
+
+#define XWithdrawWindow(display, window, screen) \
+ ShowWindow(window, SW_HIDE)
+
+#define XLowerWindow(display, window) \
+ SetWindowPos(window, HWND_BOTTOM, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE)
+
+#define XSetWMName(display, window, tp) \
+ SetWindowText(window, (tp)->value)
+
+/* There really isn't a way to set the icon name separate from the
+ windows name in Win32, so, just set the windows name. */
+#define XSetWMIconName(display, window, tp) \
+ XSetWMName(display, window, tp)
+
+#define XDestroyWindow(display, window) \
+ DestroyWindow(window)
+
+/* Anything that needs to be freed was allocated with malloc in our
+ fake X windows library for Win32, so free it with plain old
+ free(). */
+#define XFree(data) \
+ free(data)
+
+/* Nothing to be done for this...the pointer is always 'ungrabbed'
+ in Win32. */
+#define XUngrabPointer(display, time) \
+ /* Nothing. */
+
+/* Function prototypes. */
+
+extern XVisualInfo* XGetVisualInfo(
+ Display* display,
+ long mask,
+ XVisualInfo* ttemplate, /* Avoid class with C++ keyword. */
+ int*nitems);
+
+extern Colormap XCreateColormap(
+ Display* display,
+ Window root,
+ Visual* visual,
+ int alloc);
+
+extern void XAllocColorCells(
+ Display* display,
+ Colormap colormap,
+ Bool contig,
+ unsigned long plane_masks_return[],
+ unsigned int nplanes,
+ unsigned long pixels_return[],
+ unsigned int npixels);
+
+extern void XStoreColor(
+ Display* display,
+ Colormap colormap,
+ XColor* color);
+
+extern void XSetWindowColormap(
+ Display* display,
+ Window window,
+ Colormap colormap);
+
+extern Bool XTranslateCoordinates(
+ Display *display,
+ Window src, Window dst,
+ int src_x, int src_y,
+ int* dest_x_return, int* dest_y_return,
+ Window* child_return);
+
+extern Status XGetGeometry(
+ Display* display,
+ Window window,
+ Window* root_return,
+ int* x_return, int* y_return,
+ unsigned int* width_return, unsigned int* height_return,
+ unsigned int *border_width_return,
+ unsigned int* depth_return);
+
+extern int DisplayWidthMM(
+ Display* display,
+ int screen);
+
+extern int DisplayHeightMM(
+ Display* display,
+ int screen);
+
+extern void XWarpPointer(
+ Display* display,
+ Window src, Window dst,
+ int src_x, int src_y,
+ int src_width, int src_height,
+ int dst_x, int dst_y);
+
+extern int XParseGeometry(
+ char* string,
+ int* x, int* y,
+ unsigned int* width, unsigned int* height);
+
+extern int XPending(
+ Display* display);
+
+#endif /* __win32_x11_h__ */