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