privx.h 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169
  1. /////////////////////////////////////////////////////////////////////////////
  2. // Name: wx/x11/privx.h
  3. // Purpose: Private declarations common to X11 and Motif ports
  4. // Author: Julian Smart
  5. // Modified by:
  6. // Created: 17/09/98
  7. // Copyright: (c) Julian Smart
  8. // Licence: wxWindows licence
  9. /////////////////////////////////////////////////////////////////////////////
  10. #ifndef _WX_PRIVX_H_
  11. #define _WX_PRIVX_H_
  12. #include "wx/defs.h"
  13. #include "wx/utils.h"
  14. #include "wx/colour.h"
  15. #if defined( __cplusplus ) && defined( __VMS )
  16. #pragma message disable nosimpint
  17. #endif
  18. #include "X11/Xlib.h"
  19. #include "X11/Xatom.h"
  20. #include "X11/Xutil.h"
  21. #if defined( __cplusplus ) && defined( __VMS )
  22. #pragma message enable nosimpint
  23. #endif
  24. class WXDLLIMPEXP_FWD_CORE wxMouseEvent;
  25. class WXDLLIMPEXP_FWD_CORE wxKeyEvent;
  26. class WXDLLIMPEXP_FWD_CORE wxWindow;
  27. class WXDLLIMPEXP_FWD_CORE wxRegion;
  28. // ----------------------------------------------------------------------------
  29. // key events related functions
  30. // ----------------------------------------------------------------------------
  31. WXPixel wxGetBestMatchingPixel(Display *display, XColor *desiredColor, Colormap cmap);
  32. Pixmap XCreateInsensitivePixmap( Display *display, Pixmap pixmap );
  33. extern XColor g_itemColors[];
  34. extern int wxComputeColours (Display *display, const wxColour * back, const wxColour * fore);
  35. // For convenience
  36. inline Display* wxGlobalDisplay() { return (Display*) wxGetDisplay(); }
  37. #define wxMAX_RGB 0xff
  38. #define wxMAX_SV 1000
  39. #define wxSIGN(x) ((x < 0) ? -x : x)
  40. #define wxH_WEIGHT 4
  41. #define wxS_WEIGHT 1
  42. #define wxV_WEIGHT 2
  43. typedef struct wx_hsv {
  44. int h,s,v;
  45. } wxHSV;
  46. #define wxMax3(x,y,z) ((x > y) ? ((x > z) ? x : z) : ((y > z) ? y : z))
  47. #define wxMin3(x,y,z) ((x < y) ? ((x < z) ? x : z) : ((y < z) ? y : z))
  48. void wxHSVToXColor(wxHSV *hsv,XColor *xcolor);
  49. void wxXColorToHSV(wxHSV *hsv,XColor *xcolor);
  50. void wxAllocNearestColor(Display *display,Colormap colormap,XColor *xcolor);
  51. void wxAllocColor(Display *display,Colormap colormap,XColor *xcolor);
  52. // For debugging
  53. wxString wxGetXEventName(XEvent& event);
  54. #if wxUSE_NANOX
  55. #define XEventGetWindow(event) event->general.wid
  56. #define XEventGetType(event) event->general.type
  57. #define XConfigureEventGetX(event) ((int) event->update.x)
  58. #define XConfigureEventGetY(event) ((int) event->update.y)
  59. #define XConfigureEventGetWidth(event) ((int) event->update.width)
  60. #define XConfigureEventGetHeight(event) ((int) event->update.height)
  61. #define XExposeEventGetX(event) event->exposure.x
  62. #define XExposeEventGetY(event) event->exposure.y
  63. #define XExposeEventGetWidth(event) event->exposure.width
  64. #define XExposeEventGetHeight(event) event->exposure.height
  65. #define XButtonEventGetTime(event) (wxGetLocalTime())
  66. #define XButtonEventLChanged(event) (event->button.changebuttons & GR_BUTTON_L)
  67. #define XButtonEventMChanged(event) (event->button.changebuttons & GR_BUTTON_M)
  68. #define XButtonEventRChanged(event) (event->button.changebuttons & GR_BUTTON_R)
  69. #define XButtonEventLIsDown(x) ((x)->button.buttons & GR_BUTTON_L)
  70. #define XButtonEventMIsDown(x) ((x)->button.buttons & GR_BUTTON_M)
  71. #define XButtonEventRIsDown(x) ((x)->button.buttons & GR_BUTTON_R)
  72. #define XButtonEventShiftIsDown(x) (x->button.modifiers & MWKMOD_SHIFT)
  73. #define XButtonEventCtrlIsDown(x) (x->button.modifiers & MWKMOD_CTRL)
  74. #define XButtonEventAltIsDown(x) (x->button.modifiers & MWKMOD_ALT)
  75. #define XButtonEventMetaIsDown(x) (x->button.modifiers & MWKMOD_META)
  76. #define XButtonEventGetX(event) (event->button.x)
  77. #define XButtonEventGetY(event) (event->button.y)
  78. #define XKeyEventGetTime(event) (wxGetLocalTime())
  79. #define XKeyEventGetX(event) (event->keystroke.x)
  80. #define XKeyEventGetY(event) (event->keystroke.y)
  81. #define XKeyEventShiftIsDown(x) (x->keystroke.modifiers & MWKMOD_SHIFT)
  82. #define XKeyEventCtrlIsDown(x) (x->keystroke.modifiers & MWKMOD_CTRL)
  83. #define XKeyEventAltIsDown(x) (x->keystroke.modifiers & MWKMOD_ALT)
  84. #define XKeyEventMetaIsDown(x) (x->keystroke.modifiers & MWKMOD_META)
  85. #define XFontStructGetAscent(f) f->info.baseline
  86. #else
  87. #define XEventGetWindow(event) event->xany.window
  88. #define XEventGetType(event) event->xany.type
  89. #define XConfigureEventGetX(event) event->xconfigure.x
  90. #define XConfigureEventGetY(event) event->xconfigure.y
  91. #define XConfigureEventGetWidth(event) event->xconfigure.width
  92. #define XConfigureEventGetHeight(event) event->xconfigure.height
  93. #define XExposeEventGetX(event) event->xexpose.x
  94. #define XExposeEventGetY(event) event->xexpose.y
  95. #define XExposeEventGetWidth(event) event->xexpose.width
  96. #define XExposeEventGetHeight(event) event->xexpose.height
  97. #define XButtonEventGetTime(event) (event->xbutton.time)
  98. #define XButtonEventLChanged(event) (event->xbutton.button == Button1)
  99. #define XButtonEventMChanged(event) (event->xbutton.button == Button2)
  100. #define XButtonEventRChanged(event) (event->xbutton.button == Button3)
  101. #define XButtonEventLIsDown(x) ((x)->xbutton.state & Button1Mask)
  102. #define XButtonEventMIsDown(x) ((x)->xbutton.state & Button2Mask)
  103. #define XButtonEventRIsDown(x) ((x)->xbutton.state & Button3Mask)
  104. #define XButtonEventShiftIsDown(x) (x->xbutton.state & ShiftMask)
  105. #define XButtonEventCtrlIsDown(x) (x->xbutton.state & ControlMask)
  106. #define XButtonEventAltIsDown(x) (x->xbutton.state & Mod3Mask)
  107. #define XButtonEventMetaIsDown(x) (x->xbutton.state & Mod1Mask)
  108. #define XButtonEventGetX(event) (event->xbutton.x)
  109. #define XButtonEventGetY(event) (event->xbutton.y)
  110. #define XKeyEventGetTime(event) (event->xkey.time)
  111. #define XKeyEventShiftIsDown(x) (x->xkey.state & ShiftMask)
  112. #define XKeyEventCtrlIsDown(x) (x->xkey.state & ControlMask)
  113. #define XKeyEventAltIsDown(x) (x->xkey.state & Mod3Mask)
  114. #define XKeyEventMetaIsDown(x) (x->xkey.state & Mod1Mask)
  115. #define XKeyEventGetX(event) (event->xkey.x)
  116. #define XKeyEventGetY(event) (event->xkey.y)
  117. #define XFontStructGetAscent(f) f->ascent
  118. #endif
  119. // ----------------------------------------------------------------------------
  120. // Misc functions
  121. // ----------------------------------------------------------------------------
  122. bool wxDoSetShape( Display* xdisplay, Window xwindow, const wxRegion& region );
  123. class WXDLLIMPEXP_CORE wxXVisualInfo
  124. {
  125. public:
  126. wxXVisualInfo();
  127. ~wxXVisualInfo();
  128. void Init( Display* dpy, XVisualInfo* visualInfo );
  129. int m_visualType; // TrueColor, DirectColor etc.
  130. int m_visualDepth;
  131. int m_visualColormapSize;
  132. void *m_visualColormap;
  133. int m_visualScreen;
  134. unsigned long m_visualRedMask;
  135. unsigned long m_visualGreenMask;
  136. unsigned long m_visualBlueMask;
  137. int m_visualRedShift;
  138. int m_visualGreenShift;
  139. int m_visualBlueShift;
  140. int m_visualRedPrec;
  141. int m_visualGreenPrec;
  142. int m_visualBluePrec;
  143. unsigned char *m_colorCube;
  144. };
  145. bool wxFillXVisualInfo( wxXVisualInfo* vi, Display* dpy );
  146. #endif // _WX_PRIVX_H_