X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/7c74e7fe1de14f32dcd6f3c9cdd727de540bbd0e..b250d38459eb894e7fa87c3328b035a3e43685e1:/include/wx/defs.h diff --git a/include/wx/defs.h b/include/wx/defs.h index f567f81f72..d1717e5a40 100644 --- a/include/wx/defs.h +++ b/include/wx/defs.h @@ -16,21 +16,16 @@ #pragma interface "defs.h" #endif - -// needed to handle strings with xgettext: -#ifndef gettext_noop -# define gettext_noop(x) x -#endif - // ---------------------------------------------------------------------------- // compiler and OS identification // ---------------------------------------------------------------------------- -// OS +// OS: first test for generic Unix defines, then for particular flavours and +// finally for Unix-like systems #if defined(__unix) || defined(__unix__) || defined(____SVR4____) || \ - defined(__LINUX__) || defined(__sgi ) || \ + defined(__LINUX__) || defined(__sgi) || \ defined(__hpux) || defined(sun) || defined(__SUN__) || defined(_AIX) || \ - defined(__EMX__) + defined(__EMX__) || defined(__VMS) || defined(__BEOS__) #define __UNIX_LIKE__ @@ -67,7 +62,10 @@ #endif // Place other OS/2 compiler environment defines here - #define LINKAGEMODE _Optlink + #if defined(__VISAGECPP__) + // VisualAge is the only thing that understands _Optlink + #define LINKAGEMODE _Optlink + #endif #else // Windows #ifndef __WINDOWS__ #define __WINDOWS__ @@ -126,7 +124,9 @@ // Digital Unix C++ compiler only defines this symbol for .cxx and .hxx files, // so define it ourselves #ifdef __DECCXX - #define __cplusplus +#ifndef __VMS +# define __cplusplus +#endif #endif // __DECCXX // Resolves linking problems under HP-UX @@ -143,6 +143,12 @@ #endif #endif +// "old" GNUWIN32 is the one without Norlander's headers: it lacks the standard +// Win32 headers and we define the used stuff ourselves for it in +// wx/msw/gnuwin32/extra.h +#if defined(__GNUWIN32__) && !wxUSE_NORLANDER_HEADERS + #define __GNUWIN32_OLD__ +#endif ////////////////////////////////////////////////////////////////////////////////// // Currently Only MS-Windows/NT, XView and Motif are supported @@ -216,7 +222,7 @@ #define __HPUX__ #endif // HP-UX -// if we're on a Unixsystem but didn't use configure (so that setup.h didn't +// if we're on a Unix system but didn't use configure (so that setup.h didn't // define __UNIX__), do define __UNIX__ now #if !defined(__UNIX__) && defined(__UNIX_LIKE__) #define __UNIX__ @@ -293,7 +299,9 @@ // NB: of course, this doesn't replace the standard type, because, for // example, overloading based on bool/int parameter doesn't work and // so should be avoided in portable programs - typedef unsigned int bool; +#ifndef VMS +typedef unsigned int bool; +#endif #endif // bool typedef short int WXTYPE; @@ -312,21 +320,37 @@ typedef int wxWindowID; #define WXUNUSED(identifier) identifier #endif +// some arguments are only used in debug mode, but unused in release one +#ifdef __WXDEBUG__ + #define WXUNUSED_UNLESS_DEBUG(param) param +#else + #define WXUNUSED_UNLESS_DEBUG(param) WXUNUSED(param) +#endif + // ---------------------------------------------------------------------------- // portable calling conventions macros // ---------------------------------------------------------------------------- -// wxCALLBACK should be used for the functions which are called back by -// Windows (such as compare function for wxListCtrl) -#if defined(__WXMSW__) - #if defined(__MINGW32__) || defined(__GNUWIN32__) - #define wxCALLBACK __attribute__((stdcall)) +// stdcall is used for all functions called by Windows under Windows +#ifdef __WINDOWS__ + #if defined(__GNUWIN32__) + #define wxSTDCALL __attribute__((stdcall)) #else // both VC++ and Borland understand this - #define wxCALLBACK _stdcall + #define wxSTDCALL _stdcall #endif + +#else // Win + // no such stupidness under Unix + #define wxSTDCALL +#endif // platform + +// wxCALLBACK should be used for the functions which are called back by +// Windows (such as compare function for wxListCtrl) +#if defined(__WIN32__) + #define wxCALLBACK wxSTDCALL #else - // no stdcall under Unix + // no stdcall under Unix nor Win16 #define wxCALLBACK #endif // platform @@ -366,6 +390,22 @@ typedef int wxWindowID; # define WXDLLEXPORT_CTORFN # endif +#elif defined(__GNUC__) + +# ifdef WXMAKINGDLL +# define WXDLLEXPORT __declspec( dllexport ) +# define WXDLLEXPORT_DATA(type) __declspec( dllexport ) type +# define WXDLLEXPORT_CTORFN +# elif defined(WXUSINGDLL) +# define WXDLLEXPORT __declspec( dllimport ) +# define WXDLLEXPORT_DATA(type) __declspec( dllimport ) type +# define WXDLLEXPORT_CTORFN +# else +# define WXDLLEXPORT +# define WXDLLEXPORT_DATA(type) type +# define WXDLLEXPORT_CTORFN +# endif + #elif defined(__WXPM__) # ifdef WXMAKINGDLL @@ -487,32 +527,32 @@ typedef void (*wxFunction) (wxObject&, wxEvent&); // Not all platforms are currently available or supported enum { - wxUNKNOWN_PLATFORM, - wxCURSES, // Text-only CURSES - wxXVIEW_X, // Sun's XView OpenLOOK toolkit - wxMOTIF_X, // OSF Motif 1.x.x - wxCOSE_X, // OSF Common Desktop Environment - wxNEXTSTEP, // NeXTStep - wxMACINTOSH, // Apple System 7 and 8 - wxBEOS, // BeOS - wxGTK, // GTK on X - wxGTK_WIN32, // GTK on Win32 - wxGTK_OS2, // GTK on OS/2 - wxGTK_BEOS, // GTK on BeOS - wxQT, // Qt - wxGEOS, // GEOS - wxOS2_PM, // OS/2 Workplace - wxWINDOWS, // Windows or WfW - wxPENWINDOWS, // Windows for Pen Computing - wxWINDOWS_NT, // Windows NT - wxWIN32S, // Windows 32S API - wxWIN95, // Windows 95 - wxWIN386, // Watcom 32-bit supervisor modus - wxMGL_UNIX, // MGL with direct hardware access - wxMGL_X, // MGL on X - wxMGL_WIN32, // MGL on Win32 - wxMGL_OS2, // MGL on OS/2 - wxWINDOWS_OS2 // Native OS/2 PM + wxUNKNOWN_PLATFORM, + wxCURSES, // Text-only CURSES + wxXVIEW_X, // Sun's XView OpenLOOK toolkit + wxMOTIF_X, // OSF Motif 1.x.x + wxCOSE_X, // OSF Common Desktop Environment + wxNEXTSTEP, // NeXTStep + wxMACINTOSH, // Apple System 7 and 8 + wxBEOS, // BeOS + wxGTK, // GTK on X + wxGTK_WIN32, // GTK on Win32 + wxGTK_OS2, // GTK on OS/2 + wxGTK_BEOS, // GTK on BeOS + wxQT, // Qt + wxGEOS, // GEOS + wxOS2_PM, // OS/2 Workplace + wxWINDOWS, // Windows or WfW + wxPENWINDOWS, // Windows for Pen Computing + wxWINDOWS_NT, // Windows NT + wxWIN32S, // Windows 32S API + wxWIN95, // Windows 95 + wxWIN386, // Watcom 32-bit supervisor modus + wxMGL_UNIX, // MGL with direct hardware access + wxMGL_X, // MGL on X + wxMGL_WIN32, // MGL on Win32 + wxMGL_OS2, // MGL on OS/2 + wxWINDOWS_OS2 // Native OS/2 PM }; // ---------------------------------------------------------------------------- @@ -586,23 +626,23 @@ enum #define wxByte wxUint8 #define wxWord wxUint16 -// base floating point types +// base floating point types // wxFloat32 : 32 bit IEEE float ( 1 sign , 8 exponent bits , 23 fraction bits // wxFloat64 : 64 bit IEEE float ( 1 sign , 11 exponent bits , 52 fraction bits // wxDouble : native fastest representation that has at least wxFloat64 // precision, so use the IEEE types for storage , and this for calculations -typedef float wxFloat32 ; -#if defined( __WXMAC__ ) && defined (__MWERKS__) - typedef short double wxFloat64; +typedef float wxFloat32 ; +#if defined( __WXMAC__ ) && defined (__MWERKS__) + typedef short double wxFloat64; #else - typedef double wxFloat64; + typedef double wxFloat64; #endif -#if defined( __WXMAC__ ) && !defined( __POWERPC__ ) - typedef long double wxDouble; +#if defined( __WXMAC__ ) && !defined( __POWERPC__ ) + typedef long double wxDouble; #else - typedef double wxDouble ; + typedef double wxDouble ; #endif // ---------------------------------------------------------------------------- @@ -626,13 +666,13 @@ typedef float wxFloat32 ; #if defined (__MWERKS__) && ( (__MWERKS__ < 0x0900) || macintosh ) // assembler versions for these #ifdef __POWERPC__ - inline wxUint16 wxUINT16_SWAP_ALWAYS( wxUint16 i ) + inline wxUint16 wxUINT16_SWAP_ALWAYS( wxUint16 i ) {return (__lhbrx( &i , 0 ) ) ;} - inline wxInt16 wxINT16_SWAP_ALWAYS( wxInt16 i ) + inline wxInt16 wxINT16_SWAP_ALWAYS( wxInt16 i ) {return (__lhbrx( &i , 0 ) ) ;} - inline wxUint32 wxUINT32_SWAP_ALWAYS( wxUint32 i ) + inline wxUint32 wxUINT32_SWAP_ALWAYS( wxUint32 i ) {return (__lwbrx( &i , 0 ) ) ;} - inline wxInt32 wxINT32_SWAP_ALWAYS( wxInt32 i ) + inline wxInt32 wxINT32_SWAP_ALWAYS( wxInt32 i ) {return (__lwbrx( &i , 0 ) ) ;} #else #pragma parameter __D0 wxUINT16_SWAP_ALWAYS(__D0) @@ -880,13 +920,13 @@ enum wxStretch /* * wxToolBar style flags */ -#define wxTB_3DBUTTONS 0x8000 -#define wxTB_HORIZONTAL 0x0002 -#define wxTB_VERTICAL 0x0004 +#define wxTB_HORIZONTAL wxHORIZONTAL +#define wxTB_VERTICAL wxVERTICAL +#define wxTB_3DBUTTONS 0x0010 // Flatbar/Coolbar under Win98/ GTK 1.2 -#define wxTB_FLAT 0x0008 +#define wxTB_FLAT 0x0020 // use native docking under GTK -#define wxTB_DOCKABLE 0x0010 +#define wxTB_DOCKABLE 0x0040 /* * wxMenuBar style flags @@ -1106,6 +1146,15 @@ enum wxStretch #define wxHW_SCROLLBAR_NEVER 0x0002 #define wxHW_SCROLLBAR_AUTO 0x0004 +/* + * wxCalendarCtrl flags + */ +#define wxCAL_SUNDAY_FIRST 0x0000 +#define wxCAL_MONDAY_FIRST 0x0001 +#define wxCAL_SHOW_HOLIDAYS 0x0002 +#define wxCAL_NO_YEAR_CHANGE 0x0004 +#define wxCAL_NO_MONTH_CHANGE 0x000c // no month change => no year change + /* * extended dialog specifiers. these values are stored in a different * flag and thus do not overlap with other style flags. note that these @@ -1143,6 +1192,14 @@ enum wxStretch // standard IDs // ---------------------------------------------------------------------------- +// id for a separator line in the menu (invalid for normal item) +#define wxID_SEPARATOR (-1) + +// this one is for compatibility only, don't use in new code +#ifndef ID_SEPARATOR + #define ID_SEPARATOR wxID_SEPARATOR +#endif + // Standard menu IDs #define wxID_LOWEST 4999 @@ -1676,7 +1733,6 @@ typedef unsigned long WXMSGID; typedef void* WXRESULT; typedef int (*WXFARPROC)(); // some windows handles not defined by PM -typedef unsigned long COLORREF; typedef unsigned long HANDLE; typedef unsigned long HICON; typedef unsigned long HFONT; @@ -1690,7 +1746,33 @@ typedef unsigned long HIMAGELIST; typedef unsigned long HGLOBAL; typedef unsigned long DWORD; typedef unsigned short WORD; -#endif + +// WIN32 graphics types for OS/2 GPI + +// RGB under OS2 is more like a PALETTEENTRY struct under Windows so we need a real RGB def +#define OS2RGB(r,g,b) ((DWORD ((BYTE) (r) | ((WORD) (g) << 8)) | (((DWORD)(BYTE)(b)) << 16))) + +typedef unsigned long COLORREF; +#define GetBValue(rgb) ((BYTE)((rgb) >> 16)) +#define GetGValue(rgb) ((BYTE)(((WORD)(rgb)) >> 8)) +#define GetRValue(rgb) ((BYTE)(rgb)) +#define PALETTEINDEX(i) ((COLORREF)(0x01000000 | (DWORD)(WORD)(i))) +#define PALETTERGB(r,g,b) (0x02000000 | OS2RGB(r,g,b)) +// OS2's RGB/RGB2 is backwards from this +typedef struct tagPALETTEENTRY +{ + char bRed; + char bGreen; + char bBlue; + char bFlags; +} PALETTEENTRY; +typedef struct tagLOGPALETTE +{ + WORD palVersion; + WORD palNumentries; + WORD PALETTEENTRY[1]; +} LOGPALETTE; +#endif //__WXPM__ #if defined(__GNUWIN32__) || defined(__WXWINE__) typedef int (*WXFARPROC)(); @@ -1711,6 +1793,19 @@ typedef WXHWND WXWidget; #endif #endif +// the keywords needed for WinMain() declaration +#ifdef __WIN16__ + #ifndef FAR + #ifdef __VISUALC__ + #define FAR __far + #else // !VC++ + #define FAR _far + #endif + #endif // no FAR +#else // Win32 + #define FAR +#endif // Win16/32 + #endif // MSW #ifdef __WXMOTIF__ @@ -1749,12 +1844,22 @@ typedef struct _GdkColor GdkColor; typedef struct _GdkColormap GdkColormap; typedef struct _GdkFont GdkFont; typedef struct _GdkGC GdkGC; -typedef struct _GdkWindow GdkWindow; -typedef struct _GdkWindow GdkBitmap; -typedef struct _GdkWindow GdkPixmap; +#ifdef __WXGTK13__ + typedef struct _GdkDrawable GdkWindow; + typedef struct _GdkDrawable GdkBitmap; + typedef struct _GdkDrawable GdkPixmap; +#else + typedef struct _GdkWindow GdkWindow; + typedef struct _GdkWindow GdkBitmap; + typedef struct _GdkWindow GdkPixmap; +#endif typedef struct _GdkCursor GdkCursor; typedef struct _GdkRegion GdkRegion; typedef struct _GdkDragContext GdkDragContext; +#ifdef HAVE_XIM +typedef struct _GdkIC GdkIC; +typedef struct _GdkICAttr GdkICAttr; +#endif /* Stand-ins for GTK types */ typedef struct _GtkWidget GtkWidget;