X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/9c9aec614392d77b41130b01ed1ed7a13d545eb2..a4535b9f391bbe8453f70784bc77a06f3426e858:/include/wx/defs.h diff --git a/include/wx/defs.h b/include/wx/defs.h index 1a77bf608f..c8f84b7ef4 100644 --- a/include/wx/defs.h +++ b/include/wx/defs.h @@ -1,39 +1,43 @@ -/** -* Name: defs.h -* Purpose: Declarations/definitions common to all wx source files -* Author: Julian Smart and others -* Modified by: Ryan Norton (Converted to C) -* Created: 01/02/97 -* RCS-ID: $Id$ -* Copyright: (c) -* Licence: wxWindows licence -*/ +/* + * Name: wx/defs.h + * Purpose: Declarations/definitions common to all wx source files + * Author: Julian Smart and others + * Modified by: Ryan Norton (Converted to C) + * Created: 01/02/97 + * RCS-ID: $Id$ + * Copyright: (c) Julian Smart + * Licence: wxWindows licence + */ /* THIS IS A C FILE, DON'T USE C++ FEATURES (IN PARTICULAR COMMENTS) IN IT */ #ifndef _WX_DEFS_H_ #define _WX_DEFS_H_ -#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) -#pragma interface "defs.h" -#endif - /* ---------------------------------------------------------------------------- */ /* compiler and OS identification */ /* ---------------------------------------------------------------------------- */ #include "wx/platform.h" -/* RN - only double-check the environment when building in C++ - Shouldn't configure pass the environment to all sub-libs too? */ #ifdef __cplusplus /* 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(__WXCOCOA__) && \ - !defined(__X__) && !defined(__WXMGL__) && !defined(__WXX11__) && \ - wxUSE_GUI +# elif defined(__WXMSW__) && defined(__PALMOS__) +# error "Target can't be both PalmOS and Windows" +# elif !defined(__WXMOTIF__) && \ + !defined(__WXMSW__) && \ + !defined(__WXPALMOS__)&& \ + !defined(__WXGTK__) && \ + !defined(__WXPM__) && \ + !defined(__WXMAC__) && \ + !defined(__WXCOCOA__) && \ + !defined(__X__) && \ + !defined(__WXMGL__) && \ + !defined(__WXDFB__) && \ + !defined(__WXX11__) && \ + wxUSE_GUI # ifdef __UNIX__ # error "No Target! You should use wx-config program for compilation flags!" # else /* !Unix */ @@ -55,31 +59,42 @@ #define __WXBASE__ #endif -/* include the feature test macros */ -#include "wx/features.h" - /* suppress some Visual C++ warnings */ #ifdef __VISUALC__ - /* the only "real" warning here is 4244 but there arej ust too many of them */ + /* the only "real" warning here is 4244 but there are just too many of them */ /* in our code... one day someone should go and fix them but until then... */ +# pragma warning(disable:4097) /* typedef used as class */ # pragma warning(disable:4201) /* nonstandard extension used: nameless struct/union */ # pragma warning(disable:4244) /* conversion from double to float */ -# pragma warning(disable:4710) /* function not inlined */ -# pragma warning(disable:4097) /* typedef used as class */ +# pragma warning(disable:4355) /* 'this' used in base member initializer list */ # pragma warning(disable:4511) /* copy ctor couldn't be generated */ # pragma warning(disable:4512) /* operator=() couldn't be generated */ -#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__ */ +# pragma warning(disable:4710) /* function not inlined */ + + /* For VC++ 5.0 for release mode, the warning 'C4702: unreachable code */ + /* is buggy, and occurs for code that does actually get executed */ +# if !defined __WXDEBUG__ && __VISUALC__ <= 1100 +# pragma warning(disable:4702) /* unreachable code */ +# endif + /* The VC++ 5.0 warning 'C4003: not enough actual parameters for macro' + * is incompatible with the wxWidgets headers since it is given when + * parameters are empty but not missing. */ +# if __VISUALC__ <= 1100 +# pragma warning(disable:4003) /* not enough actual parameters for macro */ +# endif -/* 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' */ + /* + VC++ 8 gives a warning when using standard functions such as sprintf, + localtime, ... -- stop this madness, unless the user had already done it + */ + #if __VISUALC__ >= 1400 + #ifndef _CRT_SECURE_NO_DEPRECATE + #define _CRT_SECURE_NO_DEPRECATE 1 + #endif + #ifndef _CRT_NON_CONFORMING_SWPRINTFS + #define _CRT_NON_CONFORMING_SWPRINTFS 1 + #endif + #endif /* VC++ 8 */ #endif /* __VISUALC__ */ /* suppress some Salford C++ warnings */ @@ -96,8 +111,21 @@ # pragma warn -inl /* Functions containing reserved words and certain constructs are not expanded inline */ #endif /* __BORLANDC__ */ +/* + g++ gives a warning when a class has private dtor if it has no friends but + this is a perfectly valid situation for a ref-counted class which destroys + itself when its ref count drops to 0, so provide a macro to suppress this + warning + */ +#ifdef __GNUG__ +# define wxSUPPRESS_GCC_PRIVATE_DTOR_WARNING(name) \ + friend class wxDummyFriendFor ## name; +#else /* !g++ */ +# define wxSUPPRESS_GCC_PRIVATE_DTOR_WARNING(name) +#endif + /* ---------------------------------------------------------------------------- */ -/* wxWindows version and compatibility defines */ +/* wxWidgets version and compatibility defines */ /* ---------------------------------------------------------------------------- */ #include "wx/version.h" @@ -154,7 +182,7 @@ #elif defined(__BORLANDC__) && (__BORLANDC__ >= 0x500) /* Borland 5.0+ supports bool */ #define HAVE_BOOL - #elif defined(__WATCOMC__) && (__WATCOMC__ >= 1100) + #elif wxCHECK_WATCOM_VERSION(1,0) /* Watcom 11+ supports bool */ #define HAVE_BOOL #elif defined(__DIGITALMARS__) @@ -173,6 +201,7 @@ #endif /* compilers */ #endif /* HAVE_BOOL */ +#if !defined(__MWERKS__) || !defined(true) #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 */ @@ -188,6 +217,7 @@ #define true ((bool)1) #define false ((bool)0) #endif +#endif /* for backwards compatibility, also define TRUE and FALSE */ /* */ @@ -205,7 +235,7 @@ typedef short int WXTYPE; /* special care should be taken with this type under Windows where the real */ /* window id is unsigned, so we must always do the cast before comparing them */ -/* (or else they would be always different!). Usign wxGetWindowId() which does */ +/* (or else they would be always different!). Using wxGetWindowId() which does */ /* the cast itself is recommended. Note that this type can't be unsigned */ /* because wxID_ANY == -1 is a valid (and largely used) value for window id. */ typedef int wxWindowID; @@ -239,6 +269,8 @@ typedef int wxWindowID; #define HAVE_EXPLICIT #elif defined(__DIGITALMARS__) #define HAVE_EXPLICIT + #elif defined(__WATCOMC__) + #define HAVE_EXPLICIT #endif #endif /* !HAVE_EXPLICIT */ @@ -253,10 +285,11 @@ typedef int wxWindowID; #if defined(__VISUALC__) && (__VISUALC__ >= 1100) /* VC++ 6.0 and 5.0 have C++ casts (what about earlier versions?) */ #define HAVE_CXX_CASTS - #elif ( defined(__MINGW32__) || defined(__CYGWIN32__) ) \ - && wxCHECK_GCC_VERSION(2, 95) - /* GCC 2.95 has C++ casts, what about earlier versions? */ - #define HAVE_CXX_CASTS + #elif defined(__MINGW32__) || defined(__CYGWIN32__) + #if wxCHECK_GCC_VERSION(2, 95) + /* GCC 2.95 has C++ casts, what about earlier versions? */ + #define HAVE_CXX_CASTS + #endif #endif #endif /* !HAVE_CXX_CASTS */ @@ -264,9 +297,15 @@ typedef int wxWindowID; #ifndef HAVE_CONST_CAST #define HAVE_CONST_CAST #endif + #ifndef HAVE_REINTERPRET_CAST + #define HAVE_REINTERPRET_CAST + #endif #ifndef HAVE_STATIC_CAST #define HAVE_STATIC_CAST #endif + #ifndef HAVE_DYNAMIC_CAST + #define HAVE_DYNAMIC_CAST + #endif #endif /* HAVE_CXX_CASTS */ #ifdef HAVE_STATIC_CAST @@ -281,6 +320,52 @@ typedef int wxWindowID; #define wx_const_cast(t, x) ((t)(x)) #endif +#ifdef HAVE_REINTERPRET_CAST + #define wx_reinterpret_cast(t, x) reinterpret_cast(x) +#else + #define wx_reinterpret_cast(t, x) ((t)(x)) +#endif + +/* + This one is a wx invention: like static cast but used when we intentionally + truncate from a larger to smaller type, static_cast<> can't be used for it + as it results in warnings when using some compilers (SGI mipspro for example) + */ +#if defined(__INTELC__) && defined(__cplusplus) + template + inline T wx_truncate_cast_impl(X x) + { + #pragma warning(push) + /* implicit conversion of a 64-bit integral type to a smaller integral type */ + #pragma warning(disable: 1682) + /* conversion from "X" to "T" may lose significant bits */ + #pragma warning(disable: 810) + + return x; + + #pragma warning(pop) + } + + #define wx_truncate_cast(t, x) wx_truncate_cast_impl(x) + +#elif defined(__cplusplus) && defined(__VISUALC__) && __VISUALC__ >= 1310 + template + inline T wx_truncate_cast_impl(X x) + { + #pragma warning(push) + /* conversion from 'X' to 'T', possible loss of data */ + #pragma warning(disable: 4267) + + return x; + + #pragma warning(pop) + } + + #define wx_truncate_cast(t, x) wx_truncate_cast_impl(x) +#else + #define wx_truncate_cast(t, x) ((t)(x)) +#endif + /* for consistency with wxStatic/DynamicCast defined in wx/object.h */ #define wxConstCast(obj, className) wx_const_cast(className *, obj) @@ -289,7 +374,7 @@ typedef int wxWindowID; /* VC++ 6.0 and 5.0 have std::wstring (what about earlier versions?) */ #define HAVE_STD_WSTRING #elif ( defined(__MINGW32__) || defined(__CYGWIN32__) ) \ - && wxCHECK_GCC_VERSION(3, 1) + && wxCHECK_GCC_VERSION(3, 3) /* GCC 3.1 has std::wstring; 3.0 never was in MinGW, 2.95 hasn't it */ #define HAVE_STD_WSTRING #endif @@ -308,6 +393,56 @@ typedef int wxWindowID; #endif #endif +/* provide replacement for C99 va_copy() if the compiler doesn't have it */ + +/* could be already defined by configure or the user */ +#ifndef wxVaCopy + /* if va_copy is a macro or configure detected that we have it, use it */ + #if defined(va_copy) || defined(HAVE_VA_COPY) + #define wxVaCopy va_copy + #else /* no va_copy, try to provide a replacement */ + /* + configure tries to determine whether va_list is an array or struct + type, but it may not be used under Windows, so deal with a few + special cases. + */ + + #ifdef __WATCOMC__ + /* Watcom uses array type for va_list except for PPC and Alpha */ + #if !defined(__PPC__) && !defined(__AXP__) + #define VA_LIST_IS_ARRAY + #endif + #endif /* __WATCOMC__ */ + + #if defined(__PPC__) && (defined(_CALL_SYSV) || defined (_WIN32)) + /* + PPC using SysV ABI and NT/PPC are special in that they use an + extra level of indirection. + */ + #define VA_LIST_IS_POINTER + #endif /* SysV or Win32 on __PPC__ */ + + /* + note that we use memmove(), not memcpy(), in case anybody tries + to do wxVaCopy(ap, ap) + */ + #if defined(VA_LIST_IS_POINTER) + #define wxVaCopy(d, s) memmove(*(d), *(s), sizeof(va_list)) + #elif defined(VA_LIST_IS_ARRAY) + #define wxVaCopy(d, s) memmove((d), (s), sizeof(va_list)) + #else /* we can only hope that va_lists are simple lvalues */ + #define wxVaCopy(d, s) ((d) = (s)) + #endif + #endif /* va_copy/!va_copy */ +#endif /* wxVaCopy */ + +#ifndef HAVE_VARIADIC_MACROS + #if wxCHECK_WATCOM_VERSION(1,2) + #define HAVE_VARIADIC_MACROS + #endif +#endif /* HAVE_VARIADIC_MACROS */ + + /* ---------------------------------------------------------------------------- */ /* portable calling conventions macros */ /* ---------------------------------------------------------------------------- */ @@ -364,25 +499,20 @@ typedef int wxWindowID; /* ---------------------------------------------------------------------------- */ /* Printf-like attribute definitions to obtain warnings with GNU C/C++ */ -#if defined(__GNUC__) && !wxUSE_UNICODE -# ifndef ATTRIBUTE_PRINTF -# define ATTRIBUTE_PRINTF(m, n) __attribute__ ((__format__ (__printf__, m, n))) -# define ATTRIBUTE_PRINTF_1 ATTRIBUTE_PRINTF(1, 2) -# define ATTRIBUTE_PRINTF_2 ATTRIBUTE_PRINTF(2, 3) -# define ATTRIBUTE_PRINTF_3 ATTRIBUTE_PRINTF(3, 4) -# define ATTRIBUTE_PRINTF_4 ATTRIBUTE_PRINTF(4, 5) -# define ATTRIBUTE_PRINTF_5 ATTRIBUTE_PRINTF(5, 6) -# endif /* ATTRIBUTE_PRINTF */ -#else -# ifndef ATTRIBUTE_PRINTF -# define ATTRIBUTE_PRINTF -# define ATTRIBUTE_PRINTF_1 -# define ATTRIBUTE_PRINTF_2 -# define ATTRIBUTE_PRINTF_3 -# define ATTRIBUTE_PRINTF_4 -# define ATTRIBUTE_PRINTF_5 -# endif /* ATTRIBUTE_PRINTF */ -#endif +#ifndef ATTRIBUTE_PRINTF +# if defined(__GNUC__) && !wxUSE_UNICODE +# define ATTRIBUTE_PRINTF(m, n) __attribute__ ((__format__ (__printf__, m, n))) +# else +# define ATTRIBUTE_PRINTF(m, n) +# endif + +# define ATTRIBUTE_PRINTF_1 ATTRIBUTE_PRINTF(1, 2) +# define ATTRIBUTE_PRINTF_2 ATTRIBUTE_PRINTF(2, 3) +# define ATTRIBUTE_PRINTF_3 ATTRIBUTE_PRINTF(3, 4) +# define ATTRIBUTE_PRINTF_4 ATTRIBUTE_PRINTF(4, 5) +# define ATTRIBUTE_PRINTF_5 ATTRIBUTE_PRINTF(5, 6) +#endif /* !defined(ATTRIBUTE_PRINTF) */ + /* Macro to issue warning when using deprecated functions with gcc3 or MSVC7: */ #if wxCHECK_GCC_VERSION(3, 1) @@ -393,13 +523,26 @@ typedef int wxWindowID; #define wxDEPRECATED(x) x #endif +/* + Special variant of the macro above which should be used for the functions + which are deprecated but called by wx itself: this often happens with + deprecated virtual functions which are called by the library. + */ +#ifdef WXBUILDING +# define wxDEPRECATED_BUT_USED_INTERNALLY(x) x +#else +# define wxDEPRECATED_BUT_USED_INTERNALLY(x) wxDEPRECATED(x) +#endif + /* everybody gets the assert and other debug macros */ #include "wx/debug.h" /* 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) */ +#ifndef __HANDHELDPC__ #include +#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 */ @@ -414,21 +557,64 @@ typedef int wxWindowID; /* size of statically declared array */ #define WXSIZEOF(array) (sizeof(array)/sizeof(array[0])) -/* helper macros to concatenate two tokens together */ -#define wxCONCAT_HELPER(text, line) text ## line -#define wxCONCAT(text, line) wxCONCAT_HELPER(text, line) - -/* helper macros to be able to define unique/anonymous objects: this works by */ -/* appending the current line number to the given identifier to reduce the */ -/* probability of the conflict (it may still happen if this is used in the */ -/* headers, hence you should avoid doing it or provide unique prefixes then) */ -#define wxCONCAT_LINE(text) wxCONCAT(text, __LINE__) -#define wxMAKE_UNIQUE_NAME(text) wxCONCAT_LINE(text) - /* symbolic constant used by all Find()-like functions returning positive */ /* integer on success as failure indicator */ #define wxNOT_FOUND (-1) +/* ---------------------------------------------------------------------------- */ +/* macros dealing with comparison operators */ +/* ---------------------------------------------------------------------------- */ + +/* + Expands into m(op, args...) for each op in the set { ==, !=, <, <=, >, >= }. + */ +#define wxFOR_ALL_COMPARISONS(m) \ + m(==) m(!=) m(>=) m(<=) m(>) m(<) + +#define wxFOR_ALL_COMPARISONS_1(m, x) \ + m(==,x) m(!=,x) m(>=,x) m(<=,x) m(>,x) m(<,x) + +#define wxFOR_ALL_COMPARISONS_2(m, x, y) \ + m(==,x,y) m(!=,x,y) m(>=,x,y) m(<=,x,y) m(>,x,y) m(<,x,y) + +#define wxFOR_ALL_COMPARISONS_3(m, x, y, z) \ + m(==,x,y,z) m(!=,x,y,z) m(>=,x,y,z) m(<=,x,y,z) m(>,x,y,z) m(<,x,y,z) + +/* + This is only used with wxDEFINE_COMPARISON_REV: it passes both the normal + and the reversed comparison operators to the macro. + */ +#define wxFOR_ALL_COMPARISONS_3_REV(m, x, y, z) \ + m(==,x,y,z,==) m(!=,x,y,z,!=) m(>=,x,y,z,<=) \ + m(<=,x,y,z,>=) m(>,x,y,z,<) m(<,x,y,z,>) + + +#define wxDEFINE_COMPARISON(op, T1, T2, cmp) \ + inline bool operator op(T1 x, T2 y) { return cmp(x, y, op); } + +#define wxDEFINE_COMPARISON_REV(op, T1, T2, cmp, oprev) \ + inline bool operator op(T2 y, T1 x) { return cmp(x, y, oprev); } + +/* + Define all 6 comparison operators (==, !=, <, <=, >, >=) for the given + types in the specified order. The implementation is provided by the cmp + macro. Normally wxDEFINE_ALL_COMPARISONS should be used as comparison + operators are usually symmetric. + */ +#define wxDEFINE_COMPARISONS(T1, T2, cmp) \ + wxFOR_ALL_COMPARISONS_3(wxDEFINE_COMPARISON, T1, T2, cmp) + +/* + This macro allows to define all 12 comparison operators (6 operators for + both orders of arguments) for the given types using the provided "cmp" + macro to implement the actual comparison: the macro is called with the 2 + arguments names, the first of type T1 and the second of type T2, and the + comparison operator being implemented. + */ +#define wxDEFINE_ALL_COMPARISONS(T1, T2, cmp) \ + wxFOR_ALL_COMPARISONS_3(wxDEFINE_COMPARISON, T1, T2, cmp) \ + wxFOR_ALL_COMPARISONS_3_REV(wxDEFINE_COMPARISON_REV, T1, T2, cmp) + /* ---------------------------------------------------------------------------- */ /* macros to avoid compiler warnings */ /* ---------------------------------------------------------------------------- */ @@ -447,6 +633,27 @@ typedef int wxWindowID; #define WXUNUSED_UNLESS_DEBUG(param) WXUNUSED(param) #endif +/* some arguments are not used in unicode mode */ +#if wxUSE_UNICODE + #define WXUNUSED_IN_UNICODE(param) WXUNUSED(param) +#else + #define WXUNUSED_IN_UNICODE(param) param +#endif + +/* some arguments are not used in WinCE build */ +#ifdef __WXWINCE__ + #define WXUNUSED_IN_WINCE(param) WXUNUSED(param) +#else + #define WXUNUSED_IN_WINCE(param) param +#endif + +/* unused parameters in non stream builds */ +#if wxUSE_STREAMS + #define WXUNUSED_UNLESS_STREAMS(param) param +#else + #define WXUNUSED_UNLESS_STREAMS(param) WXUNUSED(param) +#endif + /* some compilers give warning about a possibly unused variable if it is */ /* initialized in both branches of if/else and shut up if it is initialized */ /* when declared, but other compilers then give warnings about unused variable */ @@ -491,7 +698,7 @@ typedef int wxWindowID; #define except(x) catch(...) #endif /* Metrowerks */ -#if defined(__WATCOMC__) +#if wxONLY_WATCOM_EARLIER_THAN(1,4) typedef short mode_t; #endif @@ -508,71 +715,26 @@ typedef int wxWindowID; #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 */ - 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 */ - wxGEOS, /* GEOS */ - wxOS2_PM, /* OS/2 Workplace */ - wxWINDOWS, /* Windows or WfW */ - wxMICROWINDOWS, /* MicroWindows */ - wxPENWINDOWS, /* Windows for Pen Computing */ - wxWINDOWS_NT, /* Windows NT */ - wxWIN32S, /* Windows 32S API */ - wxWIN95, /* Windows 95 */ - wxWIN386, /* Watcom 32-bit supervisor modus */ - wxWINDOWS_CE, /* Windows CE */ - wxMGL_UNIX, /* MGL with direct hardware access */ - wxMGL_X, /* MGL on X */ - wxMGL_WIN32, /* MGL on Win32 */ - wxMGL_OS2, /* MGL on OS/2 */ - wxMGL_DOS, /* MGL on MS-DOS */ - wxWINDOWS_OS2, /* Native OS/2 PM */ - wxUNIX, /* wxBase under Unix */ - wxX11 /* Plain X11 and Universal widgets */ -}; - -/* ---------------------------------------------------------------------------- */ -/* standard wxWindows types */ +/* standard wxWidgets types */ /* ---------------------------------------------------------------------------- */ /* the type for screen and DC coordinates */ +typedef int wxCoord; -#if wxUSE_COMPATIBLE_COORD_TYPES - /* to ensure compatibility with 2.0, we must use long */ - #define wxCoord long -#else /* !wxUSE_COMPATIBLE_COORD_TYPES */ - /* other platforms we support have at least 32bit int - quite enough */ - typedef int wxCoord; -#endif /* wxUSE_COMPATIBLE_COORD_TYPES/!wxUSE_COMPATIBLE_COORD_TYPES */ - +enum { wxDefaultCoord = -1 }; /* ---------------------------------------------------------------------------- */ /* define fixed length types */ /* ---------------------------------------------------------------------------- */ +#if defined(__WXPALMOS__) || defined(__MINGW32__) + #include +#endif + /* chars are always one byte (by definition), shorts are always two (in */ /* practice) */ /* 8bit */ -#ifndef SIZEOF_CHAR - #define SIZEOF_CHAR 1 -#endif typedef signed char wxInt8; typedef unsigned char wxUint8; typedef wxUint8 wxByte; @@ -581,7 +743,7 @@ typedef wxUint8 wxByte; /* 16bit */ #ifdef SIZEOF_SHORT #if SIZEOF_SHORT != 2 - #error "wxWindows assumes sizeof(short) == 2, please fix the code" + #error "wxWidgets assumes sizeof(short) == 2, please fix the code" #endif #else #define SIZEOF_SHORT 2 @@ -604,7 +766,7 @@ typedef wxUint16 wxWord; |short | 16 16 16 16 16 | |int | 32 64 32 32 16 | |long | 64 64 32 32 32 | - |long long | 64 | + |long long | 64 64 64 -- -- | |void * | 64 64 64 32 32 | +-----------+----------------------------+ @@ -615,14 +777,25 @@ typedef wxUint16 wxWord; */ /* 32bit */ -#ifdef __WINDOWS__ +#ifdef __PALMOS__ + typedef int wxInt32; + typedef unsigned int wxUint32; + #define SIZEOF_INT 4 + #define SIZEOF_LONG 4 + #define SIZEOF_WCHAR_T 2 + #define SIZEOF_SIZE_T 4 + #define wxSIZE_T_IS_UINT + #define SIZEOF_VOID_P 4 + #define SIZEOF_SIZE_T 4 +#elif defined(__WINDOWS__) /* Win64 uses LLP64 model and so ints and longs have the same size as in */ /* Win32 */ #if defined(__WIN32__) typedef int wxInt32; typedef unsigned int wxUint32; - /* conside that if SIZEOF_INT is defined, all the other ones are too */ + /* Assume that if SIZEOF_INT is defined that all the other ones except + SIZEOF_SIZE_T, are too. See next #if below. */ #ifndef SIZEOF_INT #define SIZEOF_INT 4 #define SIZEOF_LONG 4 @@ -649,6 +822,19 @@ typedef wxUint16 wxWord; #define SIZEOF_VOID_P 4 #endif /* Win64/32 */ #endif /* !defined(SIZEOF_INT) */ + + /* + If Python.h was included first, it defines all of the SIZEOF's above + except for SIZEOF_SIZE_T, so we need to do it here to avoid + triggering the #error in the ssize_t typedefs below... + */ + #ifndef SIZEOF_SIZE_T + #ifdef __WIN64__ + #define SIZEOF_SIZE_T 8 + #else /* Win32 */ + #define SIZEOF_SIZE_T 4 + #endif + #endif #else #error "Unsupported Windows version" #endif @@ -670,8 +856,8 @@ typedef wxUint16 wxWord; typedef long wxInt32; typedef unsigned long wxUint32; - #elif - /* wxWindows is not ready for 128bit systems yet... */ + #else + /* wxWidgets is not ready for 128bit systems yet... */ #error "Unknown sizeof(int) value, what are you compiling for?" #endif #else /* !defined(SIZEOF_INT) */ @@ -687,9 +873,9 @@ typedef wxUint16 wxWord; typedef int wxInt32; typedef unsigned int wxUint32; - #if defined(__MACH__) && !defined(SIZEOF_WCHAR_T) - #define SIZEOF_WCHAR_T 4 - #endif + #if defined(__MACH__) && !defined(SIZEOF_WCHAR_T) + #define SIZEOF_WCHAR_T 4 + #endif #if wxUSE_WCHAR_T && !defined(SIZEOF_WCHAR_T) /* also assume that sizeof(wchar_t) == 2 (under Unix the most */ /* common case is 4 but there configure would have defined */ @@ -703,8 +889,33 @@ typedef wxUint16 wxWord; #endif #endif /* Win/!Win */ +/* also define C99-like sized MIN/MAX constants */ +#define wxINT8_MIN CHAR_MIN +#define wxINT8_MAX CHAR_MAX + +#define wxINT16_MIN SHRT_MIN +#define wxINT16_MAX SHRT_MAX + +#if SIZEOF_INT == 4 + #define wxINT32_MIN INT_MIN + #define wxINT32_MAX INT_MAX +#elif SIZEOF_LONG == 4 + #define wxINT32_MIN LONG_MIN + #define wxINT32_MAX LONG_MAX +#else + #error "Unknown 32 bit type" +#endif + typedef wxUint32 wxDword; +#ifdef LLONG_MAX + #define wxINT64_MAX LLONG_MAX + #define wxINT64_MIN LLONG_MIN +#else + #define wxINT64_MAX wxLL(9223372036854775807) + #define wxINT64_MIN wxLL(-9223372036854775807-1) +#endif + /* Define an integral type big enough to contain all of long, size_t and void *. */ @@ -717,53 +928,103 @@ typedef wxUint32 wxDword; #else /* This should never happen for the current architectures but if you're - using one where it does, please contact wx-dev@lists.wxwindows.org. + using one where it does, please contact wx-dev@lists.wxwidgets.org. */ #error "Pointers can't be stored inside integer types." #endif +#ifdef __cplusplus +/* And also define a couple of simple functions to cast pointer to/from it. */ +inline wxUIntPtr wxPtrToUInt(const void *p) +{ + /* + VC++ 7.1 gives warnings about casts such as below even when they're + explicit with /Wp64 option, suppress them as we really know what we're + doing here. Same thing with icc with -Wall. + */ +#ifdef __VISUALC__ + #if __VISUALC__ >= 1200 + #pragma warning(push) + #endif + /* pointer truncation from '' to '' */ + #pragma warning(disable: 4311) +#elif defined(__INTELC__) + #pragma warning(push) + /* conversion from pointer to same-sized integral type */ + #pragma warning(disable: 1684) +#endif + + return wx_reinterpret_cast(wxUIntPtr, p); + +#if (defined(__VISUALC__) && __VISUALC__ >= 1200) || defined(__INTELC__) + #pragma warning(pop) +#endif +} + +inline void *wxUIntToPtr(wxUIntPtr p) +{ +#ifdef __VISUALC__ + #if __VISUALC__ >= 1200 + #pragma warning(push) + #endif + /* conversion to type of greater size */ + #pragma warning(disable: 4312) +#elif defined(__INTELC__) + #pragma warning(push) + /* invalid type conversion: "wxUIntPtr={unsigned long}" to "void *" */ + #pragma warning(disable: 171) +#endif + + return wx_reinterpret_cast(void *, p); + +#if (defined(__VISUALC__) && __VISUALC__ >= 1200) || defined(__INTELC__) + #pragma warning(pop) +#endif +} +#endif /*__cplusplus*/ + + /* 64 bit */ -/* NB: we #define and not typedef wxLongLong_t because we want to be able to */ -/* use 'unsigned wxLongLong_t' as well and because we use "#ifdef */ +/* NB: we #define and not typedef wxLongLong_t because we use "#ifdef */ /* wxLongLong_t" in wx/longlong.h */ +/* wxULongLong_t is set later (usually to unsigned wxLongLong_t) */ + /* to avoid compilation problems on 64bit machines with ambiguous method calls */ /* we will need to define this */ #undef wxLongLongIsLong -/* first check for generic cases which are long on 64bit machine and "long */ -/* long", then check for specific compilers */ -#if defined(SIZEOF_LONG) && (SIZEOF_LONG == 8) - #define wxLongLong_t long - #define wxLongLongSuffix l - #define wxLongLongFmtSpec _T("l") - #define wxLongLongIsLong -#elif (defined(__VISUALC__) && defined(__WIN32__)) +/* + First check for specific compilers which have known 64 bit integer types, + this avoids clashes with SIZEOF_LONG[_LONG] being defined incorrectly for + e.g. MSVC builds (Python.h defines it as 8 even for MSVC). + + Also notice that we check for "long long" before checking for 64 bit long as + we still want to use "long long" and not "long" for wxLongLong_t on 64 bit + architectures to be able to pass wxLongLong_t to the standard functions + prototyped as taking "long long" such as strtoll(). + */ +#if (defined(__VISUALC__) && defined(__WIN32__)) #define wxLongLong_t __int64 #define wxLongLongSuffix i64 #define wxLongLongFmtSpec _T("I64") #elif defined(__BORLANDC__) && defined(__WIN32__) && (__BORLANDC__ >= 0x520) #define wxLongLong_t __int64 #define wxLongLongSuffix i64 - #define wxLongLongFmtSpec _T("Ld") -#elif (defined(__WATCOMC__) && (defined(__WIN32__) || defined(__DOS__))) + #define wxLongLongFmtSpec _T("L") +#elif (defined(__WATCOMC__) && (defined(__WIN32__) || defined(__DOS__) || defined(__OS2__))) #define wxLongLong_t __int64 #define wxLongLongSuffix i64 - #define wxLongLongFmtSpec _T("Ld") + #define wxLongLongFmtSpec _T("L") #elif defined(__DIGITALMARS__) #define wxLongLong_t __int64 #define wxLongLongSuffix LL #define wxLongLongFmtSpec _T("ll") -#elif (defined(SIZEOF_LONG_LONG) && SIZEOF_LONG_LONG >= 8) || \ - defined(__MINGW32__) || \ - defined(__GNUC__) || \ - defined(__CYGWIN__) || \ - defined(__WXMICROWIN__) || \ - (defined(__DJGPP__) && __DJGPP__ >= 2) +#elif defined(__MINGW32__) #define wxLongLong_t long long #define wxLongLongSuffix ll - #define wxLongLongFmtSpec _T("ll") + #define wxLongLongFmtSpec _T("I64") #elif defined(__MWERKS__) #if __option(longlong) #define wxLongLong_t long long @@ -773,18 +1034,83 @@ typedef wxUint32 wxDword; #error "The 64 bit integer support in CodeWarrior has been disabled." #error "See the documentation on the 'longlong' pragma." #endif +#elif defined(__WXPALMOS__) + #define wxLongLong_t int64_t + #define wxLongLongSuffix ll + #define wxLongLongFmtSpec _T("ll") #elif defined(__VISAGECPP__) && __IBMCPP__ >= 400 #define wxLongLong_t long long +#elif (defined(SIZEOF_LONG_LONG) && SIZEOF_LONG_LONG >= 8) || \ + defined(__GNUC__) || \ + defined(__CYGWIN__) || \ + defined(__WXMICROWIN__) || \ + (defined(__DJGPP__) && __DJGPP__ >= 2) + #define wxLongLong_t long long + #define wxLongLongSuffix ll + #define wxLongLongFmtSpec _T("ll") +#elif defined(SIZEOF_LONG) && (SIZEOF_LONG == 8) + #define wxLongLong_t long + #define wxLongLongSuffix l + #define wxLongLongFmtSpec _T("l") + #define wxLongLongIsLong #endif #ifdef wxLongLong_t - /* these macros allow to definea 64 bit constants in a portable way */ + + #ifdef __WXPALMOS__ + #define wxULongLong_t uint64_t + #else + #define wxULongLong_t unsigned wxLongLong_t + #endif + + /* these macros allow to define 64 bit constants in a portable way */ #define wxLL(x) wxCONCAT(x, wxLongLongSuffix) #define wxULL(x) wxCONCAT(x, wxCONCAT(u, wxLongLongSuffix)) typedef wxLongLong_t wxInt64; - typedef unsigned wxLongLong_t wxUint64; + typedef wxULongLong_t wxUint64; + + #define wxHAS_INT64 1 + +#elif wxUSE_LONGLONG + /* these macros allow to define 64 bit constants in a portable way */ + #define wxLL(x) wxLongLong(x) + #define wxULL(x) wxULongLong(x) + + #define wxInt64 wxLongLong + #define wxUint64 wxULongLong + + #define wxHAS_INT64 1 + +#else /* !wxUSE_LONGLONG */ + + #define wxHAS_INT64 0 + +#endif + + +/* Make sure ssize_t is defined (a signed type the same size as size_t) */ +/* HAVE_SSIZE_T should be defined for compiliers that already have it */ +#ifdef __MINGW32__ + #if defined(_SSIZE_T_) && !defined(HAVE_SSIZE_T) + #define HAVE_SSIZE_T + #endif +#endif +#if defined(__PALMOS__) && !defined(HAVE_SSIZE_T) + #define HAVE_SSIZE_T +#endif +#if wxCHECK_WATCOM_VERSION(1,4) + #define HAVE_SSIZE_T +#endif +#ifndef HAVE_SSIZE_T + #if SIZEOF_SIZE_T == 4 + typedef wxInt32 ssize_t; + #elif SIZEOF_SIZE_T == 8 + typedef wxInt64 ssize_t; + #else + #error "error defining ssize_t, size_t is not 4 or 8 bytes" + #endif #endif @@ -802,11 +1128,45 @@ typedef float wxFloat32; typedef double wxFloat64; #endif -#if defined( __WXMAC__ ) && !defined( __POWERPC__ ) - typedef long double wxDouble; -#else - typedef double wxDouble; -#endif +typedef double wxDouble; + +/* + Some (non standard) compilers typedef wchar_t as an existing type instead + of treating it as a real fundamental type, set wxWCHAR_T_IS_REAL_TYPE to 0 + for them and to 1 for all the others. + */ +#ifndef wxWCHAR_T_IS_REAL_TYPE + /* + VC++ typedefs wchar_t as unsigned short by default until VC8, that is + unless /Za or /Zc:wchar_t option is used in which case _WCHAR_T_DEFINED + is defined. + */ +# if defined(__VISUALC__) && !defined(_NATIVE_WCHAR_T_DEFINED) +# define wxWCHAR_T_IS_REAL_TYPE 0 +# else /* compiler having standard-conforming wchar_t */ +# define wxWCHAR_T_IS_REAL_TYPE 1 +# endif +#endif /* !defined(wxWCHAR_T_IS_REAL_TYPE) */ + +/* Helper macro for doing something dependent on whether wchar_t is or isn't a + typedef inside another macro. */ +#if wxWCHAR_T_IS_REAL_TYPE + #define wxIF_WCHAR_T_TYPE(x) x +#else /* !wxWCHAR_T_IS_REAL_TYPE */ + #define wxIF_WCHAR_T_TYPE(x) +#endif /* wxWCHAR_T_IS_REAL_TYPE/!wxWCHAR_T_IS_REAL_TYPE */ + +/* + This constant should be used instead of NULL in vararg functions taking + wxChar* arguments: passing NULL (which is the same as 0, unless the compiler + defines it specially, e.g. like gcc does with its __null built-in) doesn't + work in this case as va_arg() wouldn't interpret the integer 0 correctly + when trying to convert it to a pointer on architectures where sizeof(int) is + strictly less than sizeof(void *). + + Examples of places where this must be used include wxFileTypeInfo ctor. + */ +#define wxNullPtr ((void *)NULL) /* ---------------------------------------------------------------------------- */ /* byte ordering related definition and macros */ @@ -904,7 +1264,7 @@ typedef float wxFloat32; (((wxUint64) (val) & (wxUint64) wxULL(0x0000ff0000000000)) >> 24) | \ (((wxUint64) (val) & (wxUint64) wxULL(0x00ff000000000000)) >> 40) | \ (((wxUint64) (val) & (wxUint64) wxULL(0xff00000000000000)) >> 56))) -#else /* !wxLongLong_t */ +#elif wxUSE_LONGLONG /* !wxLongLong_t */ #define wxUINT64_SWAP_ALWAYS(val) \ ((wxUint64) ( \ ((wxULongLong(val) & wxULongLong(0L, 0x000000ffU)) << 56) | \ @@ -937,8 +1297,10 @@ typedef float wxFloat32; #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) + #if wxHAS_INT64 + #define wxUINT64_SWAP_ON_BE(val) wxUINT64_SWAP_ALWAYS(val) + #define wxUINT64_SWAP_ON_LE(val) (val) + #endif #else #define wxUINT16_SWAP_ON_LE(val) wxUINT16_SWAP_ALWAYS(val) #define wxINT16_SWAP_ON_LE(val) wxINT16_SWAP_ALWAYS(val) @@ -948,16 +1310,12 @@ typedef float wxFloat32; #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) + #if wxHAS_INT64 + #define wxUINT64_SWAP_ON_LE(val) wxUINT64_SWAP_ALWAYS(val) + #define wxUINT64_SWAP_ON_BE(val) (val) + #endif #endif -/* Macros to convert from unsigned long to void pointer. */ -/* High order truncation occurs if the respective type is not large enough. */ -#define WXPTRULONGSLICE (((wxBYTE_ORDER==wxBIG_ENDIAN)&&(sizeof(void*)==8)&&(sizeof(unsigned long)<8))?1:0) -#define wxPtrToULong(p) (((unsigned long*)(&(p)))[WXPTRULONGSLICE]) -#define wxULongToPtr(p,n) (p=NULL,wxPtrToULong(p)=(unsigned long)(n),p) - /* ---------------------------------------------------------------------------- */ /* Geometric flags */ /* ---------------------------------------------------------------------------- */ @@ -976,10 +1334,11 @@ enum wxGeometryCentre enum wxOrientation { + /* don't change the values of these elements, they are used elsewhere */ wxHORIZONTAL = 0x0004, wxVERTICAL = 0x0008, - wxBOTH = (wxVERTICAL | wxHORIZONTAL) + wxBOTH = wxVERTICAL | wxHORIZONTAL }; enum wxDirection @@ -1021,16 +1380,18 @@ enum wxAlignment enum wxStretch { + /* for compatibility only, default now, don't use explicitly any more */ +#if WXWIN_COMPATIBILITY_2_6 + wxADJUST_MINSIZE = 0, +#endif + wxSTRETCH_NOT = 0x0000, wxSHRINK = 0x1000, wxGROW = 0x2000, wxEXPAND = wxGROW, wxSHAPED = 0x4000, wxFIXED_MINSIZE = 0x8000, - wxTILE = 0xc000, - - // for compatibility only, default now, don't use explicitly any more - wxADJUST_MINSIZE = 0x0000 + wxTILE = 0xc000 }; /* border flags: the values are chosen for backwards compatibility */ @@ -1045,12 +1406,20 @@ enum wxBorder wxBORDER_SIMPLE = 0x02000000, wxBORDER_RAISED = 0x04000000, wxBORDER_SUNKEN = 0x08000000, - wxBORDER_DOUBLE = 0x10000000, + wxBORDER_DOUBLE = 0x10000000, /* deprecated */ + wxBORDER_THEME = wxBORDER_DEFAULT, /* a mask to extract border style from the combination of flags */ wxBORDER_MASK = 0x1f200000 }; +/* This makes it easier to specify a 'normal' border for a control */ +#if defined(__SMARTPHONE__) || defined(__POCKETPC__) +#define wxDEFAULT_CONTROL_BORDER wxBORDER_SIMPLE +#else +#define wxDEFAULT_CONTROL_BORDER wxBORDER_SUNKEN +#endif + /* ---------------------------------------------------------------------------- */ /* Window style flags */ /* ---------------------------------------------------------------------------- */ @@ -1136,6 +1505,13 @@ enum wxBorder /* window is resized (currently, makes sense for wxMSW only) */ #define wxNO_FULL_REPAINT_ON_RESIZE 0 +/* A mask which can be used to filter (out) all wxWindow-specific styles. + */ +#define wxWINDOW_STYLE_MASK \ + (wxVSCROLL|wxHSCROLL|wxBORDER_MASK|wxALWAYS_SHOW_SB|wxCLIP_CHILDREN| \ + wxCLIP_SIBLINGS|wxTRANSPARENT_WINDOW|wxTAB_TRAVERSAL|wxWANTS_CHARS| \ + wxRETAINED|wxPOPUP_WINDOW|wxFULL_REPAINT_ON_RESIZE) + /* * Extra window style flags (use wxWS_EX prefix to make it clear that they * should be passed to wxWindow::SetExtraStyle(), not SetWindowStyle()) @@ -1170,10 +1546,20 @@ enum wxBorder /* this window should always process UI update events */ #define wxWS_EX_PROCESS_UI_UPDATES 0x00000020 +/* Draw the window in a metal theme on Mac */ +#define wxFRAME_EX_METAL 0x00000040 +#define wxDIALOG_EX_METAL 0x00000040 + /* Use this style to add a context-sensitive help to the window (currently for */ /* Win32 only and it doesn't work if wxMINIMIZE_BOX or wxMAXIMIZE_BOX are used) */ -#define wxFRAME_EX_CONTEXTHELP 0x00000004 -#define wxDIALOG_EX_CONTEXTHELP 0x00000004 +#define wxWS_EX_CONTEXTHELP 0x00000080 + +/* synonyms for wxWS_EX_CONTEXTHELP for compatibility */ +#define wxFRAME_EX_CONTEXTHELP wxWS_EX_CONTEXTHELP +#define wxDIALOG_EX_CONTEXTHELP wxWS_EX_CONTEXTHELP + +/* Create a window which is attachable to another top level window */ +#define wxFRAME_DRAWER 0x0020 /* * MDI parent frame style flags @@ -1182,20 +1568,6 @@ enum wxBorder #define wxFRAME_NO_WINDOW_MENU 0x0100 -/* - * wxExtDialog style flags - */ -#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 - /* * wxMenuBar style flags */ @@ -1228,9 +1600,11 @@ enum wxBorder /* always show an entire number of rows */ #define wxLB_INT_HEIGHT 0x0800 -/* deprecated synonyms */ -#define wxPROCESS_ENTER 0x0400 /* wxTE_PROCESS_ENTER */ -#define wxPASSWORD 0x0800 /* wxTE_PASSWORD */ +#if WXWIN_COMPATIBILITY_2_6 + /* deprecated synonyms */ + #define wxPROCESS_ENTER 0x0400 /* wxTE_PROCESS_ENTER */ + #define wxPASSWORD 0x0800 /* wxTE_PASSWORD */ +#endif /* * wxComboBox style flags @@ -1255,29 +1629,14 @@ enum wxBorder /* Old names for compatibility */ #define wxRA_HORIZONTAL wxHORIZONTAL #define wxRA_VERTICAL wxVERTICAL +#define wxRA_USE_CHECKBOX 0x0010 /* alternative native subcontrols (wxPalmOS) */ /* * wxRadioButton style flag */ #define wxRB_GROUP 0x0004 #define wxRB_SINGLE 0x0008 - -/* - * wxSlider flags - */ -#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_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 wxSL_RIGHT 0x0100 -#define wxSL_BOTTOM 0x0200 -#define wxSL_BOTH 0x0400 -#define wxSL_SELRANGE 0x0800 +#define wxRB_USE_CHECKBOX 0x0010 /* alternative native control (wxPalmOS) */ /* * wxScrollBar flags @@ -1296,16 +1655,6 @@ enum wxBorder #define wxSP_ARROW_KEYS 0x1000 #define wxSP_WRAP 0x2000 -/* - * wxNotebook flags - */ -#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 */ @@ -1315,19 +1664,14 @@ enum wxBorder #define wxTC_LEFT 0x0020 #define wxTC_RIGHT 0x0040 #define wxTC_BOTTOM 0x0080 -#define wxTC_MULTILINE wxNB_MULTILINE -#define wxTC_OWNERDRAW 0x0200 +#define wxTC_MULTILINE 0x0200 /* == wxNB_MULTILINE */ +#define wxTC_OWNERDRAW 0x0400 /* * wxStatusBar95 flags */ #define wxST_SIZEGRIP 0x0010 -/* - * wxStaticText flags - */ -#define wxST_NO_AUTORESIZE 0x0001 - /* * wxStaticBitmap flags */ @@ -1339,24 +1683,6 @@ enum wxBorder #define wxLI_HORIZONTAL wxHORIZONTAL #define wxLI_VERTICAL wxVERTICAL -/* - * wxProgressDialog 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 -/* 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 - -/* - * wxDirDialog styles - */ - -#define wxDD_NEW_DIR_BUTTON 0x0080 /* * extended dialog specifiers. these values are stored in a different @@ -1371,6 +1697,8 @@ enum wxBorder #define wxNO 0x00000008 #define wxYES_NO (wxYES | wxNO) #define wxCANCEL 0x00000010 +#define wxAPPLY 0x00000020 +#define wxCLOSE 0x00000040 #define wxYES_DEFAULT 0x00000000 /* has no effect (default) */ #define wxNO_DEFAULT 0x00000080 @@ -1392,26 +1720,46 @@ enum wxBorder #define wxMORE 0x00010000 #define wxSETUP 0x00020000 -/* ---------------------------------------------------------------------------- */ -/* standard IDs */ -/* ---------------------------------------------------------------------------- */ +/* + * Background styles. See wxWindow::SetBackgroundStyle + */ -/* any id: means that we don't care about the id, whether when installing an */ -/* event handler or when creating a new window */ -enum +enum wxBackgroundStyle { - wxID_ANY = -1 + wxBG_STYLE_SYSTEM, + wxBG_STYLE_COLOUR, + wxBG_STYLE_CUSTOM }; -/* id for a separator line in the menu (invalid for normal item) */ -enum +/* + * Key types used by (old style) lists and hashes. + */ +enum wxKeyType { - wxID_SEPARATOR = -2 + wxKEY_NONE, + wxKEY_INTEGER, + wxKEY_STRING }; +/* ---------------------------------------------------------------------------- */ +/* standard IDs */ +/* ---------------------------------------------------------------------------- */ + /* Standard menu IDs */ enum { + /* no id matches this one when compared to it */ + wxID_NONE = -3, + + /* id for a separator line in the menu (invalid for normal item) */ + wxID_SEPARATOR = -2, + + /* any id: means that we don't care about the id, whether when installing + * an event handler or when creating a new window */ + wxID_ANY = -1, + + + /* all predefined ids are between wxID_LOWEST and wxID_HIGHEST */ wxID_LOWEST = 4999, wxID_OPEN, @@ -1426,16 +1774,20 @@ enum wxID_HELP, wxID_PRINT, wxID_PRINT_SETUP, + wxID_PAGE_SETUP, wxID_PREVIEW, wxID_ABOUT, wxID_HELP_CONTENTS, + wxID_HELP_INDEX, + wxID_HELP_SEARCH, wxID_HELP_COMMANDS, wxID_HELP_PROCEDURES, wxID_HELP_CONTEXT, wxID_CLOSE_ALL, - wxID_PREFERENCES , + wxID_PREFERENCES, - wxID_CUT = 5030, + wxID_EDIT = 5030, + wxID_CUT, wxID_COPY, wxID_PASTE, wxID_CLEAR, @@ -1456,7 +1808,8 @@ enum wxID_VIEW_SORTSIZE, wxID_VIEW_SORTTYPE, - wxID_FILE1 = 5050, + wxID_FILE = 5050, + wxID_FILE1, wxID_FILE2, wxID_FILE3, wxID_FILE4, @@ -1466,7 +1819,7 @@ enum wxID_FILE8, wxID_FILE9, - /* Standard button IDs */ + /* Standard button and menu IDs */ wxID_OK = 5100, wxID_CANCEL, wxID_APPLY, @@ -1485,6 +1838,31 @@ enum wxID_ABORT, wxID_RETRY, wxID_IGNORE, + wxID_ADD, + wxID_REMOVE, + + wxID_UP, + wxID_DOWN, + wxID_HOME, + wxID_REFRESH, + wxID_STOP, + wxID_INDEX, + + wxID_BOLD, + wxID_ITALIC, + wxID_JUSTIFY_CENTER, + wxID_JUSTIFY_FILL, + wxID_JUSTIFY_RIGHT, + wxID_JUSTIFY_LEFT, + wxID_UNDERLINE, + wxID_INDENT, + wxID_UNINDENT, + wxID_ZOOM_100, + wxID_ZOOM_FIT, + wxID_ZOOM_IN, + wxID_ZOOM_OUT, + wxID_UNDELETE, + wxID_REVERT_TO_SAVED, /* System menu IDs (used by wxUniv): */ wxID_SYSTEM_MENU = 5200, @@ -1512,6 +1890,7 @@ enum wxItemKind wxITEM_NORMAL, wxITEM_CHECK, wxITEM_RADIO, + wxITEM_DROPDOWN, wxITEM_MAX }; @@ -1558,6 +1937,8 @@ enum wxHitTest #define wxSIZE_ALLOW_MINUS_ONE 0x0004 /* Don't do parent client adjustments (for implementation only) */ #define wxSIZE_NO_ADJUSTMENTS 0x0008 +/* Change the window position even if it seems to be already correct */ +#define wxSIZE_FORCE 0x0010 /* ---------------------------------------------------------------------------- */ /* GDI descriptions */ @@ -1601,12 +1982,15 @@ enum 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, - wxCROSSDIAG_HATCH, - wxFDIAGONAL_HATCH, - wxCROSS_HATCH, + + wxBDIAGONAL_HATCH, /* In wxWidgets < 2.6 use WX_HATCH macro */ + wxCROSSDIAG_HATCH, /* to verify these wx*_HATCH are in style */ + wxFDIAGONAL_HATCH, /* of wxBrush. In wxWidgets >= 2.6 use */ + wxCROSS_HATCH, /* wxBrush::IsHatch() instead. */ wxHORIZONTAL_HATCH, wxVERTICAL_HATCH, + wxFIRST_HATCH = wxBDIAGONAL_HATCH, + wxLAST_HATCH = wxVERTICAL_HATCH, wxJOIN_BEVEL = 120, wxJOIN_MITER, @@ -1617,28 +2001,25 @@ enum wxCAP_BUTT }; -/* VZ: why doesn't it start with "wx"? FIXME */ -#define IS_HATCH(s) ((s)>=wxBDIAGONAL_HATCH && (s)<=wxVERTICAL_HATCH) - /* Logical ops */ typedef enum { - 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 */ + 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 */ @@ -1664,7 +2045,7 @@ enum wxTOOL_RIGHT }; -/* the values of the format constants should be the same as correspondign */ +/* the values of the format constants should be the same as corresponding */ /* CF_XXX constants in Windows API */ enum wxDataFormatId { @@ -1700,6 +2081,9 @@ enum wxKeyCode WXK_SPACE = 32, WXK_DELETE = 127, + /* These are, by design, not compatible with unicode characters. + If you want to get a unicode character from a key event, use + wxKeyEvent::GetUnicodeKey instead. */ WXK_START = 300, WXK_LBUTTON, WXK_RBUTTON, @@ -1712,8 +2096,6 @@ enum wxKeyCode WXK_MENU, WXK_PAUSE, WXK_CAPITAL, - WXK_PRIOR, /* Page up */ - WXK_NEXT, /* Page down */ WXK_END, WXK_HOME, WXK_LEFT, @@ -1770,6 +2152,10 @@ enum wxKeyCode WXK_SCROLL, WXK_PAGEUP, WXK_PAGEDOWN, +#if WXWIN_COMPATIBILITY_2_6 + WXK_PRIOR = WXK_PAGEUP, + WXK_NEXT = WXK_PAGEDOWN, +#endif WXK_NUMPAD_SPACE, WXK_NUMPAD_TAB, @@ -1783,10 +2169,12 @@ enum wxKeyCode WXK_NUMPAD_UP, WXK_NUMPAD_RIGHT, WXK_NUMPAD_DOWN, - WXK_NUMPAD_PRIOR, WXK_NUMPAD_PAGEUP, - WXK_NUMPAD_NEXT, WXK_NUMPAD_PAGEDOWN, +#if WXWIN_COMPATIBILITY_2_6 + WXK_NUMPAD_PRIOR = WXK_NUMPAD_PAGEUP, + WXK_NUMPAD_NEXT = WXK_NUMPAD_PAGEDOWN, +#endif WXK_NUMPAD_END, WXK_NUMPAD_BEGIN, WXK_NUMPAD_INSERT, @@ -1802,19 +2190,48 @@ enum wxKeyCode WXK_WINDOWS_LEFT, WXK_WINDOWS_RIGHT, WXK_WINDOWS_MENU , - WXK_COMMAND + WXK_COMMAND, + + /* Hardware-specific buttons */ + WXK_SPECIAL1 = 193, + WXK_SPECIAL2, + WXK_SPECIAL3, + WXK_SPECIAL4, + WXK_SPECIAL5, + WXK_SPECIAL6, + WXK_SPECIAL7, + WXK_SPECIAL8, + WXK_SPECIAL9, + WXK_SPECIAL10, + WXK_SPECIAL11, + WXK_SPECIAL12, + WXK_SPECIAL13, + WXK_SPECIAL14, + WXK_SPECIAL15, + WXK_SPECIAL16, + WXK_SPECIAL17, + WXK_SPECIAL18, + WXK_SPECIAL19, + WXK_SPECIAL20 }; -#if wxUSE_HOTKEY -enum wxHotkeyModifier +/* This enum contains bit mask constants used in wxKeyEvent */ +enum wxKeyModifier { - wxMOD_NONE = 0, - wxMOD_ALT = 1, - wxMOD_CONTROL = 2, - wxMOD_SHIFT = 4, - wxMOD_WIN = 8 -}; + wxMOD_NONE = 0x0000, + wxMOD_ALT = 0x0001, + wxMOD_CONTROL = 0x0002, + wxMOD_ALTGR = wxMOD_ALT | wxMOD_CONTROL, + wxMOD_SHIFT = 0x0004, + wxMOD_META = 0x0008, + wxMOD_WIN = wxMOD_META, +#if defined(__WXMAC__) || defined(__WXCOCOA__) + wxMOD_CMD = wxMOD_META, +#else + wxMOD_CMD = wxMOD_CONTROL, #endif + wxMOD_ALL = 0xffff +}; /* Mapping modes (same values as used by Windows, don't change) */ enum @@ -1904,8 +2321,58 @@ typedef enum wxPAPER_B5_EXTRA, /* B5 (ISO) Extra 201 x 276 mm */ wxPAPER_A2, /* A2 420 x 594 mm */ wxPAPER_A3_TRANSVERSE, /* A3 Transverse 297 x 420 mm */ - wxPAPER_A3_EXTRA_TRANSVERSE /* A3 Extra Transverse 322 x 445 mm */ - + wxPAPER_A3_EXTRA_TRANSVERSE, /* A3 Extra Transverse 322 x 445 mm */ + + wxPAPER_DBL_JAPANESE_POSTCARD,/* Japanese Double Postcard 200 x 148 mm */ + wxPAPER_A6, /* A6 105 x 148 mm */ + wxPAPER_JENV_KAKU2, /* Japanese Envelope Kaku #2 */ + wxPAPER_JENV_KAKU3, /* Japanese Envelope Kaku #3 */ + wxPAPER_JENV_CHOU3, /* Japanese Envelope Chou #3 */ + wxPAPER_JENV_CHOU4, /* Japanese Envelope Chou #4 */ + wxPAPER_LETTER_ROTATED, /* Letter Rotated 11 x 8 1/2 in */ + wxPAPER_A3_ROTATED, /* A3 Rotated 420 x 297 mm */ + wxPAPER_A4_ROTATED, /* A4 Rotated 297 x 210 mm */ + wxPAPER_A5_ROTATED, /* A5 Rotated 210 x 148 mm */ + wxPAPER_B4_JIS_ROTATED, /* B4 (JIS) Rotated 364 x 257 mm */ + wxPAPER_B5_JIS_ROTATED, /* B5 (JIS) Rotated 257 x 182 mm */ + wxPAPER_JAPANESE_POSTCARD_ROTATED,/* Japanese Postcard Rotated 148 x 100 mm */ + wxPAPER_DBL_JAPANESE_POSTCARD_ROTATED,/* Double Japanese Postcard Rotated 148 x 200 mm */ + wxPAPER_A6_ROTATED, /* A6 Rotated 148 x 105 mm */ + wxPAPER_JENV_KAKU2_ROTATED, /* Japanese Envelope Kaku #2 Rotated */ + wxPAPER_JENV_KAKU3_ROTATED, /* Japanese Envelope Kaku #3 Rotated */ + wxPAPER_JENV_CHOU3_ROTATED, /* Japanese Envelope Chou #3 Rotated */ + wxPAPER_JENV_CHOU4_ROTATED, /* Japanese Envelope Chou #4 Rotated */ + wxPAPER_B6_JIS, /* B6 (JIS) 128 x 182 mm */ + wxPAPER_B6_JIS_ROTATED, /* B6 (JIS) Rotated 182 x 128 mm */ + wxPAPER_12X11, /* 12 x 11 in */ + wxPAPER_JENV_YOU4, /* Japanese Envelope You #4 */ + wxPAPER_JENV_YOU4_ROTATED, /* Japanese Envelope You #4 Rotated */ + wxPAPER_P16K, /* PRC 16K 146 x 215 mm */ + wxPAPER_P32K, /* PRC 32K 97 x 151 mm */ + wxPAPER_P32KBIG, /* PRC 32K(Big) 97 x 151 mm */ + wxPAPER_PENV_1, /* PRC Envelope #1 102 x 165 mm */ + wxPAPER_PENV_2, /* PRC Envelope #2 102 x 176 mm */ + wxPAPER_PENV_3, /* PRC Envelope #3 125 x 176 mm */ + wxPAPER_PENV_4, /* PRC Envelope #4 110 x 208 mm */ + wxPAPER_PENV_5, /* PRC Envelope #5 110 x 220 mm */ + wxPAPER_PENV_6, /* PRC Envelope #6 120 x 230 mm */ + wxPAPER_PENV_7, /* PRC Envelope #7 160 x 230 mm */ + wxPAPER_PENV_8, /* PRC Envelope #8 120 x 309 mm */ + wxPAPER_PENV_9, /* PRC Envelope #9 229 x 324 mm */ + wxPAPER_PENV_10, /* PRC Envelope #10 324 x 458 mm */ + wxPAPER_P16K_ROTATED, /* PRC 16K Rotated */ + wxPAPER_P32K_ROTATED, /* PRC 32K Rotated */ + wxPAPER_P32KBIG_ROTATED, /* PRC 32K(Big) Rotated */ + wxPAPER_PENV_1_ROTATED, /* PRC Envelope #1 Rotated 165 x 102 mm */ + wxPAPER_PENV_2_ROTATED, /* PRC Envelope #2 Rotated 176 x 102 mm */ + wxPAPER_PENV_3_ROTATED, /* PRC Envelope #3 Rotated 176 x 125 mm */ + wxPAPER_PENV_4_ROTATED, /* PRC Envelope #4 Rotated 208 x 110 mm */ + wxPAPER_PENV_5_ROTATED, /* PRC Envelope #5 Rotated 220 x 110 mm */ + wxPAPER_PENV_6_ROTATED, /* PRC Envelope #6 Rotated 230 x 120 mm */ + wxPAPER_PENV_7_ROTATED, /* PRC Envelope #7 Rotated 230 x 160 mm */ + wxPAPER_PENV_8_ROTATED, /* PRC Envelope #8 Rotated 309 x 120 mm */ + wxPAPER_PENV_9_ROTATED, /* PRC Envelope #9 Rotated 324 x 229 mm */ + wxPAPER_PENV_10_ROTATED /* PRC Envelope #10 Rotated 458 x 324 m */ } wxPaperSize; /* Printing orientation */ @@ -1975,8 +2442,22 @@ enum wxUpdateUI # define wxALL_FILES gettext_noop("All files (*)|*") #endif +#if defined(__CYGWIN__) && defined(__WXMSW__) +# if wxUSE_STL || defined(wxUSE_STD_STRING) + /* + NASTY HACK because the gethostname in sys/unistd.h which the gnu + stl includes and wx builds with by default clash with each other + (windows version 2nd param is int, sys/unistd.h version is unsigned + int). + */ +# define gethostname gethostnameHACK +# include +# undef gethostname +# endif +#endif + /* --------------------------------------------------------------------------- */ -/* macros that enable wxWindows apps to be compiled in absence of the */ +/* macros that enable wxWidgets 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 */ /* --------------------------------------------------------------------------- */ @@ -1986,9 +2467,8 @@ enum wxUpdateUI #define WX_OPAQUE_TYPE( name ) struct wxOpaque##name typedef unsigned char WXCOLORREF[6]; +typedef void* WXCGIMAGEREF; typedef void* WXHBITMAP; -typedef void* WXHMETAFILE; -typedef void* WXHICON; typedef void* WXHCURSOR; typedef void* WXHRGN; typedef void* WXRECTPTR; @@ -2004,9 +2484,12 @@ typedef unsigned int WXUINT; typedef unsigned long WXDWORD; typedef unsigned short WXWORD; +typedef WX_OPAQUE_TYPE(CIconHandle ) * WXHICON ; +typedef WX_OPAQUE_TYPE(PicHandle ) * WXHMETAFILE ; + -//typedef void* WXWidget; -//typedef void* WXWindow; +/* typedef void* WXWidget; */ +/* typedef void* WXWindow; */ typedef WX_OPAQUE_TYPE(ControlRef ) * WXWidget ; typedef WX_OPAQUE_TYPE(WindowRef) * WXWindow ; typedef void* WXDisplay; @@ -2044,6 +2527,36 @@ typedef void* WXDisplay; #ifdef __WXCOCOA__ +/* Definitions of 32-bit/64-bit types + * These are typedef'd exactly the same way in newer OS X headers so + * redefinition when real headers are included should not be a problem. If + * it is, the types are being defined wrongly here. + * The purpose of these types is so they can be used from public wx headers. + * and also because the older (pre-Leopard) headers don't define them. + */ + +/* NOTE: We don't pollute namespace with CGFLOAT_MIN/MAX/IS_DOUBLE macros + * since they are unlikely to be needed in a public header. + */ +#if defined(__LP64__) && __LP64__ + typedef double CGFloat; +#else + typedef float CGFloat; +#endif + +#if (defined(__LP64__) && __LP64__) || (defined(NS_BUILD_32_LIKE_64) && NS_BUILD_32_LIKE_64) +typedef long NSInteger; +typedef unsigned long NSUInteger; +#else +typedef int NSInteger; +typedef unsigned int NSUInteger; +#endif + +/* Objective-C type declarations. + * These are to be used in public headers in lieu of NSSomething* because + * Objective-C class names are not available in C/C++ code. + */ + /* NOTE: This ought to work with other compilers too, but I'm being cautious */ #if (defined(__GNUC__) && defined(__APPLE__)) || defined(__MWERKS__) /* It's desirable to have type safety for Objective-C(++) code as it does @@ -2069,8 +2582,8 @@ typedef struct klass *WX_##klass #warning "Objective-C types will not be checked by the compiler." /* NOTE: typedef struct objc_object *id; */ /* IOW, we're declaring these using the id type without using that name, */ -/* since "id" is used extensively not only within wxWindows itself, but */ -/* also in wxWindows application code. The following works fine when */ +/* since "id" is used extensively not only within wxWidgets itself, but */ +/* also in wxWidgets application code. The following works fine when */ /* compiling C(++) code, and works without typesafety for Obj-C(++) code */ #define DECLARE_WXCOCOA_OBJC_CLASS(klass) \ typedef struct objc_object *WX_##klass @@ -2082,16 +2595,23 @@ DECLARE_WXCOCOA_OBJC_CLASS(NSBitmapImageRep); DECLARE_WXCOCOA_OBJC_CLASS(NSBox); DECLARE_WXCOCOA_OBJC_CLASS(NSButton); DECLARE_WXCOCOA_OBJC_CLASS(NSColor); +DECLARE_WXCOCOA_OBJC_CLASS(NSColorPanel); DECLARE_WXCOCOA_OBJC_CLASS(NSControl); +DECLARE_WXCOCOA_OBJC_CLASS(NSCursor); DECLARE_WXCOCOA_OBJC_CLASS(NSEvent); +DECLARE_WXCOCOA_OBJC_CLASS(NSFontPanel); DECLARE_WXCOCOA_OBJC_CLASS(NSImage); DECLARE_WXCOCOA_OBJC_CLASS(NSLayoutManager); DECLARE_WXCOCOA_OBJC_CLASS(NSMenu); +DECLARE_WXCOCOA_OBJC_CLASS(NSMenuExtra); DECLARE_WXCOCOA_OBJC_CLASS(NSMenuItem); DECLARE_WXCOCOA_OBJC_CLASS(NSMutableArray); DECLARE_WXCOCOA_OBJC_CLASS(NSNotification); +DECLARE_WXCOCOA_OBJC_CLASS(NSObject); DECLARE_WXCOCOA_OBJC_CLASS(NSPanel); DECLARE_WXCOCOA_OBJC_CLASS(NSScrollView); +DECLARE_WXCOCOA_OBJC_CLASS(NSSound); +DECLARE_WXCOCOA_OBJC_CLASS(NSStatusItem); DECLARE_WXCOCOA_OBJC_CLASS(NSTableColumn); DECLARE_WXCOCOA_OBJC_CLASS(NSTableView); DECLARE_WXCOCOA_OBJC_CLASS(NSTextContainer); @@ -2100,10 +2620,46 @@ DECLARE_WXCOCOA_OBJC_CLASS(NSTextStorage); DECLARE_WXCOCOA_OBJC_CLASS(NSThread); DECLARE_WXCOCOA_OBJC_CLASS(NSWindow); DECLARE_WXCOCOA_OBJC_CLASS(NSView); -typedef WX_NSView WXWidget; /* wxWindows BASE definition */ +typedef WX_NSView WXWidget; /* wxWidgets BASE definition */ #endif /* __WXCOCOA__ */ -#ifdef __WXMSW__ +#if defined(__WXPALMOS__) + +typedef void * WXHWND; +typedef void * WXHANDLE; +typedef void * WXHICON; +typedef void * WXHFONT; +typedef void * WXHMENU; +typedef void * WXHPEN; +typedef void * WXHBRUSH; +typedef void * WXHPALETTE; +typedef void * WXHCURSOR; +typedef void * WXHRGN; +typedef void * WXHACCEL; +typedef void * WXHINSTANCE; +typedef void * WXHBITMAP; +typedef void * WXHIMAGELIST; +typedef void * WXHGLOBAL; +typedef void * WXHDC; +typedef unsigned int WXUINT; +typedef unsigned long WXDWORD; +typedef unsigned short WXWORD; + +typedef unsigned long WXCOLORREF; +typedef struct tagMSG WXMSG; + +typedef WXHWND WXWINHANDLE; /* WinHandle of PalmOS */ +typedef WXWINHANDLE WXWidget; + +typedef void * WXFORMPTR; +typedef void * WXEVENTPTR; +typedef void * WXRECTANGLEPTR; + +#endif /* __WXPALMOS__ */ + + +/* ABX: check __WIN32__ instead of __WXMSW__ for the same MSWBase in any Win32 port */ +#if defined(__WIN32__) /* the keywords needed for WinMain() declaration */ #ifndef WXFAR @@ -2121,6 +2677,7 @@ typedef void * WXHBRUSH; typedef void * WXHPALETTE; typedef void * WXHCURSOR; typedef void * WXHRGN; +typedef void * WXRECTPTR; typedef void * WXHACCEL; typedef void WXFAR * WXHINSTANCE; typedef void * WXHBITMAP; @@ -2133,7 +2690,7 @@ typedef unsigned short WXWORD; typedef unsigned long WXCOLORREF; typedef void * WXRGNDATA; -typedef void * WXMSG; +typedef struct tagMSG WXMSG; typedef void * WXHCONV; typedef void * WXHKEY; typedef void * WXHTREEITEM; @@ -2154,14 +2711,19 @@ typedef long WXLPARAM; typedef long WXLRESULT; #endif -#if !defined(__WIN32__) || defined(__GNUWIN32__) || defined(__WXMICROWIN__) +#if defined(__GNUWIN32__) || defined(__WXMICROWIN__) typedef int (*WXFARPROC)(); #else typedef int (__stdcall *WXFARPROC)(); #endif -#endif /* __WXMSW__ */ +#endif /* __WIN32__ */ +#if defined(__OS2__) +typedef unsigned long DWORD; +typedef unsigned short WORD; +#endif + #if defined(__WXPM__) || defined(__EMX__) #ifdef __WXPM__ /* Stand-ins for OS/2 types, to avoid #including all of os2.h */ @@ -2222,23 +2784,18 @@ typedef unsigned long HCURSOR; typedef unsigned long HINSTANCE; typedef unsigned long HIMAGELIST; typedef unsigned long HGLOBAL; -typedef unsigned long DWORD; -typedef unsigned short WORD; #endif /* WXPM || EMX */ #if defined (__WXPM__) /* 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 */ -/* 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)) -#define GetGValue(rgb) ((BYTE)(((WORD)(rgb)) >> 8)) -#define GetRValue(rgb) ((BYTE)(rgb)) +#define GetRValue(rgb) ((unsigned char)((rgb) >> 16)) +#define GetGValue(rgb) ((unsigned char)(((unsigned short)(rgb)) >> 8)) +#define GetBValue(rgb) ((unsigned char)(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 */ @@ -2286,12 +2843,14 @@ typedef void* WXRegion; typedef void* WXFont; typedef void* WXImage; typedef void* WXFontList; +typedef void* WXFontSet; typedef void* WXRendition; typedef void* WXRenderTable; typedef void* WXFontType; /* either a XmFontList or XmRenderTable */ typedef void* WXString; typedef unsigned long Atom; /* this might fail on a few architectures */ +typedef long WXPixel; /* safety catch in src/motif/colour.cpp */ #endif /* Motif */ @@ -2336,7 +2895,7 @@ typedef struct _GdkICAttr GdkICAttr; /* Stand-ins for GTK types */ typedef struct _GtkWidget GtkWidget; -typedef struct _GtkStyle GtkStyle; +typedef struct _GtkRcStyle GtkRcStyle; typedef struct _GtkAdjustment GtkAdjustment; typedef struct _GtkList GtkList; typedef struct _GtkToolbar GtkToolbar; @@ -2346,6 +2905,9 @@ typedef struct _GtkNotebookPage GtkNotebookPage; typedef struct _GtkAccelGroup GtkAccelGroup; typedef struct _GtkItemFactory GtkItemFactory; typedef struct _GtkSelectionData GtkSelectionData; +typedef struct _GtkTextBuffer GtkTextBuffer; +typedef struct _GtkRange GtkRange; +typedef struct _GtkCellRenderer GtkCellRenderer; typedef GtkWidget *WXWidget; @@ -2354,11 +2916,6 @@ typedef GtkWidget *WXWidget; #define GTK_CLASS_TYPE(klass) ((klass)->type) #endif -#ifdef __WXGTK20__ -/* Input method thing */ -typedef struct _GtkIMMulticontext GtkIMMulticontext; -#endif /* __WXGTK20__ */ - #endif /* __WXGTK__ */ #if defined(__WXGTK20__) || (defined(__WXX11__) && wxUSE_UNICODE) @@ -2378,9 +2935,15 @@ typedef struct _PangoFontDescription PangoFontDescription; typedef struct window_t *WXWidget; #endif /* MGL */ +#ifdef __WXDFB__ +/* DirectFB doesn't have the concept of non-TLW window, so use + something arbitrary */ +typedef const void* WXWidget; +#endif /* DFB */ + /* 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. */ +/* included before or after wxWidgets classes, and therefore must be */ +/* disabled here before any significant wxWidgets headers are included. */ #ifdef __WXMSW__ #ifdef GetClassInfo #undef GetClassInfo @@ -2412,6 +2975,10 @@ typedef struct window_t *WXWidget; #endif /* __WXMSW__ */ + +/* include the feature test macros */ +#include "wx/features.h" + /* --------------------------------------------------------------------------- */ /* macro to define a class without copy ctor nor assignment operator */ /* --------------------------------------------------------------------------- */ @@ -2425,5 +2992,32 @@ typedef struct window_t *WXWidget; private: \ classname& operator=(const classname&); +/* --------------------------------------------------------------------------- */ +/* If a manifest is being automatically generated, add common controls 6 to it */ +/* --------------------------------------------------------------------------- */ + +#if (!defined wxUSE_NO_MANIFEST || wxUSE_NO_MANIFEST == 0 ) && \ + ( defined _MSC_FULL_VER && _MSC_FULL_VER >= 140040130 ) + +#define WX_CC_MANIFEST(cpu) \ + "/manifestdependency:\"type='win32' \ + name='Microsoft.Windows.Common-Controls' \ + version='6.0.0.0' \ + processorArchitecture='"cpu"' \ + publicKeyToken='6595b64144ccf1df' \ + language='*'\"" + +#if defined _M_IX86 + #pragma comment(linker, WX_CC_MANIFEST("x86")) +#elif defined _M_X64 + #pragma comment(linker, WX_CC_MANIFEST("amd64")) +#elif defined _M_IA64 + #pragma comment(linker, WX_CC_MANIFEST("ia64")) +#else + #pragma comment(linker, WX_CC_MANIFEST("*")) +#endif + +#endif /* !wxUSE_NO_MANIFEST && _MSC_FULL_VER >= 140040130 */ + #endif /* _WX_DEFS_H_ */