win32_x11.h
上传用户:xk288cn
上传日期:2007-05-28
资源大小:4876k
文件大小:9k
源码类别:

GIS编程

开发平台:

Visual C++

  1. #ifndef __win32_x11_h__
  2. #define __win32_x11_h__
  3. /* Copyright (c) Nate Robins, 1997. */
  4. /* This program is freely distributable without licensing fees 
  5.    and is provided without guarantee or warrantee expressed or 
  6.    implied. This program is -not- in the public domain. */
  7. #include <stdlib.h>
  8. #include <windows.h>
  9. /* Type definitions (conversions) */
  10. typedef int Visual; /* Win32 equivalent of X11 type */
  11. typedef HWND Window;
  12. typedef HPALETTE Colormap;
  13. typedef PIXELFORMATDESCRIPTOR XVisualInfo;
  14. typedef BOOL Bool;
  15. typedef MSG XEvent;
  16. typedef HDC Display;
  17. typedef HCURSOR Cursor;
  18. typedef int Atom; /* dummies */
  19. typedef int XDevice;
  20. typedef int Status;
  21. #define True  TRUE /* Win32 equivalents of X11 booleans */
  22. #define False FALSE
  23. #define None                 0L /* universal null resource or null atom */
  24. /* Input Event Masks. Used as event-mask window attribute and as arguments
  25.    to Grab requests.  Not to be confused with event names.  */
  26. #define NoEventMask 0L
  27. #define KeyPressMask (1L<<0)  
  28. #define KeyReleaseMask (1L<<1)  
  29. #define ButtonPressMask (1L<<2)  
  30. #define ButtonReleaseMask (1L<<3)  
  31. #define EnterWindowMask (1L<<4)  
  32. #define LeaveWindowMask (1L<<5)  
  33. #define PointerMotionMask (1L<<6)  
  34. #define PointerMotionHintMask (1L<<7)  
  35. #define Button1MotionMask (1L<<8)  
  36. #define Button2MotionMask (1L<<9)  
  37. #define Button3MotionMask (1L<<10) 
  38. #define Button4MotionMask (1L<<11) 
  39. #define Button5MotionMask (1L<<12) 
  40. #define ButtonMotionMask (1L<<13) 
  41. #define KeymapStateMask (1L<<14)
  42. #define ExposureMask (1L<<15) 
  43. #define VisibilityChangeMask (1L<<16) 
  44. #define StructureNotifyMask (1L<<17) 
  45. #define ResizeRedirectMask (1L<<18) 
  46. #define SubstructureNotifyMask (1L<<19) 
  47. #define SubstructureRedirectMask (1L<<20) 
  48. #define FocusChangeMask (1L<<21) 
  49. #define PropertyChangeMask (1L<<22) 
  50. #define ColormapChangeMask (1L<<23) 
  51. #define OwnerGrabButtonMask (1L<<24) 
  52. /* Key masks. Used as modifiers to GrabButton and GrabKey, results of
  53.    QueryPointer, state in various key-, mouse-, and button-related
  54.    events. */
  55. #define ShiftMask (1<<0)
  56. #define LockMask (1<<1)
  57. #define ControlMask (1<<2)
  58. #define Mod1Mask (1<<3)
  59. #define Mod2Mask (1<<4)
  60. #define Mod3Mask (1<<5)
  61. #define Mod4Mask (1<<6)
  62. #define Mod5Mask (1<<7)
  63. /* Window classes used by CreateWindow */
  64. /* Note that CopyFromParent is already defined as 0 above */
  65. #define InputOutput 1
  66. #define InputOnly 2
  67. /* Window attributes for CreateWindow and ChangeWindowAttributes */
  68. #define CWBackPixmap (1L<<0)
  69. #define CWBackPixel (1L<<1)
  70. #define CWBorderPixmap (1L<<2)
  71. #define CWBorderPixel           (1L<<3)
  72. #define CWBitGravity (1L<<4)
  73. #define CWWinGravity (1L<<5)
  74. #define CWBackingStore          (1L<<6)
  75. #define CWBackingPlanes         (1L<<7)
  76. #define CWBackingPixel         (1L<<8)
  77. #define CWOverrideRedirect (1L<<9)
  78. #define CWSaveUnder (1L<<10)
  79. #define CWEventMask (1L<<11)
  80. #define CWDontPropagate         (1L<<12)
  81. #define CWColormap (1L<<13)
  82. #define CWCursor         (1L<<14)
  83. /* ConfigureWindow structure */
  84. #define CWX (1<<0)
  85. #define CWY (1<<1)
  86. #define CWWidth (1<<2)
  87. #define CWHeight (1<<3)
  88. #define CWBorderWidth (1<<4)
  89. #define CWSibling (1<<5)
  90. #define CWStackMode (1<<6)
  91. /* Used in GetWindowAttributes reply */
  92. #define IsUnmapped 0
  93. #define IsUnviewable 1
  94. #define IsViewable 2
  95. /* Window stacking method (in configureWindow) */
  96. #define Above                   0
  97. #define Below                   1
  98. #define TopIf                   2
  99. #define BottomIf                3
  100. #define Opposite                4
  101. /* For CreateColormap */
  102. #define AllocNone 0 /* create map with no entries */
  103. #define AllocAll 1 /* allocate entire map writeable */
  104. /* Flags used in StoreNamedColor, StoreColors */
  105. #define DoRed (1<<0)
  106. #define DoGreen (1<<1)
  107. #define DoBlue (1<<2)
  108. /* 
  109.  * Bitmask returned by XParseGeometry().  Each bit tells if the corresponding
  110.  * value (x, y, width, height) was found in the parsed string.
  111.  */
  112. #define NoValue 0x0000
  113. #define XValue   0x0001
  114. #define YValue 0x0002
  115. #define WidthValue   0x0004
  116. #define HeightValue   0x0008
  117. #define AllValues  0x000F
  118. #define XNegative  0x0010
  119. #define YNegative  0x0020
  120. /* flags argument in size hints */
  121. #define USPosition (1L << 0) /* user specified x, y */
  122. #define USSize (1L << 1) /* user specified width, height */
  123. /* definitions for initial window state */
  124. #define WithdrawnState 0 /* for windows that are not mapped */
  125. #define NormalState 1 /* most applications want to start this way */
  126. #define IconicState 3 /* application wants to start as an icon */
  127. #define GameModeState 4  /* Win32 GLUT only (not in Xlib!). */
  128. /* Type definitions */
  129. typedef struct {
  130.     unsigned int background_pixmap; /* background pixmap */
  131.     unsigned long background_pixel; /* background pixel */
  132.     unsigned long border_pixel; /* border pixel value */
  133.     long event_mask; /* set of events that should be saved */
  134.     long do_not_propagate_mask; /* set of events that should not propagate */
  135.     Bool override_redirect;    /* boolean value for override-redirect */
  136.     Colormap colormap;    /* color map to be associated with window */
  137. } XSetWindowAttributes;
  138. typedef struct {
  139.   unsigned long pixel;
  140.   unsigned short red, green, blue;
  141.   char flags;  /* do_red, do_green, do_blue */
  142. } XColor;
  143. typedef struct {
  144.   unsigned char *value;    /* same as Property routines */
  145.   Atom encoding;    /* prop type */
  146.   int format;    /* prop data format: 8, 16, or 32 */
  147.   unsigned long nitems;    /* number of data items in value */
  148. } XTextProperty;
  149. typedef struct {
  150.   long flags;         /* marks which fields in this structure are defined */
  151.   int x, y; /* obsolete for new window mgrs, but clients */
  152.   int width, height; /* should set so old wm's don't mess up */
  153. } XSizeHints;
  154. /* Functions emulated by macros. */
  155. #define XFreeColormap(display, colormap) 
  156.   DeleteObject(colormap)
  157. #define XCreateFontCursor(display, shape) 
  158.   LoadCursor(NULL, shape)
  159. #define XDefineCursor(display, window, cursor) 
  160.   SetCursor(cursor)
  161. #define XFlush(display) 
  162.   /* Nothing. */
  163. #define DisplayWidth(display, screen) 
  164.   GetSystemMetrics(SM_CXSCREEN)
  165. #define DisplayHeight(display, screen) 
  166.   GetSystemMetrics(SM_CYSCREEN)
  167. #define XMapWindow(display, window) 
  168.   ShowWindow(window, SW_SHOWNORMAL)
  169. #define XUnmapWindow(display, window) 
  170.   ShowWindow(window, SW_HIDE)
  171. #define XIconifyWindow(display, window, screen) 
  172.   ShowWindow(window, SW_MINIMIZE)
  173. #define XWithdrawWindow(display, window, screen) 
  174.   ShowWindow(window, SW_HIDE)
  175. #define XLowerWindow(display, window) 
  176.   SetWindowPos(window, HWND_BOTTOM, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE)
  177. #define XSetWMName(display, window, tp) 
  178.   SetWindowText(window, (tp)->value)
  179. /* There really isn't a way to set the icon name separate from the
  180.    windows name in Win32, so, just set the windows name. */
  181. #define XSetWMIconName(display, window, tp) 
  182.   XSetWMName(display, window, tp)
  183. #define XDestroyWindow(display, window) 
  184.   DestroyWindow(window)
  185. /* Anything that needs to be freed was allocated with malloc in our
  186.    fake X windows library for Win32, so free it with plain old
  187.    free(). */
  188. #define XFree(data) 
  189.   free(data)
  190. /* Nothing to be done for this...the pointer is always 'ungrabbed'
  191.    in Win32. */
  192. #define XUngrabPointer(display, time) 
  193.   /* Nothing. */
  194. /* Function prototypes. */
  195. extern XVisualInfo* XGetVisualInfo(
  196.   Display* display,
  197.   long mask,
  198.   XVisualInfo* ttemplate,  /* Avoid class with C++ keyword. */
  199.   int*nitems);
  200. extern Colormap XCreateColormap(
  201.   Display* display,
  202.   Window root,
  203.   Visual* visual,
  204.   int alloc);
  205. extern void XAllocColorCells(
  206.   Display* display,
  207.   Colormap colormap,
  208.   Bool contig, 
  209.   unsigned long plane_masks_return[],
  210.   unsigned int nplanes,
  211.   unsigned long pixels_return[],
  212.   unsigned int npixels);
  213. extern void XStoreColor(
  214.   Display* display,
  215.   Colormap colormap,
  216.   XColor* color);
  217. extern void XSetWindowColormap(
  218.   Display* display,
  219.   Window window,
  220.   Colormap colormap);
  221. extern Bool XTranslateCoordinates(
  222.   Display *display,
  223.   Window src, Window dst, 
  224.   int src_x, int src_y, 
  225.   int* dest_x_return, int* dest_y_return,
  226.   Window* child_return);
  227. extern Status XGetGeometry(
  228.   Display* display,
  229.   Window window,
  230.   Window* root_return, 
  231.   int* x_return, int* y_return, 
  232.   unsigned int* width_return, unsigned int* height_return,
  233.   unsigned int *border_width_return,
  234.   unsigned int* depth_return);
  235. extern int DisplayWidthMM(
  236.   Display* display,
  237.   int screen);
  238. extern int DisplayHeightMM(
  239.   Display* display,
  240.   int screen);
  241. extern void XWarpPointer(
  242.   Display* display,
  243.   Window src, Window dst, 
  244.   int src_x, int src_y,
  245.   int src_width, int src_height, 
  246.   int dst_x, int dst_y);
  247. extern int XParseGeometry(
  248.   char* string,
  249.   int* x, int* y, 
  250.   unsigned int* width, unsigned int* height);
  251. extern int XPending(
  252.   Display* display);
  253. #endif /* __win32_x11_h__ */