#pragma interface "defs.h"
#endif
-
-// needed to handle strings with xgettext:
-#ifndef gettext_noop
-# define gettext_noop(x) x
-#endif
-
// ----------------------------------------------------------------------------
// compiler and OS identification
// ----------------------------------------------------------------------------
-// OS
+// OS: first test for generic Unix defines, then for particular flavours and
+// finally for Unix-like systems
#if defined(__unix) || defined(__unix__) || defined(____SVR4____) || \
- defined(__LINUX__) || defined(__sgi ) || \
+ defined(__LINUX__) || defined(__sgi) || \
defined(__hpux) || defined(sun) || defined(__SUN__) || defined(_AIX) || \
- defined(__EMX__)
+ defined(__EMX__) || defined(__VMS) || defined(__BEOS__)
#define __UNIX_LIKE__
// Digital Unix C++ compiler only defines this symbol for .cxx and .hxx files,
// so define it ourselves
#ifdef __DECCXX
- #define __cplusplus
+#ifndef __VMS
+# define __cplusplus
+#endif
#endif // __DECCXX
// Resolves linking problems under HP-UX
#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
#define __HPUX__
#endif // HP-UX
-// if we're on a Unixsystem but didn't use configure (so that setup.h didn't
+// if we're on a Unix system but didn't use configure (so that setup.h didn't
// define __UNIX__), do define __UNIX__ now
#if !defined(__UNIX__) && defined(__UNIX_LIKE__)
#define __UNIX__
// NB: of course, this doesn't replace the standard type, because, for
// example, overloading based on bool/int parameter doesn't work and
// so should be avoided in portable programs
- typedef unsigned int bool;
+#ifndef VMS
+typedef unsigned int bool;
+#endif
#endif // bool
typedef short int WXTYPE;
#define WXUNUSED(identifier) identifier
#endif
+// some arguments are only used in debug mode, but unused in release one
+#ifdef __WXDEBUG__
+ #define WXUNUSED_UNLESS_DEBUG(param) param
+#else
+ #define WXUNUSED_UNLESS_DEBUG(param) WXUNUSED(param)
+#endif
+
// ----------------------------------------------------------------------------
// portable calling conventions macros
// ----------------------------------------------------------------------------
// wxCALLBACK should be used for the functions which are called back by
// Windows (such as compare function for wxListCtrl)
-#if defined(__WXMSW__)
+#if defined(__WIN32__)
#if defined(__MINGW32__) || defined(__GNUWIN32__)
#define wxCALLBACK __attribute__((stdcall))
#else
#define wxCALLBACK _stdcall
#endif
#else
- // no stdcall under Unix
+ // no stdcall under Unix nor Win16
#define wxCALLBACK
#endif // platform
// Not all platforms are currently available or supported
enum
{
- wxUNKNOWN_PLATFORM,
- wxCURSES, // Text-only CURSES
- wxXVIEW_X, // Sun's XView OpenLOOK toolkit
- wxMOTIF_X, // OSF Motif 1.x.x
- wxCOSE_X, // OSF Common Desktop Environment
- wxNEXTSTEP, // NeXTStep
- wxMACINTOSH, // Apple System 7 and 8
- wxBEOS, // BeOS
- wxGTK, // GTK on X
- wxGTK_WIN32, // GTK on Win32
- wxGTK_OS2, // GTK on OS/2
- wxGTK_BEOS, // GTK on BeOS
- wxQT, // Qt
- wxGEOS, // GEOS
- wxOS2_PM, // OS/2 Workplace
- wxWINDOWS, // Windows or WfW
- wxPENWINDOWS, // Windows for Pen Computing
- wxWINDOWS_NT, // Windows NT
- wxWIN32S, // Windows 32S API
- wxWIN95, // Windows 95
- wxWIN386, // Watcom 32-bit supervisor modus
- wxMGL_UNIX, // MGL with direct hardware access
- wxMGL_X, // MGL on X
- wxMGL_WIN32, // MGL on Win32
- wxMGL_OS2, // MGL on OS/2
- wxWINDOWS_OS2 // Native OS/2 PM
+ wxUNKNOWN_PLATFORM,
+ wxCURSES, // Text-only CURSES
+ wxXVIEW_X, // Sun's XView OpenLOOK toolkit
+ wxMOTIF_X, // OSF Motif 1.x.x
+ wxCOSE_X, // OSF Common Desktop Environment
+ wxNEXTSTEP, // NeXTStep
+ wxMACINTOSH, // Apple System 7 and 8
+ wxBEOS, // BeOS
+ wxGTK, // GTK on X
+ wxGTK_WIN32, // GTK on Win32
+ wxGTK_OS2, // GTK on OS/2
+ wxGTK_BEOS, // GTK on BeOS
+ wxQT, // Qt
+ wxGEOS, // GEOS
+ wxOS2_PM, // OS/2 Workplace
+ wxWINDOWS, // Windows or WfW
+ wxPENWINDOWS, // Windows for Pen Computing
+ wxWINDOWS_NT, // Windows NT
+ wxWIN32S, // Windows 32S API
+ wxWIN95, // Windows 95
+ wxWIN386, // Watcom 32-bit supervisor modus
+ wxMGL_UNIX, // MGL with direct hardware access
+ wxMGL_X, // MGL on X
+ wxMGL_WIN32, // MGL on Win32
+ wxMGL_OS2, // MGL on OS/2
+ wxWINDOWS_OS2 // Native OS/2 PM
};
// ----------------------------------------------------------------------------
#define wxByte wxUint8
#define wxWord wxUint16
+// base floating point types
+// wxFloat32 : 32 bit IEEE float ( 1 sign , 8 exponent bits , 23 fraction bits
+// wxFloat64 : 64 bit IEEE float ( 1 sign , 11 exponent bits , 52 fraction bits
+// wxDouble : native fastest representation that has at least wxFloat64
+// precision, so use the IEEE types for storage , and this for calculations
+
+typedef float wxFloat32 ;
+#if defined( __WXMAC__ ) && defined (__MWERKS__)
+ typedef short double wxFloat64;
+#else
+ typedef double wxFloat64;
+#endif
+
+#if defined( __WXMAC__ ) && !defined( __POWERPC__ )
+ typedef long double wxDouble;
+#else
+ typedef double wxDouble ;
+#endif
+
// ----------------------------------------------------------------------------
// byte ordering related definition and macros
// ----------------------------------------------------------------------------
// byte swapping
+#if defined (__MWERKS__) && ( (__MWERKS__ < 0x0900) || macintosh )
+// assembler versions for these
+#ifdef __POWERPC__
+ inline wxUint16 wxUINT16_SWAP_ALWAYS( wxUint16 i )
+ {return (__lhbrx( &i , 0 ) ) ;}
+ inline wxInt16 wxINT16_SWAP_ALWAYS( wxInt16 i )
+ {return (__lhbrx( &i , 0 ) ) ;}
+ inline wxUint32 wxUINT32_SWAP_ALWAYS( wxUint32 i )
+ {return (__lwbrx( &i , 0 ) ) ;}
+ inline wxInt32 wxINT32_SWAP_ALWAYS( wxInt32 i )
+ {return (__lwbrx( &i , 0 ) ) ;}
+#else
+ #pragma parameter __D0 wxUINT16_SWAP_ALWAYS(__D0)
+ pascal wxUint16 wxUINT16_SWAP_ALWAYS(wxUint16 value)
+ = { 0xE158 };
+
+ #pragma parameter __D0 wxINT16_SWAP_ALWAYS(__D0)
+ pascal wxInt16 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 };
+
+#endif
+#else // !MWERKS
#define wxUINT16_SWAP_ALWAYS(val) \
((wxUint16) ( \
(((wxUint16) (val) & (wxUint16) 0x00ffU) << 8) | \
(((wxUint32) (val) & (wxUint32) 0x0000ff00U) << 8) | \
(((wxUint32) (val) & (wxUint32) 0x00ff0000U) >> 8) | \
(((wxUint32) (val) & (wxUint32) 0xff000000U) >> 24)))
-
+#endif
// machine specific byte swapping
#ifdef WORDS_BIGENDIAN
enum wxAlignment
{
wxALIGN_NOT = 0x0000,
- wxALIGN_CENTER = 0x0100,
- wxALIGN_CENTRE = wxALIGN_CENTER,
+ wxALIGN_CENTER_HORIZONTAL = 0x0100,
+ wxALIGN_CENTRE_HORIZONTAL = wxALIGN_CENTER_HORIZONTAL,
wxALIGN_LEFT = wxALIGN_NOT,
wxALIGN_TOP = wxALIGN_NOT,
wxALIGN_RIGHT = 0x0200,
- wxALIGN_BOTTOM = 0x0400
+ wxALIGN_BOTTOM = 0x0400,
+ wxALIGN_CENTER_VERTICAL = 0x0800,
+ wxALIGN_CENTRE_VERTICAL = wxALIGN_CENTER_VERTICAL,
+
+ wxALIGN_CENTER = (wxALIGN_CENTER_HORIZONTAL | wxALIGN_CENTER_VERTICAL),
+ wxALIGN_CENTRE = wxALIGN_CENTER
};
enum wxStretch
wxSTRETCH_NOT = 0x0000,
wxSHRINK = 0x1000,
wxGROW = 0x2000,
- wxEXPAND = wxGROW
+ wxEXPAND = wxGROW,
+ wxSHAPED = 0x4000
};
// ----------------------------------------------------------------------------
/*
* wxToolBar style flags
*/
-#define wxTB_3DBUTTONS 0x8000
-#define wxTB_HORIZONTAL 0x0002
-#define wxTB_VERTICAL 0x0004
+#define wxTB_HORIZONTAL wxHORIZONTAL
+#define wxTB_VERTICAL wxVERTICAL
+#define wxTB_3DBUTTONS 0x0010
// Flatbar/Coolbar under Win98/ GTK 1.2
-#define wxTB_FLAT 0x0008
+#define wxTB_FLAT 0x0020
// use native docking under GTK
-#define wxTB_DOCKABLE 0x0010
+#define wxTB_DOCKABLE 0x0040
/*
* wxMenuBar style flags
#define wxHW_SCROLLBAR_NEVER 0x0002
#define wxHW_SCROLLBAR_AUTO 0x0004
+/*
+ * wxCalendarCtrl flags
+ */
+#define wxCAL_SUNDAY_FIRST 0x0000
+#define wxCAL_MONDAY_FIRST 0x0001
+#define wxCAL_SHOW_HOLIDAYS 0x0002
+#define wxCAL_NO_YEAR_CHANGE 0x0004
+#define wxCAL_NO_MONTH_CHANGE 0x000c // no month change => no year change
+
/*
* extended dialog specifiers. these values are stored in a different
* flag and thus do not overlap with other style flags. note that these
// standard IDs
// ----------------------------------------------------------------------------
+// id for a separator line in the menu (invalid for normal item)
+#define wxID_SEPARATOR (-1)
+
+// this one is for compatibility only, don't use in new code
+#ifndef ID_SEPARATOR
+ #define ID_SEPARATOR wxID_SEPARATOR
+#endif
+
// Standard menu IDs
#define wxID_LOWEST 4999
typedef void* WXRESULT;
typedef int (*WXFARPROC)();
// some windows handles not defined by PM
-typedef unsigned long COLORREF;
typedef unsigned long HANDLE;
typedef unsigned long HICON;
typedef unsigned long HFONT;
typedef unsigned long HGLOBAL;
typedef unsigned long DWORD;
typedef unsigned short WORD;
-#endif
+
+// WIN32 graphics types for OS/2 GPI
+
+// RGB under OS2 is more like a PALETTEENTRY struct under Windows so we need a real RGB def
+#define OS2RGB(r,g,b) ((DWORD ((BYTE) (r) | ((WORD) (g) << 8)) | (((DWORD)(BYTE)(b)) << 16)))
+
+typedef unsigned long COLORREF;
+#define GetBValue(rgb) ((BYTE)((rgb) >> 16))
+#define GetGValue(rgb) ((BYTE)(((WORD)(rgb)) >> 8))
+#define GetRValue(rgb) ((BYTE)(rgb))
+#define PALETTEINDEX(i) ((COLORREF)(0x01000000 | (DWORD)(WORD)(i)))
+#define PALETTERGB(r,g,b) (0x02000000 | OS2RGB(r,g,b))
+// OS2's RGB/RGB2 is backwards from this
+typedef struct tagPALETTEENTRY
+{
+ char bRed;
+ char bGreen;
+ char bBlue;
+ char bFlags;
+} PALETTEENTRY;
+typedef struct tagLOGPALETTE
+{
+ WORD palVersion;
+ WORD palNumentries;
+ WORD PALETTEENTRY[1];
+} LOGPALETTE;
+#endif //__WXPM__
#if defined(__GNUWIN32__) || defined(__WXWINE__)
typedef int (*WXFARPROC)();
typedef struct _GdkColormap GdkColormap;
typedef struct _GdkFont GdkFont;
typedef struct _GdkGC GdkGC;
-typedef struct _GdkWindow GdkWindow;
-typedef struct _GdkWindow GdkBitmap;
-typedef struct _GdkWindow GdkPixmap;
+#ifdef __WXGTK13__
+ typedef struct _GdkDrawable GdkWindow;
+ typedef struct _GdkDrawable GdkBitmap;
+ typedef struct _GdkDrawable GdkPixmap;
+#else
+ typedef struct _GdkWindow GdkWindow;
+ typedef struct _GdkWindow GdkBitmap;
+ typedef struct _GdkWindow GdkPixmap;
+#endif
typedef struct _GdkCursor GdkCursor;
typedef struct _GdkRegion GdkRegion;
typedef struct _GdkDragContext GdkDragContext;
+#ifdef HAVE_XIM
+typedef struct _GdkIC GdkIC;
+typedef struct _GdkICAttr GdkICAttr;
+#endif
/* Stand-ins for GTK types */
typedef struct _GtkWidget GtkWidget;