// compiler and OS identification
// ----------------------------------------------------------------------------
-// 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(__hpux) || defined(sun) || defined(__SUN__) || defined(_AIX) || \
- defined(__EMX__) || defined(__VMS) || defined(__BEOS__)
-
- #define __UNIX_LIKE__
-
- // Helps SGI compilation, apparently
- #ifdef __SGI__
- #ifdef __GNUG__
- #define __need_wchar_t
- #else // !gcc
- // Note I use the term __SGI_CC__ for both cc and CC, its not a good
- // idea to mix gcc and cc/CC, the name mangling is different
- #define __SGI_CC__
- #endif // gcc/!gcc
- #endif // SGI
-
- #if defined(sun) || defined(__SUN__)
- #ifndef __GNUG__
- #ifndef __SUNCC__
- #define __SUNCC__
- #endif // Sun CC
- #endif
- #endif // Sun
-
-#elif defined(applec) || defined(THINK_C) || ( defined( __MWERKS__ ) && !defined(__INTEL__) )
- // MacOS
-#elif defined(__OS2__)
- #if defined(__IBMCPP__)
- #define __VISAGEAVER__ __IBMCPP__
- #endif
- #ifndef __WXOS2__
- #define __WXOS2__
- #endif
- #ifndef __WXPM__
- #define __WXPM__
- #endif
+#include "wx/platform.h"
- // Place other OS/2 compiler environment defines here
- #define LINKAGEMODE _Optlink
-#else // Windows
- #ifndef __WINDOWS__
- #define __WINDOWS__
- #endif // Windows
-
- // 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__)
- #define __VISUALC__ _MSC_VER
- #elif defined(__BCPLUSPLUS__) && !defined(__BORLANDC__)
- #define __BORLANDC__
- #elif defined(__WATCOMC__)
- //#define __WATCOMC__
- #elif defined(__SC__)
- #define __SYMANTECC__
- #endif // compiler
-#endif // OS
-
-// LINKAGEMODE mode is empty for everyting except OS/2
-#ifndef LINKAGEMODE
- #define LINKAGEMODE
-#endif // LINKAGEMODE
+// 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(__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
// suppress some Visual C++ warnings
#ifdef __VISUALC__
# 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
-# pragma warning(disable:4699) // Using precompiled header
+# 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
#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
# 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
-#ifdef __DECCXX
-#ifndef __VMS
-# define __cplusplus
-#endif
-#endif // __DECCXX
-
-// Resolves linking problems under HP-UX
-#if defined(__HPUX__) && defined(__GNUG__)
- #define va_list __gnuc_va_list
-#endif // HP-UX
-
-// Mingw32 gcc-2.95 uses new windows headers which are more ms-like
-// we are setting this define because of the complex check
-// using NORLANDER as Cygwin may follow. (header author is Anders Norlander)
-#if defined(__MINGW32__) && ((__GNUC__>2) ||((__GNUC__==2) && (__GNUC_MINOR__>=95)))
-#ifndef wxUSE_NORLANDER_HEADERS
-# define wxUSE_NORLANDER_HEADERS 1
-#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
-//
-#if defined(__HPUX__) && !defined(__WXGTK__)
- #ifndef __WXMOTIF__
- #define __WXMOTIF__
- #endif // __WXMOTIF__
-#endif
-
-#if defined(__WXMOTIF__)
- #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(__WXPM__) && !defined(__WXMAC__) && !defined(__X__) && \
- !defined(__WXQT__) && !defined(__WXSTUBS__) && wxUSE_GUI
- #error "No Target! Use -D[__WXMOTIF__|__WXGTK__|__WXMSW__|__WXMAC__|__WXQT__|__WXPM__|__WXSTUBS__]"
-#endif
-
// ----------------------------------------------------------------------------
-// wxWindows options
+// wxWindows version and compatibility defines
// ----------------------------------------------------------------------------
-#include <stddef.h>
-
-#include "wx/setup.h"
-
-// just in case they were defined in setup.h
-#undef PACKAGE
-#undef VERSION
-
-// this has to be done after including setup.h which might
-// define __HPUX__ 1 itself
-#if defined(__hpux) && !defined(__HPUX__)
- #define __HPUX__
-#endif // HP-UX
-
-// 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
-
#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
// ============================================================================
+// ----------------------------------------------------------------------------
+// compiler defects workarounds
+// ----------------------------------------------------------------------------
+
+#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 (newer versions do it for all files, though, and
+ don't allow it to be redefined)
+ */
+#ifdef __DECCXX
+ #if !defined(__VMS) && !defined(__cplusplus)
+ #define __cplusplus
+ #endif
+#endif /* __DECCXX */
+
+// Resolves linking problems under HP-UX when compiling with gcc/g++
+#if defined(__HPUX__) && defined(__GNUG__)
+ #define va_list __gnuc_va_list
+#endif // HP-UX
+
// ----------------------------------------------------------------------------
// check for native bool type and TRUE/FALSE constants
// ----------------------------------------------------------------------------
#endif // compilers
#endif // HAVE_BOOL
-#if !defined(HAVE_BOOL) && !defined(bool)
+#if !defined(HAVE_BOOL) && !defined(bool) && !defined(VMS)
// 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
-#ifndef VMS
typedef unsigned int bool;
-#endif
#endif // bool
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
+// ----------------------------------------------------------------------------
+// other feature tests
+// ----------------------------------------------------------------------------
+
+ // Every ride down a slippery slope begins with a single step..
+ //
+ // Yes, using nested classes is indeed against our coding standards in
+ // general, but there are places where you can use them to advantage
+ // without totally breaking ports that cannot use them. If you do, then
+ // wrap it in this guard, but such cases should still be relatively rare.
+
+#ifndef __WIN16__
+#define wxUSE_NESTED_CLASSES 1
+#else
+#define wxUSE_NESTED_CLASSES 0
#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(__WIN32__)
- #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
+
+// LINKAGEMODE mode is empty for everyting except OS/2
+#ifndef LINKAGEMODE
+ #define LINKAGEMODE
+#endif // LINKAGEMODE
+
+// 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
// ----------------------------------------------------------------------------
#if defined(__WXMSW__)
-
-// _declspec works in BC++ 5 and later, as well as VC++
-#if defined(__VISUALC__) || defined(__BORLANDC__)
-
-# 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
-
+ // __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__)
+ #define WXEXPORT __declspec(dllexport)
+ #define WXIMPORT __declspec(dllimport)
+ #else // compiler doesn't support __declspec()
+ #define WXEXPORT
+ #define WXIMPORT
+ #endif
#elif defined(__WXPM__)
+ #if defined (__WATCOMC__)
+ #define WXEXPORT __declspec(dllexport)
+ // __declspec(dllimport) prepends __imp to imported symbols. We do NOT
+ // want that!
+ #define WXIMPORT
+ #elif (!(defined(__VISAGECPP__) && (__IBMCPP__ < 400 || __IBMC__ < 400 )))
+ #define WXEXPORT _Export
+ #define WXIMPORT _Export
+ #endif
+#endif
-# 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
+// for other platforms/compilers we don't anything
+#ifndef WXEXPORT
+ #define WXEXPORT
+ #define WXIMPORT
#endif
-#else // !Windows
-# define WXDLLEXPORT
-# define WXDLLEXPORT_DATA(type) type
-# define WXDLLEXPORT_CTORFN
-#endif // Win/!Win
+// WXDLLEXPORT maps to export declaration when building the DLL, to import
+// declaration if using it or to nothing at all if we don't use wxWin DLL
+#ifdef WXMAKINGDLL
+ #define WXDLLEXPORT WXEXPORT
+ #define WXDLLEXPORT_DATA(type) WXEXPORT type
+ #define WXDLLEXPORT_CTORFN
+#elif defined(WXUSINGDLL)
+ #define WXDLLEXPORT WXIMPORT
+ #define WXDLLEXPORT_DATA(type) WXIMPORT type
+ #define WXDLLEXPORT_CTORFN
+#else // not making nor using DLL
+ #define WXDLLEXPORT
+ #define WXDLLEXPORT_DATA(type) type
+ #define WXDLLEXPORT_CTORFN
+#endif
// For ostream, istream ofstream
#if defined(__BORLANDC__) && defined( _RTLDLL )
# 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 <stddef.h>
+
+// 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
// ----------------------------------------------------------------------------
// where should i put this? we need to make sure of this as it breaks
// the <iostream> 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)
wxMOTIF_X, // OSF Motif 1.x.x
wxCOSE_X, // OSF Common Desktop Environment
wxNEXTSTEP, // NeXTStep
- wxMACINTOSH, // Apple System 7 and 8
+ wxMAC, // Apple Mac OS 8/9/X with Mac paths
+ wxMAC_DARWIN, // Apple Mac OS X with Unix paths
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
wxMGL_X, // MGL on X
wxMGL_WIN32, // MGL on Win32
wxMGL_OS2, // MGL on OS/2
- wxWINDOWS_OS2 // Native OS/2 PM
+ wxMGL_DOS, // MGL on MS-DOS
+ wxWINDOWS_OS2, // Native OS/2 PM
+ wxUNIX // wxBase under Unix
};
// ----------------------------------------------------------------------------
#define wxInt8 char signed
#define wxUint8 char unsigned
-#ifdef __WIN16__
+#if defined(__WIN16__) || (defined(SIZEOF_INT) && (SIZEOF_INT == 2))
#define wxInt16 int signed
#define wxUint16 int unsigned
#define wxInt32 long signed
#define wxUint32 long unsigned
-#endif
-
-#ifdef __WIN32__
-#define wxInt16 short signed
-#define wxUint16 short unsigned
-#define wxInt32 int signed
-#define wxUint32 int unsigned
-#endif
-
-#ifdef __WXMAC__
-#define wxInt16 short signed
-#define wxUint16 short unsigned
-#define wxInt32 int signed
-#define wxUint32 int unsigned
-#endif
-
-#ifdef __WXOS2__
+#else
#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)
- /* well, this shouldn't happen... */
- #define wxInt16 short signed
- #define wxUint16 short unsigned
- #define wxInt32 int signed
- #define wxUint32 int unsigned
- #else
- #define wxInt16 short signed
- #define wxUint16 short unsigned
- #define wxInt32 int signed
- #define wxUint32 int unsigned
- #endif
+#if defined(SIZEOF_LONG) && (SIZEOF_LONG == 8)
+#define wxInt64 long signed
+#define wxUint64 long unsigned
+#elif defined(SIZEOF_LONG_LONG) && (SIZEOF_LONG_LONG == 8)
+#define wxInt64 long long signed
+#define wxUint64 long long unsigned
+#else // FIXME: what else can we do here aside from implementing wxULongLong
+#define wxInt64 wxLongLong
+#define wxUint64 wxULongLong
#endif
#define wxByte wxUint8
typedef float wxFloat32 ;
#if defined( __WXMAC__ ) && defined (__MWERKS__)
- typedef short double wxFloat64;
+ typedef short double wxFloat64;
#else
- typedef double wxFloat64;
+ typedef double wxFloat64;
#endif
#if defined( __WXMAC__ ) && !defined( __POWERPC__ )
#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 ) ) ;}
+ 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 wxUINT16_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 wxUINT32_SWAP_ALWAYS(wxInt32 value)
- = { 0xE158, 0x4840, 0xE158 };
+ #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
#endif
// machine specific byte swapping
+#if defined(SIZEOF_LONG) && (SIZEOF_LONG == 8)
+#define wxUINT64_SWAP_ALWAYS(val) \
+ ((wxUint64) ( \
+ (((wxUint64) (val) & (wxUint64) 0x00000000000000ffUL) << 56) | \
+ (((wxUint64) (val) & (wxUint64) 0x000000000000ff00UL) << 40) | \
+ (((wxUint64) (val) & (wxUint64) 0x0000000000ff0000UL) << 24) | \
+ (((wxUint64) (val) & (wxUint64) 0x00000000ff000000UL) << 8) | \
+ (((wxUint64) (val) & (wxUint64) 0x000000ff00000000UL) >> 8) | \
+ (((wxUint64) (val) & (wxUint64) 0x0000ff0000000000UL) >> 24) | \
+ (((wxUint64) (val) & (wxUint64) 0x00ff000000000000UL) >> 40) | \
+ (((wxUint64) (val) & (wxUint64) 0xff00000000000000UL) >> 56)))
+
+#define wxINT64_SWAP_ALWAYS(val) \
+ ((wxInt64) ( \
+ (((wxUint64) (val) & (wxUint64) 0x00000000000000ffUL) << 56) | \
+ (((wxUint64) (val) & (wxUint64) 0x000000000000ff00UL) << 40) | \
+ (((wxUint64) (val) & (wxUint64) 0x0000000000ff0000UL) << 24) | \
+ (((wxUint64) (val) & (wxUint64) 0x00000000ff000000UL) << 8) | \
+ (((wxUint64) (val) & (wxUint64) 0x000000ff00000000UL) >> 8) | \
+ (((wxUint64) (val) & (wxUint64) 0x0000ff0000000000UL) >> 24) | \
+ (((wxUint64) (val) & (wxUint64) 0x00ff000000000000UL) >> 40) | \
+ (((wxUint64) (val) & (wxUint64) 0xff00000000000000UL) >> 56)))
+
+#elif defined(SIZEOF_LONG_LONG) && (SIZEOF_LONG_LONG == 8)
+#define wxUINT64_SWAP_ALWAYS(val) \
+ ((wxUint64) ( \
+ (((wxUint64) (val) & (wxUint64) 0x00000000000000ffULL) << 56) | \
+ (((wxUint64) (val) & (wxUint64) 0x000000000000ff00ULL) << 40) | \
+ (((wxUint64) (val) & (wxUint64) 0x0000000000ff0000ULL) << 24) | \
+ (((wxUint64) (val) & (wxUint64) 0x00000000ff000000ULL) << 8) | \
+ (((wxUint64) (val) & (wxUint64) 0x000000ff00000000ULL) >> 8) | \
+ (((wxUint64) (val) & (wxUint64) 0x0000ff0000000000ULL) >> 24) | \
+ (((wxUint64) (val) & (wxUint64) 0x00ff000000000000ULL) >> 40) | \
+ (((wxUint64) (val) & (wxUint64) 0xff00000000000000ULL) >> 56)))
+
+#define wxINT64_SWAP_ALWAYS(val) \
+ ((wxInt64) ( \
+ (((wxUint64) (val) & (wxUint64) 0x00000000000000ffULL) << 56) | \
+ (((wxUint64) (val) & (wxUint64) 0x000000000000ff00ULL) << 40) | \
+ (((wxUint64) (val) & (wxUint64) 0x0000000000ff0000ULL) << 24) | \
+ (((wxUint64) (val) & (wxUint64) 0x00000000ff000000ULL) << 8) | \
+ (((wxUint64) (val) & (wxUint64) 0x000000ff00000000ULL) >> 8) | \
+ (((wxUint64) (val) & (wxUint64) 0x0000ff0000000000ULL) >> 24) | \
+ (((wxUint64) (val) & (wxUint64) 0x00ff000000000000ULL) >> 40) | \
+ (((wxUint64) (val) & (wxUint64) 0xff00000000000000ULL) >> 56)))
+
+#else
+#define wxUINT64_SWAP_ALWAYS(val) \
+ ((wxUint64) ( \
+ ((wxULongLong(val) & wxULongLong(0L, 0x000000ffU)) << 56) | \
+ ((wxULongLong(val) & wxULongLong(0L, 0x0000ff00U)) << 40) | \
+ ((wxULongLong(val) & wxULongLong(0L, 0x00ff0000U)) << 24) | \
+ ((wxULongLong(val) & wxULongLong(0L, 0xff000000U)) << 8) | \
+ ((wxULongLong(val) & wxULongLong(0x000000ffL, 0U)) >> 8) | \
+ ((wxULongLong(val) & wxULongLong(0x0000ff00L, 0U)) >> 24) | \
+ ((wxULongLong(val) & wxULongLong(0x00ff0000L, 0U)) >> 40) | \
+ ((wxULongLong(val) & wxULongLong(0xff000000L, 0U)) >> 56)))
+
+#define wxINT64_SWAP_ALWAYS(val) \
+ ((wxInt64) ( \
+ ((wxLongLong(val) & wxLongLong(0L, 0x000000ffU)) << 56) | \
+ ((wxLongLong(val) & wxLongLong(0L, 0x0000ff00U)) << 40) | \
+ ((wxLongLong(val) & wxLongLong(0L, 0x00ff0000U)) << 24) | \
+ ((wxLongLong(val) & wxLongLong(0L, 0xff000000U)) << 8) | \
+ ((wxLongLong(val) & wxLongLong(0x000000ffL, 0U)) >> 8) | \
+ ((wxLongLong(val) & wxLongLong(0x0000ff00L, 0U)) >> 24) | \
+ ((wxLongLong(val) & wxLongLong(0x00ff0000L, 0U)) >> 40) | \
+ ((wxLongLong(val) & wxLongLong(0xff000000L, 0U)) >> 56)))
+#endif
+
#ifdef WORDS_BIGENDIAN
#define wxUINT16_SWAP_ON_BE(val) wxUINT16_SWAP_ALWAYS(val)
#define wxINT16_SWAP_ON_BE(val) wxINT16_SWAP_ALWAYS(val)
#define wxINT32_SWAP_ON_BE(val) wxINT32_SWAP_ALWAYS(val)
#define wxUINT32_SWAP_ON_LE(val) (val)
#define wxINT32_SWAP_ON_LE(val) (val)
+ #define wxUINT64_SWAP_ON_BE(val) wxUINT64_SWAP_ALWAYS(val)
+ #define wxUINT64_SWAP_ON_LE(val) (val)
#else
#define wxUINT16_SWAP_ON_LE(val) wxUINT16_SWAP_ALWAYS(val)
#define wxINT16_SWAP_ON_LE(val) wxINT16_SWAP_ALWAYS(val)
#define wxINT32_SWAP_ON_LE(val) wxINT32_SWAP_ALWAYS(val)
#define wxUINT32_SWAP_ON_BE(val) (val)
#define wxINT32_SWAP_ON_BE(val) (val)
+ #define wxUINT64_SWAP_ON_LE(val) wxUINT64_SWAP_ALWAYS(val)
+ #define wxUINT64_SWAP_ON_BE(val) (val)
#endif
// ----------------------------------------------------------------------------
wxALIGN_CENTRE_VERTICAL = wxALIGN_CENTER_VERTICAL,
wxALIGN_CENTER = (wxALIGN_CENTER_HORIZONTAL | wxALIGN_CENTER_VERTICAL),
- wxALIGN_CENTRE = wxALIGN_CENTER
+ wxALIGN_CENTRE = wxALIGN_CENTER,
+
+ // a mask to extract alignment from the combination of flags
+ wxALIGN_MASK = 0x0f00
};
enum wxStretch
wxSHRINK = 0x1000,
wxGROW = 0x2000,
wxEXPAND = wxGROW,
- wxSHAPED = 0x4000
+ 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
};
// ----------------------------------------------------------------------------
#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
+// 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
- // Override CTL3D or native 3D styles for children
+
+// 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
- // 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.
+// 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
-// Make window retained (mostly Motif, I think)
+// Make window retained (mostly Motif, I think) -- obsolete (VZ)?
#define wxRETAINED 0x00020000
#define wxBACKINGSTORE wxRETAINED
+// 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
+
+/*
+ * 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
+
+// wxCommandEvents and the objects of the derived classes are forwarded to the
+// parent window and so on recursively by default. Using this flag for the
+// given window allows to block this propagation at this window, i.e. prevent
+// the events from being propagated further upwards. The dialogs have this
+// flag on by default.
+#define wxWS_EX_BLOCK_EVENTS 0x00000002
+
+// don't use this window as an implicit parent for the other windows: this must
+// be used with transient windows as otherwise there is the risk of creating a
+// dialog/frame with this window as a parent which would lead to a crash if the
+// parent is destroyed before the child
+#define wxWS_EX_TRANSIENT 0x00000004
+
/*
* wxFrame/wxDialog style flags
*/
#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)
+ (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|wxTHICK_FRAME)
+// 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
/*
#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
-// this style means to use RICHEDIT control and does something only under wxMSW
-// and Win32 and is silently ignored under all other platforms
-#define wxTE_RICH 0x0080
-#define wxTE_NO_VSCROLL 0x0100
-#define wxTE_AUTO_SCROLL 0x0200
+// deprecated synonyms
+#define wxPROCESS_ENTER 0x0400 // wxTE_PROCESS_ENTER
+#define wxPASSWORD 0x0800 // wxTE_PASSWORD
/*
* wxComboBox 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
#define wxRA_SPECIFY_COLS wxHORIZONTAL
#define wxRA_SPECIFY_ROWS wxVERTICAL
+
// Old names for compatibility
#define wxRA_HORIZONTAL wxHORIZONTAL
#define wxRA_VERTICAL wxVERTICAL
#define wxSL_VERTICAL wxVERTICAL // 8
// The next one is obsolete - use scroll events instead
#define wxSL_NOTIFY_DRAG 0x0000
-#define wxSL_AUTOTICKS 0x0010
-// #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
#define wxSB_VERTICAL wxVERTICAL
/*
- * wxButton flags (Win32 only)
- */
-#define wxBU_AUTODRAW 0x0004
-#define wxBU_NOAUTODRAW 0x0000
-
-/*
- * wxTreeCtrl 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_HEIGHT 0x0080
-
-/*
- * wxListCtrl 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
-
-/*
- * wxSpinButton flags
+ * wxSpinButton flags.
+ * Note that a wxSpinCtrl is sometimes defined as
+ * a wxTextCtrl, and so the flags must be different
+ * from wxTextCtrl's.
*/
#define wxSP_HORIZONTAL wxHORIZONTAL // 4
#define wxSP_VERTICAL wxVERTICAL // 8
-#define wxSP_ARROW_KEYS 0x0010
-#define wxSP_WRAP 0x0020
+#define wxSP_ARROW_KEYS 0x1000
+#define wxSP_WRAP 0x2000
/*
* wxSplitterWindow flags
*/
#define wxSP_NOBORDER 0x0000
-#define wxSP_3D 0x0010
+#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)
+#define wxSP_SASH_AQUA 0x0800
/*
- * wxFrame extra flags
+ * wxNotebook flags
*/
-// No title on taskbar
-#define wxFRAME_TOOL_WINDOW 0x0004
+#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
/*
* wxTabCtrl flags
*/
-#define wxTC_MULTILINE 0x0000
#define wxTC_RIGHTJUSTIFY 0x0010
#define wxTC_FIXEDWIDTH 0x0020
#define wxTC_OWNERDRAW 0x0040
-
-/*
- * wxNotebook flags
- */
-#define wxNB_FIXEDWIDTH 0x0010
-#define wxNB_LEFT 0x0020
-#define wxNB_RIGHT 0x0040
-#define wxNB_BOTTOM 0x0080
+#define wxTC_MULTILINE wxNB_MULTILINE
/*
* wxStatusBar95 flags
*/
#define wxST_NO_AUTORESIZE 0x0001
+/*
+ * wxStaticBitmap flags
+ */
+#define wxBI_EXPAND wxEXPAND
+
/*
* wxStaticLine flags
*/
#define wxPD_AUTO_HIDE 0x0004
#define wxPD_ELAPSED_TIME 0x0008
#define wxPD_ESTIMATED_TIME 0x0010
-#define wxPD_REMAINING_TIME 0x0020
+// 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
/*
* wxHtmlWindow flags
#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
-
/*
* extended dialog specifiers. these values are stored in a different
* flag and thus do not overlap with other style flags. note that these
*/
// wxCENTRE already defined as 0x00000001
+#define wxYES 0x00000002
#define wxOK 0x00000004
-#define wxYES_NO 0x00000008
+#define wxNO 0x00000008
+#define wxYES_NO (wxYES | wxNO)
#define wxCANCEL 0x00000010
-#define wxYES 0x00000020
-#define wxNO 0x00000040
+
+#define wxYES_DEFAULT 0x00000000 // has no effect (default)
#define wxNO_DEFAULT 0x00000080
-#define wxYES_DEFAULT 0x00000000 // has no effect
#define wxICON_EXCLAMATION 0x00000100
#define wxICON_HAND 0x00000200
// 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
#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
// ----------------------------------------------------------------------------
// 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,
// 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 */
wxPRINT_MODE_PRINTER = 3 // Send to printer
} wxPrintMode;
-// ---------------------------------------------------------------------------
-// Macro to specify "All Files" on different platforms
-// ---------------------------------------------------------------------------
+// ----------------------------------------------------------------------------
+// miscellaneous
+// ----------------------------------------------------------------------------
+
+// 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 (*.*)|*.*")
# 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
#ifdef __WXMAC__
-typedef WindowPtr WXHWND;
-typedef Handle WXHANDLE;
-typedef CIconHandle WXHICON;
+typedef WindowPtr WXHWND;
+typedef Handle WXHANDLE;
+typedef CIconHandle WXHICON;
//typedef unsigned long WXHFONT;
-typedef MenuHandle WXHMENU;
+typedef MenuHandle WXHMENU;
//typedef unsigned long WXHPEN;
//typedef unsigned long WXHBRUSH;
//typedef unsigned long WXHPALETTE;
-typedef CursHandle WXHCURSOR;
-typedef RgnHandle WXHRGN;
+typedef CursHandle WXHCURSOR;
+typedef RgnHandle WXHRGN;
//typedef unsigned long WXHACCEL;
//typedef unsigned long WXHINSTANCE;
-typedef GWorldPtr WXHBITMAP;
+typedef GWorldPtr WXHBITMAP;
//typedef unsigned long WXHIMAGELIST;
//typedef unsigned long WXHGLOBAL;
-typedef GrafPtr WXHDC;
+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 RGBColor WXCOLORREF;
//typedef void * WXRGNDATA;
//typedef void * WXMSG;
//typedef unsigned long WXHCONV;
//typedef void * WXLPCREATESTRUCT;
typedef int (*WXFARPROC)();
-typedef WindowPtr WXWindow;
-typedef ControlHandle WXWidget;
+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 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;
typedef unsigned long WXMPARAM;
typedef unsigned long WXMSGID;
typedef void* WXRESULT;
-typedef int (*WXFARPROC)();
+//typedef int (*WXFARPROC)();
// some windows handles not defined by PM
typedef unsigned long HANDLE;
typedef unsigned long HICON;
// 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)))
+// WARNING: The OS/2 headers typedef BYTE simply as 'char'; if the default is signed, all
+// hell will break loose!
+//#define OS2RGB(r,g,b) ((DWORD ((BYTE) (b) | ((WORD) (g) << 8)) | (((DWORD)(BYTE)(r)) << 16)))
+#define OS2RGB(r,g,b) ((DWORD)((unsigned char)(b) | ((unsigned char)(g) << 8)) | ((unsigned char)(r) << 16))
typedef unsigned long COLORREF;
#define GetBValue(rgb) ((BYTE)((rgb) >> 16))
} LOGPALETTE;
#endif //__WXPM__
-#if defined(__GNUWIN32__) || defined(__WXWINE__)
+#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)) || defined (__WATCOMC__)
+ // 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;
#if defined(__BORLANDC__) && !defined(__WIN32__)
-#ifndef LPTSTR
-#define LPTSTR LPSTR
-#endif
-#ifndef LPCTSTR
-#define LPCTSTR LPSTR
-#endif
+# ifndef LPTSTR
+# define LPTSTR LPSTR
+# endif
+# ifndef LPCTSTR
+# define LPCTSTR LPSTR
+# endif
#endif
-#endif // MSW
+#endif // MSW or OS2
#ifdef __WXMOTIF__
/* Stand-ins for X/Xt/Motif types */
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 */
#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 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;
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.
#define DECLARE_NO_COPY_CLASS(classname) \
private: \
classname(const classname&); \
- classname& operator=(const classname&)
+ classname& operator=(const classname&);
#endif
// _WX_DEFS_H_