X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/00cd8a958f1c032ac48bcc240ee4098f4c8bfa46..72594e90b2da8c167ba63b89b2c168c57a19cab4:/include/wx/defs.h diff --git a/include/wx/defs.h b/include/wx/defs.h index 6af81cf169..1438ff0cf9 100644 --- a/include/wx/defs.h +++ b/include/wx/defs.h @@ -13,35 +13,85 @@ #define _WX_DEFS_H_ #ifdef __GNUG__ -#pragma interface "defs.h" + #pragma interface "defs.h" #endif -#include +// ---------------------------------------------------------------------------- +// compiler and OS identification +// ---------------------------------------------------------------------------- + +// first define Windows symbols if they're not defined on the command line: we +// can autodetect everything we need if _WIN32 is defined +#if defined(_WIN32) || defined(WIN32) || defined(__NT__) + #ifndef __WXMSW__ + #define __WXMSW__ + #endif + + #ifndef __WIN32__ + #define __WIN32__ + #endif + + // Win95 means Win95-style UI, i.e. Win9x/NT 4+ + #if !defined(__WIN95__) && defined(WINVER) && (WINVER >= 0x0400) + #define __WIN95__ + #endif +#endif // Win32 + +#if defined(__WXMSW__) || defined(__WIN32__) + #if !defined(__WINDOWS__) + #define __WINDOWS__ + #endif +#endif + +#ifdef __WXWINE__ + #ifndef __WIN32__ + #define __WIN32__ + #endif + #ifndef __WIN95__ + #define __WIN95__ + #endif + #ifndef STRICT + #define STRICT + #endif +#endif // WINE + +#if defined(TWIN32) && !defined(__TWIN32__) + #define __TWIN32__ +#endif // Twin32 #include "wx/setup.h" +// check the consistency of the settings in setup.h +#include "wx/chkconf.h" + +// old C++ headers (like ) declare classes in the global namespace +// while the new, standard ones (like ) do it in std:: namespace +// +// using this macro allows constuctions like "wxSTD iostream" to work in +// either case +#if !wxUSE_IOSTREAMH + #define wxSTD std:: +#else + #define wxSTD +#endif + +// just in case they were defined in setup.h #ifdef PACKAGE - #undef PACKAGE +#undef PACKAGE #endif + #ifdef VERSION - #undef VERSION +#undef VERSION #endif -#include "wx/version.h" - -// ---------------------------------------------------------------------------- -// compiler and OS identification -// ---------------------------------------------------------------------------- - -// OS -#if defined(__unix) || defined(__unix__) || defined(____SVR4____) || \ - defined(__LINUX__) || defined(__sgi ) || \ +// OS: first test for generic Unix defines, then for particular flavours and +// finally for Unix-like systems +#if defined(__UNIX__) || defined(__unix) || defined(__unix__) || \ + defined(____SVR4____) || defined(__LINUX__) || defined(__sgi) || \ defined(__hpux) || defined(sun) || defined(__SUN__) || defined(_AIX) || \ - defined(__EMX__) + defined(__EMX__) || defined(__VMS) || defined(__BEOS__) - #ifndef __UNIX__ - #define __UNIX__ - #endif // Unix + #define __UNIX_LIKE__ // Helps SGI compilation, apparently #ifdef __SGI__ @@ -62,17 +112,64 @@ #endif #endif // Sun + #ifdef __EMX__ + #define OS2EMX_PLAIN_CHAR + #endif + + // define __HPUX__ for HP-UX where standard macro is __hpux #if defined(__hpux) && !defined(__HPUX__) #define __HPUX__ #endif // HP-UX -#elif defined(applec) || defined(THINK_C) || ( defined( __MWERKS__ ) && !defined(__INTEL__) ) - // MacOS + #if defined(__WXMAC__) && defined(__DARWIN__) + // Mac OS X + + // Some code has been added to workaround defects(?) in the + // bundled gcc compiler. These corrections are identified by: + // __DARWIN__ for corrections necessary for Darwin (wxMac, wxMotif) + + #include + #endif // __WXMAC__ && __DARWIN__ +#elif defined(applec) || \ + defined(THINK_C) || \ + (defined(__MWERKS__) && !defined(__INTEL__)) + // MacOS +#elif defined(__WXMAC__) && defined(__DARWIN__) + // Mac OS X + #define __UNIX_LIKE__ + + // Some code has been added to workaround defects(?) in the + // bundled gcc compiler. These corrections are identified by: + // __DARWIN__ for corrections necessary for Darwin (wxMac, wxMotif) + + #include +#elif defined(__OS2__) + #if defined(__IBMCPP__) + #define __VISAGEAVER__ __IBMCPP__ + #endif + #ifndef __WXOS2__ + #define __WXOS2__ + #endif + #ifndef __WXPM__ + #define __WXPM__ + #endif + + // Place other OS/2 compiler environment defines here + #if defined(__VISAGECPP__) + // VisualAge is the only thing that understands _Optlink + #define LINKAGEMODE _Optlink + #endif + #define wxSIZE_T_IS_UINT #else // Windows #ifndef __WINDOWS__ #define __WINDOWS__ #endif // Windows + // to be changed for Win64! + #ifndef __WIN32__ + #define __WIN16__ + #endif + // define another standard symbol for Microsoft Visual C++: the standard one // (_MSC_VER) is also defined by Metrowerks compiler #if defined(_MSC_VER) && !defined(__MWERKS__) @@ -80,25 +177,52 @@ #elif defined(__BCPLUSPLUS__) && !defined(__BORLANDC__) #define __BORLANDC__ #elif defined(__WATCOMC__) - //#define __WATCOMC__ #elif defined(__SC__) #define __SYMANTECC__ #endif // compiler + + // size_t is the same as unsigned int for all Windows compilers we know, + // so define it if it hadn't been done by configure yet + #if !defined(wxSIZE_T_IS_UINT) && !defined(wxSIZE_T_IS_ULONG) + #define wxSIZE_T_IS_UINT + #endif #endif // OS +// 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__ +#endif // Unix + +// LINKAGEMODE mode is empty for everyting except OS/2 +#ifndef LINKAGEMODE + #define LINKAGEMODE +#endif // LINKAGEMODE + // suppress some Visual C++ warnings #ifdef __VISUALC__ +# pragma warning(disable:4201) // nonstandard extension used: nameless struct/union # pragma warning(disable:4244) // conversion from double to float # pragma warning(disable:4100) // unreferenced formal parameter # pragma warning(disable:4511) // copy ctor couldn't be generated # pragma warning(disable:4512) // operator=() couldn't be generated -#ifndef WIN32 +# pragma warning(disable:4699) // using precompiled header # pragma warning(disable:4134) // conversion between pointers to members of same class +# pragma warning(disable:4710) // function not inlined +#ifndef WIN32 # pragma warning(disable:4135) // conversion between different integral types # pragma warning(disable:4769) // assignment of near pointer to long integer +// This one is really annoying, since it occurs for each cast to (HANDLE)... +# pragma warning(disable:4305) // truncation of long to near ptr #endif #endif // __VISUALC__ +// suppress some Watcom C++ warnings +#ifdef __WATCOMC__ +# pragma warning 849 9 // Disable 'virtual function hidden' +# pragma warning 549 9 // Disable 'operand contains compiler generated information' +#endif // __VISUALC__ + // suppress some Salford C++ warnings #ifdef __SALFORDC__ # pragma suppress 353 // Possible nested comments @@ -108,10 +232,19 @@ # pragma suppress 571 // Virtual function hiding #endif // __SALFORDC__ +#if defined(__VISUALC__) && !defined(WIN32) + // VC1.5 does not have LPTSTR type + #define LPTSTR LPSTR + #define LPCTSTR LPCSTR +#endif // VC++ 1.5 + // Digital Unix C++ compiler only defines this symbol for .cxx and .hxx files, -// so define it ourselves +// so define it ourselves (newer versions do it for all files, though, and +// don't allow it to be redefined) #ifdef __DECCXX - #define __cplusplus + #if !defined(__VMS) && !defined(__cplusplus) + #define __cplusplus + #endif #endif // __DECCXX // Resolves linking problems under HP-UX @@ -119,9 +252,15 @@ #define va_list __gnuc_va_list #endif // HP-UX -////////////////////////////////////////////////////////////////////////////////// -// Currently Only MS-Windows/NT, XView and Motif are supported -// +// This macro can be used to check that the version of mingw32 compiler is +// at least maj.min +#if defined( __GNUWIN32__ ) || defined( __MINGW32__ ) || defined( __CYGWIN__ ) + #include "wx/msw/gccpriv.h" +#else + #undef wxCHECK_W32API_VERSION + #define wxCHECK_W32API_VERSION(maj, min) (0) +#endif + #if defined(__HPUX__) && !defined(__WXGTK__) #ifndef __WXMOTIF__ #define __WXMOTIF__ @@ -132,46 +271,35 @@ #define __X__ #endif -#ifdef __WXMSW__ -// wxWindows checks for WIN32, not __WIN32__ -#if ((defined(WIN32) || defined(__NT__)) && !defined(__WIN32__) && !defined(__WXSTUBS__)) -#define __WIN32__ -#endif - -#ifdef __WXWINE__ - #ifndef __WIN32__ - #define __WIN32__ - #endif - #ifndef __WIN95__ - #define __WIN95__ - #endif - #ifndef STRICT - #define STRICT - #endif -#endif - -#ifndef __WIN32__ -#define __WIN16__ -#endif - -#if !defined(__WIN95__) && (WINVER >= 0x0400) -#define __WIN95__ -#endif - -#if defined(TWIN32) && !defined(__TWIN32__) -#define __TWIN32__ -#endif - -#endif // wxMSW - // Make sure the environment is set correctly #if defined(__WXMSW__) && defined(__X__) #error "Target can't be both X and Windows" #elif !defined(__WXMOTIF__) && !defined(__WXMSW__) && !defined(__WXGTK__) && \ - !defined(__WXMAC__) && !defined(__X__) && !defined(__WXQT__) && !defined(__WXSTUBS__) - #error "No Target! Use -D[__WXMOTIF__|__WXGTK__|__WXMSW__|__WXMAC__|__WXQT__|__WXSTUBS__]" + !defined(__WXPM__) && !defined(__WXMAC__) && !defined(__X__) && \ + !defined(__WXMGL__) && wxUSE_GUI + #ifdef __UNIX__ + #error "No Target! You should use wx-config program for compilation flags!" + #else // !Unix + #error "No Target! You should use supplied makefiles for compilation!" + #endif // Unix/!Unix #endif +#include "wx/version.h" + +// ---------------------------------------------------------------------------- +// compatibility defines +// ---------------------------------------------------------------------------- + +// possibility to build non GUI apps is new, so don't burden ourselves with +// compatibility code +#if !wxUSE_GUI + #undef WXWIN_COMPATIBILITY_2 + #undef WXWIN_COMPATIBILITY_2_2 + + #define WXWIN_COMPATIBILITY_2 0 + #define WXWIN_COMPATIBILITY_2_2 0 +#endif // !GUI + // ============================================================================ // non portable C++ features // ============================================================================ @@ -180,27 +308,20 @@ // check for native bool type and TRUE/FALSE constants // ---------------------------------------------------------------------------- -#if defined(__WXMOTIF__) || defined(__WXGTK__) || defined(__WXQT__) || defined(__WXSTUBS__) - // Bool is now obsolete, use bool instead - // typedef int Bool; +// define boolean constants if not done yet +#ifndef TRUE + #define TRUE 1 +#endif - #ifndef TRUE - #define TRUE 1 - #define FALSE 0 - #define Bool_DEFINED - #endif -#elif defined(__WXMSW__) - #ifndef TRUE - #define TRUE 1 - #define FALSE 0 - #endif -#endif // TRUE/FALSE +#ifndef FALSE + #define FALSE 0 +#endif // Add more tests here for Windows compilers that already define bool // (under Unix, configure tests for this) #ifndef HAVE_BOOL #if defined( __MWERKS__ ) - #if (__MWERKS__ >= 0x1000) && !__option(bool) + #if (__MWERKS__ >= 0x1000) && __option(bool) #define HAVE_BOOL #endif #elif defined(__VISUALC__) && (__VISUALC__ == 1020) @@ -225,6 +346,11 @@ #elif defined(__GNUWIN32__) // Cygwin supports bool #define HAVE_BOOL + #elif defined(__VISAGECPP__) + #if __IBMCPP__ < 400 + typedef unsigned long bool; + #endif + #define HAVE_BOOL #endif // compilers #endif // HAVE_BOOL @@ -232,7 +358,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; @@ -244,47 +372,107 @@ typedef short int WXTYPE; // because -1 is a valid (and largely used) value for window id. typedef int wxWindowID; -// Macro to cut down on compiler warnings. -#if REMOVE_UNUSED_ARG - #define WXUNUSED(identifier) /* identifier */ -#else // stupid, broken compiler - #define WXUNUSED(identifier) identifier -#endif +// ---------------------------------------------------------------------------- +// portable calling conventions macros +// ---------------------------------------------------------------------------- -/* - * Making or using wxWindows as a Windows DLL - */ +// 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 wxSTDCALL _stdcall + #endif -#ifdef __WXMSW__ +#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__) && !defined(__WXMICROWIN__) + #define wxCALLBACK wxSTDCALL +#else + // no stdcall under Unix nor Win16 + #define wxCALLBACK +#endif // platform + +// callling convention for the qsort(3) callback + +#if defined(__VISUALC__) + #define wxCMPFUNC_CONV _cdecl +#elif defined(__VISAGECPP__) + #define wxCMPFUNC_CONV _Optlink +#else // !Visual C++ + #define wxCMPFUNC_CONV +#endif // compiler + +// compatibility :-( +#define CMPFUNC_CONV wxCMPFUNC_CONV + +// ---------------------------------------------------------------------------- +// Making or using wxWindows as a Windows DLL +// ---------------------------------------------------------------------------- -// _declspec works in BC++ 5 and later, as well as VC++ -#if defined(__VISUALC__) || defined(__BORLANDC__) +#if defined(__WXMSW__) +// __declspec works in BC++ 5 and later, Watcom C++ 11.0 and later as well as VC++ and gcc +#if defined(__VISUALC__) || defined(__BORLANDC__) || defined(__GNUC__) || defined(__WATCOMC__) # ifdef WXMAKINGDLL -# define WXDLLEXPORT _declspec( dllexport ) -# define WXDLLEXPORT_DATA(type) _declspec( dllexport ) type +# 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 __declspec( dllimport ) +# define WXDLLEXPORT_DATA(type) __declspec( dllimport ) type # define WXDLLEXPORT_CTORFN # else # define WXDLLEXPORT # define WXDLLEXPORT_DATA(type) type # define WXDLLEXPORT_CTORFN # endif - #else -# define WXDLLEXPORT -# define WXDLLEXPORT_DATA(type) type -# define WXDLLEXPORT_CTORFN +# define WXDLLEXPORT +# define WXDLLEXPORT_DATA(type) type +# define WXDLLEXPORT_CTORFN #endif -#else // !Windows +#elif defined(__WXPM__) + +# if (!(defined(__VISAGECPP__) && (__IBMCPP__ < 400 || __IBMC__ < 400 ))) + +# ifdef WXMAKINGDLL +# define WXDLLEXPORT _Export +# define WXDLLEXPORT_DATA(type) _Export type +# define WXDLLEXPORT_CTORFN +# elif defined(WXUSINGDLL) +# define WXDLLEXPORT _Export +# define WXDLLEXPORT_DATA(type) _Export type +# define WXDLLEXPORT_CTORFN +# else +# define WXDLLEXPORT +# define WXDLLEXPORT_DATA(type) type +# define WXDLLEXPORT_CTORFN +# endif + +# else + +# define WXDLLEXPORT +# define WXDLLEXPORT_DATA(type) type +# define WXDLLEXPORT_CTORFN + +# endif + +#else // !(MSW or OS2) + # define WXDLLEXPORT # define WXDLLEXPORT_DATA(type) type # define WXDLLEXPORT_CTORFN -#endif // Win/!Win + +#endif + // For ostream, istream ofstream #if defined(__BORLANDC__) && defined( _RTLDLL ) @@ -293,51 +481,56 @@ typedef int wxWindowID; # define WXDLLIMPORT #endif +#ifdef __cplusplus class WXDLLEXPORT wxObject; class WXDLLEXPORT wxEvent; +#endif - /** symbolic constant used by all Find()-like functions returning positive - integer on success as failure indicator */ +// symbolic constant used by all Find()-like functions returning positive +// integer on success as failure indicator #define wxNOT_FOUND (-1) // ---------------------------------------------------------------------------- -/** @name Very common macros */ +// Very common macros // ---------------------------------------------------------------------------- -//@{ -/// delete pointer if it is not NULL and NULL it afterwards + +// everybody gets the assert and other debug macros +#ifdef __cplusplus +#include "wx/debug.h" +#endif + +// NULL declaration: it must be defined as 0 for C++ programs (in particular, +// it must not be defined as "(void *)0" which is standard for C but completely +// breaks C++ code) +#include + +// Macro to cut down on compiler warnings. +#if REMOVE_UNUSED_ARG + #define WXUNUSED(identifier) /* identifier */ +#else // stupid, broken compiler + #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 + +// delete pointer if it is not NULL and NULL it afterwards // (checking that it's !NULL before passing it to delete is just a // a question of style, because delete will do it itself anyhow, but it might // be considered as an error by some overzealous debugging implementations of // the library, so we do it ourselves) -#if defined(__SGI_CC__) -// Okay this is bad styling, but the native SGI compiler is very picky, it -// wont let you compare/assign between a NULL (void *) and another pointer -// type. To be really clean we'd need to pass in another argument, the type -// of p. -// Also note the use of 0L, this would allow future possible 64bit support -// (as yet untested) by ensuring that we zero all the bits in a pointer -// (which is always the same length as a long (at least with the LP64 standard) -// --- offer aug 98 -#define wxDELETE(p) if ( (p) ) { delete (p); p = 0L; } -#else #define wxDELETE(p) if ( (p) != NULL ) { delete p; p = NULL; } -#endif /* __SGI__CC__ */ // delete an array and NULL it (see comments above) -#if defined(__SGI_CC__) -// see above comment. -#define wxDELETEA(p) if ( (p) ) { delete [] (p); p = 0L; } -#else -#define wxDELETEA(p) if ( ((void *) (p)) != NULL ) { delete [] p; p = NULL; } -#endif /* __SGI__CC__ */ +#define wxDELETEA(p) if ( (p) ) { delete [] (p); p = NULL; } -/// size of statically declared array +// size of statically declared array #define WXSIZEOF(array) (sizeof(array)/sizeof(array[0])) -// Use of these suppresses some compiler warnings -WXDLLEXPORT_DATA(extern const bool) wxTrue; -WXDLLEXPORT_DATA(extern const bool) wxFalse; - // ---------------------------------------------------------------------------- // compiler specific settings // ---------------------------------------------------------------------------- @@ -364,67 +557,148 @@ WXDLLEXPORT_DATA(extern const bool) wxFalse; // where should i put this? we need to make sure of this as it breaks // the code. #if !wxUSE_IOSTREAMH && defined(__WXDEBUG__) -#ifndef __MWERKS__ -#undef __WXDEBUG__ -#endif +# ifndef __MWERKS__ +// #undef __WXDEBUG__ +# ifdef wxUSE_DEBUG_NEW_ALWAYS +# undef wxUSE_DEBUG_NEW_ALWAYS +# define wxUSE_DEBUG_NEW_ALWAYS 0 +# endif +# endif #endif // Callback function type definition +#ifdef __cplusplus typedef void (*wxFunction) (wxObject&, wxEvent&); +#endif + +// ---------------------------------------------------------------------------- +// OS mnemonics -- Identify the running OS (useful for Windows) +// ---------------------------------------------------------------------------- + +// 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 + 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 + wxUNIX // wxBase under Unix +}; // ---------------------------------------------------------------------------- -// machine specific settings +// standard wxWindows types // ---------------------------------------------------------------------------- +// the type for screen and DC coordinates + +#if wxUSE_COMPATIBLE_COORD_TYPES + // to ensure compatibility with 2.0, we must use long + #define wxCoord long +#else // !wxUSE_COMPATIBLE_COORD_TYPES + #ifdef __WIN16__ + // under Win16, int is too small, so use long to allow for bigger + // virtual canvases + typedef long wxCoord; + #else // !Win16 + // other platforms we support have at least 32bit int - quite enough + typedef int wxCoord; + #endif // Win16/!Win16 +#endif // wxUSE_COMPATIBLE_COORD_TYPES/!wxUSE_COMPATIBLE_COORD_TYPES + // fixed length types -typedef char signed wxInt8; -typedef char unsigned wxUint8; +#define wxInt8 char signed +#define wxUint8 char unsigned #ifdef __WIN16__ -typedef int signed wxInt16; -typedef int unsigned wxUint16; -typedef long signed wxInt32; -typedef long unsigned wxUint32; +#define wxInt16 int signed +#define wxUint16 int unsigned +#define wxInt32 long signed +#define wxUint32 long unsigned #endif #ifdef __WIN32__ -typedef short signed wxInt16; -typedef short unsigned wxUint16; -typedef int signed wxInt32; -typedef int unsigned wxUint32; +#define wxInt16 short signed +#define wxUint16 short unsigned +#define wxInt32 int signed +#define wxUint32 int unsigned #endif #ifdef __WXMAC__ -typedef short signed wxInt16; -typedef short unsigned wxUint16; -typedef int signed wxInt32; -typedef int unsigned wxUint32; +#define wxInt16 short signed +#define wxUint16 short unsigned +#define wxInt32 int signed +#define wxUint32 int unsigned #endif #ifdef __WXOS2__ -typedef short signed wxInt16; -typedef short unsigned wxUint16; -typedef int signed wxInt32; -typedef int unsigned wxUint32; +#define wxInt16 short signed +#define wxUint16 short unsigned +#define wxInt32 int signed +#define wxUint32 int unsigned #endif #if !defined(__WXMSW__) && !defined(__WXMAC__) && !defined(__WXOS2__) #if defined(SIZEOF_INT) - typedef short signed wxInt16; - typedef short unsigned wxUint16; - typedef int signed wxInt32; - typedef int unsigned wxUint32; + /* well, this shouldn't happen... */ + #define wxInt16 short signed + #define wxUint16 short unsigned + #define wxInt32 int signed + #define wxUint32 int unsigned #else - typedef short signed wxInt16; - typedef short unsigned wxUint16; - typedef int signed wxInt32; - typedef int unsigned wxUint32; + #define wxInt16 short signed + #define wxUint16 short unsigned + #define wxInt32 int signed + #define wxUint32 int unsigned #endif #endif -typedef wxUint8 wxByte; -typedef wxUint16 wxWord; +#define wxByte wxUint8 +#define wxWord wxUint16 + +// 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; +#else + typedef double wxFloat64; +#endif + +#if defined( __WXMAC__ ) && !defined( __POWERPC__ ) + typedef long double wxDouble; +#else + typedef double wxDouble ; +#endif + +// ---------------------------------------------------------------------------- +// byte ordering related definition and macros +// ---------------------------------------------------------------------------- // byte sex @@ -440,16 +714,46 @@ typedef wxUint16 wxWord; // byte swapping +#if defined (__MWERKS__) && ( (__MWERKS__ < 0x0900) || macintosh ) +// assembler versions for these +#ifdef __POWERPC__ + inline wxUint16 wxUINT16_SWAP_ALWAYS( wxUint16 i ) + {return (__lhbrx( &i , 0 ) ) ;} + inline wxInt16 wxINT16_SWAP_ALWAYS( wxInt16 i ) + {return (__lhbrx( &i , 0 ) ) ;} + inline wxUint32 wxUINT32_SWAP_ALWAYS( wxUint32 i ) + {return (__lwbrx( &i , 0 ) ) ;} + inline wxInt32 wxINT32_SWAP_ALWAYS( wxInt32 i ) + {return (__lwbrx( &i , 0 ) ) ;} +#else + #pragma parameter __D0 wxUINT16_SWAP_ALWAYS(__D0) + pascal wxUint16 wxUINT16_SWAP_ALWAYS(wxUint16 value) + = { 0xE158 }; + + #pragma parameter __D0 wxINT16_SWAP_ALWAYS(__D0) + pascal wxInt16 wxINT16_SWAP_ALWAYS(wxInt16 value) + = { 0xE158 }; + + #pragma parameter __D0 wxUINT32_SWAP_ALWAYS (__D0) + pascal wxUint32 wxUINT32_SWAP_ALWAYS(wxUint32 value) + = { 0xE158, 0x4840, 0xE158 }; + + #pragma parameter __D0 wxINT32_SWAP_ALWAYS (__D0) + pascal wxInt32 wxINT32_SWAP_ALWAYS(wxInt32 value) + = { 0xE158, 0x4840, 0xE158 }; + +#endif +#else // !MWERKS #define wxUINT16_SWAP_ALWAYS(val) \ ((wxUint16) ( \ (((wxUint16) (val) & (wxUint16) 0x00ffU) << 8) | \ (((wxUint16) (val) & (wxUint16) 0xff00U) >> 8))) - + #define wxINT16_SWAP_ALWAYS(val) \ ((wxInt16) ( \ (((wxUint16) (val) & (wxUint16) 0x00ffU) << 8) | \ (((wxUint16) (val) & (wxUint16) 0xff00U) >> 8))) - + #define wxUINT32_SWAP_ALWAYS(val) \ ((wxUint32) ( \ (((wxUint32) (val) & (wxUint32) 0x000000ffU) << 24) | \ @@ -463,7 +767,7 @@ typedef wxUint16 wxWord; (((wxUint32) (val) & (wxUint32) 0x0000ff00U) << 8) | \ (((wxUint32) (val) & (wxUint32) 0x00ff0000U) >> 8) | \ (((wxUint32) (val) & (wxUint32) 0xff000000U) >> 24))) - +#endif // machine specific byte swapping #ifdef WORDS_BIGENDIAN @@ -486,6 +790,96 @@ typedef wxUint16 wxWord; #define wxINT32_SWAP_ON_BE(val) (val) #endif +// ---------------------------------------------------------------------------- +// Geometric flags +// ---------------------------------------------------------------------------- + +enum wxGeometryCentre +{ + wxCENTRE = 0x0001, + wxCENTER = wxCENTRE +}; + +// centering into frame rather than screen (obsolete) +#define wxCENTER_FRAME 0x0000 +// centre on screen rather than parent +#define wxCENTRE_ON_SCREEN 0x0002 +#define wxCENTER_ON_SCREEN wxCENTRE_ON_SCREEN + +enum wxOrientation +{ + wxHORIZONTAL = 0x0004, + wxVERTICAL = 0x0008, + + wxBOTH = (wxVERTICAL | wxHORIZONTAL) +}; + +enum wxDirection +{ + wxLEFT = 0x0010, + wxRIGHT = 0x0020, + wxUP = 0x0040, + wxDOWN = 0x0080, + + wxTOP = wxUP, + wxBOTTOM = wxDOWN, + + wxNORTH = wxUP, + wxSOUTH = wxDOWN, + wxWEST = wxLEFT, + wxEAST = wxRIGHT, + + wxALL = (wxUP | wxDOWN | wxRIGHT | wxLEFT) +}; + +enum wxAlignment +{ + wxALIGN_NOT = 0x0000, + wxALIGN_CENTER_HORIZONTAL = 0x0100, + wxALIGN_CENTRE_HORIZONTAL = wxALIGN_CENTER_HORIZONTAL, + wxALIGN_LEFT = wxALIGN_NOT, + wxALIGN_TOP = wxALIGN_NOT, + wxALIGN_RIGHT = 0x0200, + wxALIGN_BOTTOM = 0x0400, + wxALIGN_CENTER_VERTICAL = 0x0800, + wxALIGN_CENTRE_VERTICAL = wxALIGN_CENTER_VERTICAL, + + wxALIGN_CENTER = (wxALIGN_CENTER_HORIZONTAL | wxALIGN_CENTER_VERTICAL), + wxALIGN_CENTRE = wxALIGN_CENTER, + + // a mask to extract alignment from the combination of flags + wxALIGN_MASK = 0x0f00 +}; + +enum wxStretch +{ + wxSTRETCH_NOT = 0x0000, + wxSHRINK = 0x1000, + wxGROW = 0x2000, + wxEXPAND = wxGROW, + wxSHAPED = 0x4000, + wxADJUST_MINSIZE = 0x8000, + wxTILE = 0xc000 +}; + +// border flags: the values are chosen for backwards compatibility +enum wxBorder +{ + // this is different from wxBORDER_NONE as by default the controls do have + // border + wxBORDER_DEFAULT = 0, + + wxBORDER_NONE = 0x00200000, + wxBORDER_STATIC = 0x01000000, + wxBORDER_SIMPLE = 0x02000000, + wxBORDER_RAISED = 0x04000000, + wxBORDER_SUNKEN = 0x08000000, + wxBORDER_DOUBLE = 0x10000000, + + // a mask to extract border style from the combination of flags + wxBORDER_MASK = 0x1f200000 +}; + // ---------------------------------------------------------------------------- // Window style flags // ---------------------------------------------------------------------------- @@ -506,112 +900,164 @@ typedef wxUint16 wxWord; /* * Window (Frame/dialog/subwindow/panel item) style flags */ -#define wxVSCROLL 0x80000000 -#define wxHSCROLL 0x40000000 -#define wxCAPTION 0x20000000 - -// New styles -#define wxDOUBLE_BORDER 0x10000000 -#define wxSUNKEN_BORDER 0x08000000 -#define wxRAISED_BORDER 0x04000000 -#define wxBORDER 0x02000000 -#define wxSIMPLE_BORDER wxBORDER -#define wxSTATIC_BORDER 0x01000000 -#define wxTRANSPARENT_WINDOW 0x00100000 -#define wxNO_BORDER 0x00200000 - -#define wxUSER_COLOURS 0x00800000 - // Override CTL3D etc. control colour processing to - // allow own background colour - // OBSOLETE - use wxNO_3D instead -#define wxNO_3D 0x00800000 - // Override CTL3D or native 3D styles for children -#define wxCLIP_CHILDREN 0x00400000 - // Clip children when painting, which reduces flicker in - // e.g. frames and splitter windows, but can't be used in - // a panel where a static box must be 'transparent' (panel - // paints the background for it) - -// Add this style to a panel to get tab traversal working -// outside of dialogs. -#define wxTAB_TRAVERSAL 0x00080000 +#define wxVSCROLL 0x80000000 +#define wxHSCROLL 0x40000000 +#define wxCAPTION 0x20000000 + +// New styles (border styles are now in their own enum) +#define wxDOUBLE_BORDER wxBORDER_DOUBLE +#define wxSUNKEN_BORDER wxBORDER_SUNKEN +#define wxRAISED_BORDER wxBORDER_RAISED +#define wxBORDER wxBORDER_SIMPLE +#define wxSIMPLE_BORDER wxBORDER_SIMPLE +#define wxSTATIC_BORDER wxBORDER_STATIC +#define wxNO_BORDER wxBORDER_NONE + +// Override CTL3D etc. control colour processing to allow own background +// colour. +// Override CTL3D or native 3D styles for children +#define wxNO_3D 0x00800000 + +// OBSOLETE - use wxNO_3D instead +#define wxUSER_COLOURS wxNO_3D + +// wxALWAYS_SHOW_SB: instead of hiding the scrollbar when it is not needed, +// disable it - but still show (see also wxLB_ALWAYS_SB style) +// +// NB: as this style is only supported by wxUniversal so far as it doesn't use +// wxUSER_COLOURS/wxNO_3D, we reuse the same style value +#define wxALWAYS_SHOW_SB 0x00800000 + +// Clip children when painting, which reduces flicker in e.g. frames and +// splitter windows, but can't be used in a panel where a static box must be +// 'transparent' (panel paints the background for it) +#define wxCLIP_CHILDREN 0x00400000 + +// Note we're reusing the wxCAPTION style because we won't need captions +// for subwindows/controls +#define wxCLIP_SIBLINGS 0x20000000 + +#define wxTRANSPARENT_WINDOW 0x00100000 + +// Add this style to a panel to get tab traversal working outside of dialogs +// (on by default for wxPanel, wxDialog, wxScrolledWindow) +#define wxTAB_TRAVERSAL 0x00080000 // Add this style if the control wants to get all keyboard messages (under // Windows, it won't normally get the dialog navigation key events) -#define wxWANTS_CHARS 0x00040000 +#define wxWANTS_CHARS 0x00040000 -// Orientations -enum wxOrientation -{ - wxHORIZONTAL = 0x01, - wxVERTICAL = 0x02, - wxBOTH = (wxVERTICAL | wxHORIZONTAL) -}; +// Make window retained (mostly Motif, I think) -- obsolete (VZ)? +#define wxRETAINED 0x00020000 +#define wxBACKINGSTORE wxRETAINED -#define wxCENTER_FRAME 0x04 /* centering into frame rather than screen */ +// set this flag to create a special popup window: it will be always shown on +// top of other windows, will capture the mouse and will be dismissed when the +// mouse is clicked outside of it or if it loses focus in any other way +#define wxPOPUP_WINDOW 0x00020000 + +// don't invalidate the whole window (resulting in a PAINT event) when the +// window is resized (currently, makes sense for wxMSW only) +#define wxNO_FULL_REPAINT_ON_RESIZE 0x00010000 /* - * Frame/dialog style flags + * Extra window style flags (use wxWS_EX prefix to make it clear that they + * should be passed to wxWindow::SetExtraStyle(), not SetWindowStyle()) + */ + +// by default, TransferDataTo/FromWindow() only work on direct children of the +// window (compatible behaviour), set this flag to make them recursively +// descend into all subwindows +#define wxWS_EX_VALIDATE_RECURSIVELY 0x00000001 + +/* + * wxFrame/wxDialog style flags */ #define wxSTAY_ON_TOP 0x8000 #define wxICONIZE 0x4000 #define wxMINIMIZE wxICONIZE #define wxMAXIMIZE 0x2000 -#define wxTHICK_FRAME 0x1000 +// free value: 0x1000 #define wxSYSTEM_MENU 0x0800 #define wxMINIMIZE_BOX 0x0400 #define wxMAXIMIZE_BOX 0x0200 #define wxTINY_CAPTION_HORIZ 0x0100 #define wxTINY_CAPTION_VERT 0x0080 -#define wxRESIZE_BOX wxMAXIMIZE_BOX #define wxRESIZE_BORDER 0x0040 + +#define wxDIALOG_NO_PARENT 0x0001 // Don't make owned by apps top window +#define wxFRAME_NO_TASKBAR 0x0002 // No taskbar button (MSW only) +#define wxFRAME_TOOL_WINDOW 0x0004 // No taskbar button, no system menu + +// deprecated versions defined for compatibility reasons +#define wxRESIZE_BOX wxMAXIMIZE_BOX +#define wxTHICK_FRAME wxRESIZE_BORDER + +// obsolete styles, unused any more #define wxDIALOG_MODAL 0x0020 #define wxDIALOG_MODELESS 0x0000 -/* Add for normal Windows frame behaviour */ -#define wxFRAME_FLOAT_ON_PARENT 0x0020 +// deprecated flag, don't use any more, defined for compatibility only +#define wxFRAME_FLOAT_ON_PARENT 0 + +// Context-sensitive help +#define wxFRAME_EX_CONTEXTHELP 0x00000004 +#define wxDIALOG_EX_CONTEXTHELP 0x00000004 + +/* + * MDI parent frame style flags + * Can overlap with some of the above. + */ + +#define wxFRAME_NO_WINDOW_MENU 0x0100 #if WXWIN_COMPATIBILITY #define wxDEFAULT_FRAME wxDEFAULT_FRAME_STYLE #endif -#define wxDEFAULT_FRAME_STYLE (wxSYSTEM_MENU|wxRESIZE_BORDER | wxMINIMIZE_BOX | wxMAXIMIZE_BOX | wxTHICK_FRAME | wxSYSTEM_MENU | wxCAPTION | wxCLIP_CHILDREN) +#define wxDEFAULT_FRAME_STYLE \ + (wxSYSTEM_MENU | wxRESIZE_BORDER | \ + wxMINIMIZE_BOX | wxMAXIMIZE_BOX | \ + wxCAPTION | wxCLIP_CHILDREN) #ifdef __WXMSW__ -# define wxDEFAULT_DIALOG_STYLE (wxSYSTEM_MENU|wxCAPTION|wxTHICK_FRAME) +# define wxDEFAULT_DIALOG_STYLE (wxSYSTEM_MENU | wxCAPTION) #else -// Under Unix, the dialogs don't have a system menu. Specifying -// wxSYSTEM_MENU here, will make a close button appear. -# define wxDEFAULT_DIALOG_STYLE (wxCAPTION) +// Under Unix, the dialogs don't have a system menu. Specifying wxSYSTEM_MENU +// here will make a close button appear. +# define wxDEFAULT_DIALOG_STYLE wxCAPTION #endif - /* - * Subwindow style flags + * wxExtDialog style flags */ -#define wxRETAINED 0x0001 -#define wxBACKINGSTORE wxRETAINED -// wxCanvas or wxPanel can optionally have a thick frame under MS Windows. -// #define wxTHICK_FRAME 0x1000 +#define wxED_CLIENT_MARGIN 0x0004 +#define wxED_BUTTONS_BOTTOM 0x0000 // has no effect +#define wxED_BUTTONS_RIGHT 0x0002 +#define wxED_STATIC_LINE 0x0001 + +#if defined(__WXMSW__) || defined(__WXMAC__) +# define wxEXT_DIALOG_STYLE (wxDEFAULT_DIALOG_STYLE|wxED_CLIENT_MARGIN) +#else +# define wxEXT_DIALOG_STYLE (wxDEFAULT_DIALOG_STYLE|wxED_CLIENT_MARGIN|wxED_STATIC_LINE) +#endif /* * 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 */ // use native docking #define wxMB_DOCKABLE 0x0001 -// make all menus tearoff menus, even if not set on per-menu basis -#define wxMB_TEAROFF 0x0002 /* * wxMenu style flags @@ -622,13 +1068,7 @@ enum wxOrientation * Apply to all panel items */ #define wxCOLOURED 0x0800 -// Alignment for panel item labels: replaces characters with zeros -// when creating label, so spaces can be included in string for alignment. #define wxFIXED_LENGTH 0x0400 -#define wxALIGN_LEFT 0x0000 -#define wxALIGN_CENTER 0x0100 -#define wxALIGN_CENTRE 0x0100 -#define wxALIGN_RIGHT 0x0200 /* * Styles for wxListBox @@ -642,17 +1082,18 @@ enum wxOrientation #define wxLB_NEEDED_SB 0x0200 #define wxLB_ALWAYS_SB 0x0400 #define wxLB_HSCROLL wxHSCROLL +// always show an entire number of rows +#define wxLB_INT_HEIGHT 0x0800 -/* - * wxTextCtrl style flags - */ -#define wxPROCESS_ENTER 0x0004 -#define wxPASSWORD 0x0008 -#define wxTE_PROCESS_ENTER wxPROCESS_ENTER -#define wxTE_PASSWORD wxPASSWORD -#define wxTE_READONLY 0x0010 -#define wxTE_MULTILINE 0x0020 -#define wxTE_PROCESS_TAB 0x0040 +// use wxHSCROLL to not wrap text at all, wxTE_LINEWRAP to wrap it at any +// position and wxTE_WORDWRAP to wrap at words boundary +#define wxTE_DONTWRAP wxHSCROLL +#define wxTE_LINEWRAP 0x0800 +#define wxTE_WORDWRAP 0x0000 // it's just == !wxHSCROLL + +// deprecated synonyms +#define wxPROCESS_ENTER wxTE_PROCESS_ENTER +#define wxPASSWORD wxTE_PASSWORD /* * wxComboBox style flags @@ -663,39 +1104,44 @@ enum wxOrientation #define wxCB_DROPDOWN 0x0020 /* - * wxRadioBox/wxRadioButton style flags + * wxRadioBox style flags */ +// should we number the items from left to right or from top to bottom in a 2d +// radiobox? +#define wxRA_LEFTTORIGHT 0x0001 +#define wxRA_TOPTOBOTTOM 0x0002 // New, more intuitive names to specify majorDim argument - -// Same as wxRA_HORIZONTAL -#define wxRA_SPECIFY_COLS 0x0001 -// Same as wxRA_VERTICAL -#define wxRA_SPECIFY_ROWS 0x0002 +#define wxRA_SPECIFY_COLS wxHORIZONTAL +#define wxRA_SPECIFY_ROWS wxVERTICAL // Old names for compatibility #define wxRA_HORIZONTAL wxHORIZONTAL #define wxRA_VERTICAL wxVERTICAL + +/* + * wxRadioButton style flag + */ #define wxRB_GROUP 0x0004 /* * wxGauge flags */ -#define wxGA_PROGRESSBAR 0x0004 #define wxGA_HORIZONTAL wxHORIZONTAL #define wxGA_VERTICAL wxVERTICAL -/* Windows only */ -#define wxGA_SMOOTH 0x0008 +#define wxGA_PROGRESSBAR 0x0010 +// Windows only +#define wxGA_SMOOTH 0x0020 /* * wxSlider flags */ -#define wxSL_HORIZONTAL wxHORIZONTAL -#define wxSL_VERTICAL wxVERTICAL +#define wxSL_HORIZONTAL wxHORIZONTAL // 4 +#define wxSL_VERTICAL wxVERTICAL // 8 // The next one is obsolete - use scroll events instead #define wxSL_NOTIFY_DRAG 0x0000 -#define wxSL_AUTOTICKS 0x0008 -// #define wxSL_MANUALTICKS 0x0010 +#define wxSL_TICKS 0x0010 +#define wxSL_AUTOTICKS wxSL_TICKS // we don't support manual ticks #define wxSL_LABELS 0x0020 #define wxSL_LEFT 0x0040 #define wxSL_TOP 0x0080 @@ -711,117 +1157,252 @@ enum wxOrientation #define wxSB_VERTICAL wxVERTICAL /* - * wxButton flags (Win32 only) + * wxSpinButton flags. + * Note that a wxSpinCtrl is sometimes defined as + * a wxTextCtrl, and so the flags must be different + * from wxTextCtrl's. */ -#define wxBU_AUTODRAW 0x0004 -#define wxBU_NOAUTODRAW 0x0000 +#define wxSP_HORIZONTAL wxHORIZONTAL // 4 +#define wxSP_VERTICAL wxVERTICAL // 8 +#define wxSP_ARROW_KEYS 0x1000 +#define wxSP_WRAP 0x2000 /* - * wxTreeCtrl flags + * wxSplitterWindow flags */ -#define wxTR_HAS_BUTTONS 0x0004 -#define wxTR_EDIT_LABELS 0x0008 -#define wxTR_LINES_AT_ROOT 0x0010 - -#define wxTR_SINGLE 0x0000 -#define wxTR_MULTIPLE 0x0020 -#define wxTR_EXTENDED 0x0040 -#define wxTR_HAS_VARIABLE_ROW_HIGHT 0x0080 +#define wxSP_NOBORDER 0x0000 +#define wxSP_NOSASH 0x0010 +#define wxSP_BORDER 0x0020 +#define wxSP_PERMIT_UNSPLIT 0x0040 +#define wxSP_LIVE_UPDATE 0x0080 +#define wxSP_3DSASH 0x0100 +#define wxSP_3DBORDER 0x0200 +#define wxSP_FULLSASH 0x0400 +#define wxSP_3D (wxSP_3DBORDER | wxSP_3DSASH) /* - * wxListCtrl flags + * wxNotebook flags */ -#define wxLC_ICON 0x0004 -#define wxLC_SMALL_ICON 0x0008 -#define wxLC_LIST 0x0010 -#define wxLC_REPORT 0x0020 -#define wxLC_ALIGN_TOP 0x0040 -#define wxLC_ALIGN_LEFT 0x0080 -#define wxLC_AUTOARRANGE 0x0100 -#define wxLC_USER_TEXT 0x0200 -#define wxLC_EDIT_LABELS 0x0400 -#define wxLC_NO_HEADER 0x0800 -#define wxLC_NO_SORT_HEADER 0x1000 -#define wxLC_SINGLE_SEL 0x2000 -#define wxLC_SORT_ASCENDING 0x4000 -#define wxLC_SORT_DESCENDING 0x8000 - -#define wxLC_MASK_TYPE (wxLC_ICON | wxLC_SMALL_ICON | wxLC_LIST | wxLC_REPORT) -#define wxLC_MASK_ALIGN (wxLC_ALIGN_TOP | wxLC_ALIGN_LEFT) -#define wxLC_MASK_SORT (wxLC_SORT_ASCENDING | wxLC_SORT_DESCENDING) - -// Omitted because (a) too much detail (b) not enough style flags -// #define wxLC_NO_SCROLL -// #define wxLC_NO_LABEL_WRAP -// #define wxLC_OWNERDRAW_FIXED -// #define wxLC_SHOW_SEL_ALWAYS +#define wxNB_FIXEDWIDTH 0x0010 +#define wxNB_TOP 0x0000 // default +#define wxNB_LEFT 0x0020 +#define wxNB_RIGHT 0x0040 +#define wxNB_BOTTOM 0x0080 +#define wxNB_MULTILINE 0x0100 /* - * wxSpinButton flags + * wxTabCtrl flags */ - -#define wxSP_VERTICAL 0x0004 -#define wxSP_HORIZONTAL 0x0008 -#define wxSP_ARROW_KEYS 0x0010 -#define wxSP_WRAP 0x0020 +#define wxTC_RIGHTJUSTIFY 0x0010 +#define wxTC_FIXEDWIDTH 0x0020 +#define wxTC_OWNERDRAW 0x0040 +#define wxTC_MULTILINE wxNB_MULTILINE /* - * wxSplitterWindow flags + * wxStatusBar95 flags */ - -#define wxSP_NOBORDER 0x0000 -#define wxSP_3D 0x0004 -#define wxSP_BORDER 0x0008 -#define wxSP_PERMIT_UNSPLIT 0x0010 -#define wxSP_LIVE_UPDATE 0x0020 +#define wxST_SIZEGRIP 0x0010 /* - * wxFrame extra flags + * wxStaticText flags */ - -// No title on taskbar -#define wxFRAME_TOOL_WINDOW 0x0004 +#define wxST_NO_AUTORESIZE 0x0001 /* - * wxTabCtrl flags + * wxStaticBitmap flags */ - -#define wxTC_MULTILINE 0x0000 -#define wxTC_RIGHTJUSTIFY 0x0004 -#define wxTC_FIXEDWIDTH 0x0008 -#define wxTC_OWNERDRAW 0x0010 +#define wxBI_EXPAND wxEXPAND /* - * wxNotebook flags + * wxStaticLine flags */ -#define wxNB_FIXEDWIDTH 0x0008 +#define wxLI_HORIZONTAL wxHORIZONTAL +#define wxLI_VERTICAL wxVERTICAL /* - * wxStatusBar95 flags + * wxProgressDialog flags */ - -#define wxST_SIZEGRIP 0x0002 +#define wxPD_CAN_ABORT 0x0001 +#define wxPD_APP_MODAL 0x0002 +#define wxPD_AUTO_HIDE 0x0004 +#define wxPD_ELAPSED_TIME 0x0008 +#define wxPD_ESTIMATED_TIME 0x0010 +// wxGA_SMOOTH = 0x0020 may also be used with wxProgressDialog +// NO!!! This is wxDIALOG_MODAL and will cause the progress dialog to +// be modal. No progress will then be made at all. +#define wxPD_REMAINING_TIME 0x0040 /* - * wxStaticLine flags + * wxHtmlWindow flags */ -#define wxLI_HORIZONTAL wxHORIZONTAL -#define wxLI_VERTICAL wxVERTICAL +#define wxHW_SCROLLBAR_NEVER 0x0002 +#define wxHW_SCROLLBAR_AUTO 0x0004 /* - * wxProgressDialog flags + * wxCalendarCtrl flags */ -#define wxPD_CAN_ABORT 0x0001 -#define wxPD_APP_MODAL 0x0002 -#define wxPD_AUTO_HIDE 0x0004 -#define wxPD_ELAPSED_TIME 0x0008 -#define wxPD_ESTIMATED_TIME 0x0010 -#define wxPD_REMAINING_TIME 0x0020 +#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 /* - * GDI descriptions + * extended dialog specifiers. these values are stored in a different + * flag and thus do not overlap with other style flags. note that these + * values do not correspond to the return values of the dialogs (for + * those values, look at the wxID_XXX defines). */ +// wxCENTRE already defined as 0x00000001 +#define wxOK 0x00000004 +#define wxYES_NO 0x00000008 +#define wxCANCEL 0x00000010 +#define wxYES 0x00000020 +#define wxNO 0x00000040 +#define wxNO_DEFAULT 0x00000080 +#define wxYES_DEFAULT 0x00000000 // has no effect + +#define wxICON_EXCLAMATION 0x00000100 +#define wxICON_HAND 0x00000200 +#define wxICON_WARNING wxICON_EXCLAMATION +#define wxICON_ERROR wxICON_HAND +#define wxICON_QUESTION 0x00000400 +#define wxICON_INFORMATION 0x00000800 +#define wxICON_STOP wxICON_HAND +#define wxICON_ASTERISK wxICON_INFORMATION +#define wxICON_MASK (0x00000100|0x00000200|0x00000400|0x00000800) + +#define wxFORWARD 0x00001000 +#define wxBACKWARD 0x00002000 +#define wxRESET 0x00004000 +#define wxHELP 0x00008000 +#define wxMORE 0x00010000 +#define wxSETUP 0x00020000 + +// ---------------------------------------------------------------------------- +// standard IDs +// ---------------------------------------------------------------------------- + +// id for a separator line in the menu (invalid for normal item) +#define wxID_SEPARATOR (-1) + +// Standard menu IDs +#define wxID_LOWEST 4999 + +#define wxID_OPEN 5000 +#define wxID_CLOSE 5001 +#define wxID_NEW 5002 +#define wxID_SAVE 5003 +#define wxID_SAVEAS 5004 +#define wxID_REVERT 5005 +#define wxID_EXIT 5006 +#define wxID_UNDO 5007 +#define wxID_REDO 5008 +#define wxID_HELP 5009 +#define wxID_PRINT 5010 +#define wxID_PRINT_SETUP 5011 +#define wxID_PREVIEW 5012 +#define wxID_ABOUT 5013 +#define wxID_HELP_CONTENTS 5014 +#define wxID_HELP_COMMANDS 5015 +#define wxID_HELP_PROCEDURES 5016 +#define wxID_HELP_CONTEXT 5017 + +#define wxID_CUT 5030 +#define wxID_COPY 5031 +#define wxID_PASTE 5032 +#define wxID_CLEAR 5033 +#define wxID_FIND 5034 +#define wxID_DUPLICATE 5035 +#define wxID_SELECTALL 5036 + +#define wxID_FILE1 5050 +#define wxID_FILE2 5051 +#define wxID_FILE3 5052 +#define wxID_FILE4 5053 +#define wxID_FILE5 5054 +#define wxID_FILE6 5055 +#define wxID_FILE7 5056 +#define wxID_FILE8 5057 +#define wxID_FILE9 5058 + +// Standard button IDs +#define wxID_OK 5100 +#define wxID_CANCEL 5101 +#define wxID_APPLY 5102 +#define wxID_YES 5103 +#define wxID_NO 5104 +#define wxID_STATIC 5105 +#define wxID_FORWARD 5106 +#define wxID_BACKWARD 5107 +#define wxID_DEFAULT 5108 +#define wxID_MORE 5109 +#define wxID_SETUP 5110 +#define wxID_RESET 5111 +#define wxID_CONTEXT_HELP 5112 +#define wxID_YESTOALL 5113 +#define wxID_NOTOALL 5114 +#define wxID_ABORT 5115 +#define wxID_RETRY 5116 +#define wxID_IGNORE 5117 + +// IDs used by generic file dialog (11 consecutive starting from this value) +#define wxID_FILEDLGG 5900 +#define wxID_HIGHEST 5999 + +// ---------------------------------------------------------------------------- +// constants +// ---------------------------------------------------------------------------- + +// hit test results +enum wxHitTest +{ + wxHT_NOWHERE, + + // scrollbar + wxHT_SCROLLBAR_FIRST = wxHT_NOWHERE, + wxHT_SCROLLBAR_ARROW_LINE_1, // left or upper arrow to scroll by line + wxHT_SCROLLBAR_ARROW_LINE_2, // right or down + wxHT_SCROLLBAR_ARROW_PAGE_1, // left or upper arrow to scroll by page + wxHT_SCROLLBAR_ARROW_PAGE_2, // right or down + wxHT_SCROLLBAR_THUMB, // on the thumb + wxHT_SCROLLBAR_BAR_1, // bar to the left/above the thumb + wxHT_SCROLLBAR_BAR_2, // bar to the right/below the thumb + wxHT_SCROLLBAR_LAST, + + // window + wxHT_WINDOW_OUTSIDE, // not in this window at all + wxHT_WINDOW_INSIDE, // in the client area + wxHT_WINDOW_VERT_SCROLLBAR, // on the vertical scrollbar + wxHT_WINDOW_HORZ_SCROLLBAR, // on the horizontal scrollbar + wxHT_WINDOW_CORNER, // on the corner between 2 scrollbars + + wxHT_MAX +}; + +// ---------------------------------------------------------------------------- +// Possible SetSize flags +// ---------------------------------------------------------------------------- + +// Use internally-calculated width if -1 +#define wxSIZE_AUTO_WIDTH 0x0001 +// Use internally-calculated height if -1 +#define wxSIZE_AUTO_HEIGHT 0x0002 +// Use internally-calculated width and height if each is -1 +#define wxSIZE_AUTO (wxSIZE_AUTO_WIDTH|wxSIZE_AUTO_HEIGHT) +// Ignore missing (-1) dimensions (use existing). +// For readability only: test for wxSIZE_AUTO_WIDTH/HEIGHT in code. +#define wxSIZE_USE_EXISTING 0x0000 +// Allow -1 as a valid position +#define wxSIZE_ALLOW_MINUS_ONE 0x0004 +// Don't do parent client adjustments (for implementation only) +#define wxSIZE_NO_ADJUSTMENTS 0x0008 + +// ---------------------------------------------------------------------------- +// GDI descriptions +// ---------------------------------------------------------------------------- + enum { // Text font families wxDEFAULT = 70, @@ -855,6 +1436,8 @@ enum { // Brush & Pen Stippling. Note that a stippled pen cannot be dashed!! // Note also that stippling a Pen IS meaningfull, because a Line is + wxSTIPPLE_MASK_OPAQUE, //mask is used for blitting monochrome using text fore and back ground colors + wxSTIPPLE_MASK, //mask is used for masking areas in the stipple bitmap (TO DO) // drawn with a Pen, and without any Brush -- and it can be stippled. wxSTIPPLE = 110, wxBDIAGONAL_HATCH, @@ -878,98 +1461,61 @@ enum { // Logical ops typedef enum { - wxCLEAR, // 0 - wxXOR, // src XOR dst - wxINVERT, // NOT dst - wxOR_REVERSE, // src OR (NOT dst) - wxAND_REVERSE,// src AND (NOT dst) - wxCOPY, // src - wxAND, // src AND dst - wxAND_INVERT, // (NOT src) AND dst - wxNO_OP, // dst - wxNOR, // (NOT src) AND (NOT dst) - wxEQUIV, // (NOT src) XOR dst - wxSRC_INVERT, // (NOT src) - wxOR_INVERT, // (NOT src) OR dst - wxNAND, // (NOT src) OR (NOT dst) - wxOR, // src OR dst - wxSET, // 1 - wxSRC_OR, // source _bitmap_ OR destination - wxSRC_AND // source _bitmap_ AND destination + wxCLEAR, wxROP_BLACK = wxCLEAR, wxBLIT_BLACKNESS = wxCLEAR, // 0 + wxXOR, wxROP_XORPEN = wxXOR, wxBLIT_SRCINVERT = wxXOR, // src XOR dst + wxINVERT, wxROP_NOT = wxINVERT, wxBLIT_DSTINVERT = wxINVERT, // NOT dst + wxOR_REVERSE, wxROP_MERGEPENNOT = wxOR_REVERSE, wxBLIT_00DD0228 = wxOR_REVERSE, // src OR (NOT dst) + wxAND_REVERSE, wxROP_MASKPENNOT = wxAND_REVERSE, wxBLIT_SRCERASE = wxAND_REVERSE, // src AND (NOT dst) + wxCOPY, wxROP_COPYPEN = wxCOPY, wxBLIT_SRCCOPY = wxCOPY, // src + wxAND, wxROP_MASKPEN = wxAND, wxBLIT_SRCAND = wxAND, // src AND dst + wxAND_INVERT, wxROP_MASKNOTPEN = wxAND_INVERT, wxBLIT_00220326 = wxAND_INVERT, // (NOT src) AND dst + wxNO_OP, wxROP_NOP = wxNO_OP, wxBLIT_00AA0029 = wxNO_OP, // dst + wxNOR, wxROP_NOTMERGEPEN = wxNOR, wxBLIT_NOTSRCERASE = wxNOR, // (NOT src) AND (NOT dst) + wxEQUIV, wxROP_NOTXORPEN = wxEQUIV, wxBLIT_00990066 = wxEQUIV, // (NOT src) XOR dst + wxSRC_INVERT, wxROP_NOTCOPYPEN = wxSRC_INVERT, wxBLIT_NOTSCRCOPY = wxSRC_INVERT, // (NOT src) + wxOR_INVERT, wxROP_MERGENOTPEN = wxOR_INVERT, wxBLIT_MERGEPAINT = wxOR_INVERT, // (NOT src) OR dst + wxNAND, wxROP_NOTMASKPEN = wxNAND, wxBLIT_007700E6 = wxNAND, // (NOT src) OR (NOT dst) + wxOR, wxROP_MERGEPEN = wxOR, wxBLIT_SRCPAINT = wxOR, // src OR dst + wxSET, wxROP_WHITE = wxSET, wxBLIT_WHITENESS = wxSET // 1 } form_ops_t; -// Flood styles +/* Flood styles */ #define wxFLOOD_SURFACE 1 #define wxFLOOD_BORDER 2 -// Polygon filling mode +/* Polygon filling mode */ #define wxODDEVEN_RULE 1 #define wxWINDING_RULE 2 -// ToolPanel in wxFrame +/* ToolPanel in wxFrame */ #define wxTOOL_TOP 1 #define wxTOOL_BOTTOM 2 #define wxTOOL_LEFT 3 #define wxTOOL_RIGHT 4 -// Dialog specifiers/return values - -#define wxOK 0x0001 -#define wxYES_NO 0x0002 -#define wxCANCEL 0x0004 -#define wxYES 0x0008 -#define wxNO 0x0010 -#define wxNO_DEFAULT 0x0020 -#define wxYES_DEFAULT 0x0000 // has no effect -#define wxICON_EXCLAMATION 0x0040 -#define wxICON_HAND 0x0080 -#define wxICON_QUESTION 0x0100 -#define wxICON_INFORMATION 0x0200 - -#define wxICON_STOP wxICON_HAND -#define wxICON_ASTERISK wxICON_INFORMATION -#define wxICON_MASK (0x0020|0x0040|0x0080|0x0100) - -#define wxCENTRE 0x0200 -#define wxCENTER wxCENTRE - -// Possible SetSize flags - -// Use internally-calculated width if -1 -#define wxSIZE_AUTO_WIDTH 0x0001 -// Use internally-calculated height if -1 -#define wxSIZE_AUTO_HEIGHT 0x0002 -// Use internally-calculated width and height if each is -1 -#define wxSIZE_AUTO (wxSIZE_AUTO_WIDTH|wxSIZE_AUTO_HEIGHT) -// Ignore missing (-1) dimensions (use existing). -// For readability only: test for wxSIZE_AUTO_WIDTH/HEIGHT in code. -#define wxSIZE_USE_EXISTING 0x0000 -// Allow -1 as a valid position -#define wxSIZE_ALLOW_MINUS_ONE 0x0004 -// Don't do parent client adjustments (for implementation only) -#define wxSIZE_NO_ADJUSTMENTS 0x0008 - +// the values of the format constants should be the same as correspondign +// CF_XXX constants in Windows API enum wxDataFormatId { - wxDF_INVALID = 0, - wxDF_TEXT = 1, /* CF_TEXT */ - wxDF_BITMAP = 2, /* CF_BITMAP */ - wxDF_METAFILE = 3, /* CF_METAFILEPICT */ - wxDF_SYLK = 4, - wxDF_DIF = 5, - wxDF_TIFF = 6, - wxDF_OEMTEXT = 7, /* CF_OEMTEXT */ - wxDF_DIB = 8, /* CF_DIB */ - wxDF_PALETTE = 9, - wxDF_PENDATA = 10, - wxDF_RIFF = 11, - wxDF_WAVE = 12, - wxDF_UNICODETEXT = 13, - wxDF_ENHMETAFILE = 14, - wxDF_FILENAME = 15, /* CF_HDROP */ - wxDF_LOCALE = 16, - wxDF_PRIVATE = 20, - wxDF_MAX + wxDF_INVALID = 0, + wxDF_TEXT = 1, /* CF_TEXT */ + wxDF_BITMAP = 2, /* CF_BITMAP */ + wxDF_METAFILE = 3, /* CF_METAFILEPICT */ + wxDF_SYLK = 4, + wxDF_DIF = 5, + wxDF_TIFF = 6, + wxDF_OEMTEXT = 7, /* CF_OEMTEXT */ + wxDF_DIB = 8, /* CF_DIB */ + wxDF_PALETTE = 9, + wxDF_PENDATA = 10, + wxDF_RIFF = 11, + wxDF_WAVE = 12, + wxDF_UNICODETEXT = 13, + wxDF_ENHMETAFILE = 14, + wxDF_FILENAME = 15, /* CF_HDROP */ + wxDF_LOCALE = 16, + wxDF_PRIVATE = 20, + wxDF_MAX }; /* Virtual keycodes */ @@ -1083,78 +1629,6 @@ enum wxKeyCode WXK_NUMPAD_DIVIDE }; -/* OS mnemonics -- Identify the running OS (useful for Windows) - * [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 - wxGTK, // GTK - 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 -}; - -/* Standard menu identifiers */ -#define wxID_LOWEST 4999 - -#define wxID_OPEN 5000 -#define wxID_CLOSE 5001 -#define wxID_NEW 5002 -#define wxID_SAVE 5003 -#define wxID_SAVEAS 5004 -#define wxID_REVERT 5005 -#define wxID_EXIT 5006 -#define wxID_UNDO 5007 -#define wxID_REDO 5008 -#define wxID_HELP 5009 -#define wxID_PRINT 5010 -#define wxID_PRINT_SETUP 5011 -#define wxID_PREVIEW 5012 -#define wxID_ABOUT 5013 -#define wxID_HELP_CONTENTS 5014 -#define wxID_HELP_COMMANDS 5015 -#define wxID_HELP_PROCEDURES 5016 -#define wxID_HELP_CONTEXT 5017 - -#define wxID_CUT 5030 -#define wxID_COPY 5031 -#define wxID_PASTE 5032 -#define wxID_CLEAR 5033 -#define wxID_FIND 5034 -#define wxID_DUPLICATE 5035 -#define wxID_SELECTALL 5036 - -#define wxID_FILE1 5050 -#define wxID_FILE2 5051 -#define wxID_FILE3 5052 -#define wxID_FILE4 5053 -#define wxID_FILE5 5054 -#define wxID_FILE6 5055 -#define wxID_FILE7 5056 -#define wxID_FILE8 5057 -#define wxID_FILE9 5058 - -#define wxID_OK 5100 -#define wxID_CANCEL 5101 -#define wxID_APPLY 5102 -#define wxID_YES 5103 -#define wxID_NO 5104 -#define wxID_STATIC 5105 - -#define wxID_HIGHEST 5999 - // Mapping modes (as per Windows) #define wxMM_TEXT 1 #define wxMM_LOMETRIC 2 @@ -1279,9 +1753,84 @@ typedef enum { wxPRINT_MODE_PRINTER = 3 // Send to printer } wxPrintMode; +// ---------------------------------------------------------------------------- +// miscellaneous +// ---------------------------------------------------------------------------- -#ifdef __WXMSW__ -// Stand-ins for Windows types, to avoid #including all of windows.h +// define this macro if font handling is done using the X font names +#if defined(__WXGTK__) || defined(__X__) + #define _WX_X_FONTLIKE +#endif + +// macro to specify "All Files" on different platforms +#if defined(__WXMSW__) +# define wxALL_FILES_PATTERN "*.*" +# define wxALL_FILES gettext_noop("All files (*.*)|*.*") +#else +# define wxALL_FILES_PATTERN "*" +# define wxALL_FILES gettext_noop("All files (*)|*") +#endif + +// --------------------------------------------------------------------------- +// macros that enable wxWindows apps to be compiled in absence of the +// sytem headers, although some platform specific types are used in the +// platform specific (implementation) parts of the headers +// --------------------------------------------------------------------------- + +#ifdef __WXMAC__ + +typedef WindowPtr WXHWND; +typedef Handle WXHANDLE; +typedef CIconHandle WXHICON; +//typedef unsigned long WXHFONT; +typedef MenuHandle WXHMENU; +//typedef unsigned long WXHPEN; +//typedef unsigned long WXHBRUSH; +//typedef unsigned long WXHPALETTE; +typedef CursHandle WXHCURSOR; +typedef RgnHandle WXHRGN; +//typedef unsigned long WXHACCEL; +//typedef unsigned long WXHINSTANCE; +typedef GWorldPtr WXHBITMAP; +//typedef unsigned long WXHIMAGELIST; +//typedef unsigned long WXHGLOBAL; +typedef GrafPtr WXHDC; +typedef unsigned int WXUINT; +typedef unsigned long WXDWORD; +typedef unsigned short WXWORD; +//typedef unsigned int WXWPARAM; +//typedef long WXLPARAM; +typedef RGBColor WXCOLORREF; +//typedef void * WXRGNDATA; +//typedef void * WXMSG; +//typedef unsigned long WXHCONV; +//typedef unsigned long WXHKEY; +//typedef void * WXDRAWITEMSTRUCT; +//typedef void * WXMEASUREITEMSTRUCT; +//typedef void * WXLPCREATESTRUCT; +typedef int (*WXFARPROC)(); + +typedef WindowPtr WXWindow; +typedef ControlHandle WXWidget; + +#endif + +#if defined(__WXMSW__) || defined(__WXPM__) + +// the keywords needed for WinMain() declaration +#ifdef __WIN16__ +# ifdef __VISUALC__ +# define WXFAR __far +# else +# define WXFAR _far +# endif +#else // Win32 +# ifndef WXFAR +# define WXFAR +# endif +#endif // Win16/32 + +// Stand-ins for Windows types or OS/2, to avoid #including all of windows.h or os2.h typedef unsigned long WXHWND; typedef unsigned long WXHANDLE; typedef unsigned long WXHICON; @@ -1293,7 +1842,7 @@ typedef unsigned long WXHPALETTE; typedef unsigned long WXHCURSOR; typedef unsigned long WXHRGN; typedef unsigned long WXHACCEL; -typedef unsigned long WXHINSTANCE; +typedef void WXFAR * WXHINSTANCE; typedef unsigned long WXHBITMAP; typedef unsigned long WXHIMAGELIST; typedef unsigned long WXHGLOBAL; @@ -1301,8 +1850,17 @@ typedef unsigned long WXHDC; typedef unsigned int WXUINT; typedef unsigned long WXDWORD; typedef unsigned short WXWORD; +#ifdef __WXMSW__ typedef unsigned int WXWPARAM; typedef long WXLPARAM; +#else +# define WXWPARAM MPARAM +# define WXLPARAM MPARAM +# define RECT RECTL +# define LOGFONT FATTRS +# define LOWORD SHORT1FROMMP +# define HIWORD SHORT2FROMMP +#endif // __WXMSW__ typedef unsigned long WXCOLORREF; typedef void * WXRGNDATA; typedef void * WXMSG; @@ -1314,16 +1872,80 @@ typedef void * WXDRAWITEMSTRUCT; typedef void * WXMEASUREITEMSTRUCT; typedef void * WXLPCREATESTRUCT; -#if defined(__GNUWIN32__) || defined(__WXWINE__) +#if defined(__WXPM__) +typedef unsigned long WXMPARAM; +typedef unsigned long WXMSGID; +typedef void* WXRESULT; +//typedef int (*WXFARPROC)(); +// some windows handles not defined by PM +typedef unsigned long HANDLE; +typedef unsigned long HICON; +typedef unsigned long HFONT; +typedef unsigned long HMENU; +typedef unsigned long HPEN; +typedef unsigned long HBRUSH; +typedef unsigned long HPALETTE; +typedef unsigned long HCURSOR; +typedef unsigned long HINSTANCE; +typedef unsigned long HIMAGELIST; +typedef unsigned long HGLOBAL; +typedef unsigned long DWORD; +typedef unsigned short WORD; + +// 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) (b) | ((WORD) (g) << 8)) | (((DWORD)(BYTE)(r)) << 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__) || defined(__WXMICROWIN__) typedef int (*WXFARPROC)(); #elif defined(__WIN32__) typedef int (__stdcall *WXFARPROC)(); +#elif defined(__WXPM__) +# if defined(__VISAGECPP__) && (__IBMCPP__ < 400 || __IBMC__ < 400 ) + // VA 3.0 for some reason needs base data types when typedefing a proc proto??? + typedef void* (_System *WXFARPROC)(unsigned long, unsigned long, void*, void*); +# else + typedef WXRESULT (_System *WXFARPROC)(WXHWND, WXMSGID, WXWPARAM, WXLPARAM); +# endif #else typedef int (*WXFARPROC)(); #endif typedef WXHWND WXWidget; -#endif // MSW + +#if defined(__BORLANDC__) && !defined(__WIN32__) +# ifndef LPTSTR +# define LPTSTR LPSTR +# endif +# ifndef LPCTSTR +# define LPCTSTR LPSTR +# endif +#endif + +#endif // MSW or OS2 #ifdef __WXMOTIF__ /* Stand-ins for X/Xt/Motif types */ @@ -1340,7 +1962,6 @@ typedef void* WXGC; typedef void* WXRegion; typedef void* WXFont; typedef void* WXImage; -typedef void* WXCursor; typedef void* WXFontList; typedef unsigned long Atom; /* this might fail on a few architectures */ @@ -1349,10 +1970,13 @@ typedef unsigned long Atom; /* this might fail on a few architectures */ #ifdef __WXGTK__ /* Stand-ins for GLIB types */ +typedef char gchar; +typedef signed char gint8; typedef int gint; typedef unsigned guint; typedef unsigned long gulong; typedef void* gpointer; +typedef struct _GSList GSList; /* Stand-ins for GDK types */ typedef gulong GdkAtom; @@ -1360,12 +1984,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 __WXGTK20__ + 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; @@ -1377,12 +2011,28 @@ typedef struct _GtkTooltips GtkTooltips; typedef struct _GtkNotebook GtkNotebook; typedef struct _GtkNotebookPage GtkNotebookPage; typedef struct _GtkAccelGroup GtkAccelGroup; -typedef struct _GtkItemFactory GtkItemFactory; -typedef struct _GtkSelectionData GtkSelectionData; +typedef struct _GtkItemFactory GtkItemFactory; +typedef struct _GtkSelectionData GtkSelectionData; typedef GtkWidget *WXWidget; + +#ifndef __WXGTK20__ +#define GTK_OBJECT_GET_CLASS(object) (GTK_OBJECT(object)->klass) +#define GTK_CLASS_TYPE(klass) ((klass)->type) +#endif + +#ifdef __WXGTK20__ +/* Stand-ins for Pango types */ +typedef struct _PangoContext PangoContext; +typedef struct _PangoLayout PangoLayout; +typedef struct _PangoFontDescription PangoFontDescription; +#endif #endif // GTK +#ifdef __WXMGL__ +typedef struct window_t *WXWidget; +#endif // MGL + // This is required because of clashing macros in windows.h, which may be // included before or after wxWindows classes, and therefore must be // disabled here before any significant wxWindows headers are included. @@ -1424,7 +2074,7 @@ typedef GtkWidget *WXWidget; #define DECLARE_NO_COPY_CLASS(classname) \ private: \ classname(const classname&); \ - classname& operator=(const classname&) + classname& operator=(const classname&); #endif // _WX_DEFS_H_