]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/defs.h
tried to implement division of wxLongLongs - doesn't work at all, will finish tonight
[wxWidgets.git] / include / wx / defs.h
index 1cf504cb50d0b45fb734be86441b36b94db57054..85348dd14319a9962836429ed3faba88b33135c0 100644 (file)
     #pragma interface "defs.h"
 #endif
 
     #pragma interface "defs.h"
 #endif
 
-
-// needed to handle strings with xgettext:
-#ifndef gettext_noop
-#  define gettext_noop(x) x
-#endif
-
 // ----------------------------------------------------------------------------
 // compiler and OS identification
 // ----------------------------------------------------------------------------
 
 // ----------------------------------------------------------------------------
 // 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____) || \
 #if defined(__unix) || defined(__unix__) || defined(____SVR4____) || \
-    defined(__LINUX__) || defined(__sgi ) || \
+    defined(__LINUX__) || defined(__sgi) || \
     defined(__hpux) || defined(sun) || defined(__SUN__) || defined(_AIX) || \
     defined(__hpux) || defined(sun) || defined(__SUN__) || defined(_AIX) || \
-    defined(__EMX__)
+    defined(__EMX__) || defined(__VMS) || defined(__BEOS__)
 
     #define __UNIX_LIKE__
 
 
     #define __UNIX_LIKE__
 
 // Digital Unix C++ compiler only defines this symbol for .cxx and .hxx files,
 // so define it ourselves
 #ifdef __DECCXX
 // 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 // __DECCXX
 
 // Resolves linking problems under HP-UX
 #endif
 #endif
 
 #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(__MINGW32__) && !wxUSE_NORLANDER_HEADERS
+    #define __GNUWIN32_OLD__
+#endif
 
 //////////////////////////////////////////////////////////////////////////////////
 // Currently Only MS-Windows/NT, XView and Motif are supported
 
 //////////////////////////////////////////////////////////////////////////////////
 // Currently Only MS-Windows/NT, XView and Motif are supported
     #define __HPUX__
 #endif // HP-UX
 
     #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__
 // 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
     // 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;
 #endif // bool
 
 typedef short int WXTYPE;
@@ -318,7 +323,7 @@ typedef int wxWindowID;
 
 // wxCALLBACK should be used for the functions which are called back by
 // Windows (such as compare function for wxListCtrl)
 
 // 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
     #if defined(__MINGW32__) || defined(__GNUWIN32__)
         #define wxCALLBACK __attribute__((stdcall))
     #else
@@ -326,7 +331,7 @@ typedef int wxWindowID;
         #define wxCALLBACK _stdcall
     #endif
 #else
         #define wxCALLBACK _stdcall
     #endif
 #else
-    // no stdcall under Unix
+    // no stdcall under Unix nor Win16
     #define wxCALLBACK
 #endif // platform
 
     #define wxCALLBACK
 #endif // platform
 
@@ -487,32 +492,32 @@ typedef void (*wxFunction) (wxObject&, wxEvent&);
 // Not all platforms are currently available or supported
 enum
 {
 // Not all platforms are currently available or supported
 enum
 {
-  wxUNKNOWN_PLATFORM,
-  wxCURSES,                 // Text-only CURSES
-  wxXVIEW_X,                // Sun's XView OpenLOOK toolkit
-  wxMOTIF_X,                // OSF Motif 1.x.x
-  wxCOSE_X,                 // OSF Common Desktop Environment
-  wxNEXTSTEP,               // NeXTStep
-  wxMACINTOSH,              // Apple System 7 and 8
-  wxBEOS,                   // BeOS
-  wxGTK,                    // GTK on X
-  wxGTK_WIN32,              // GTK on Win32
-  wxGTK_OS2,                // GTK on OS/2
-  wxGTK_BEOS,               // GTK on BeOS
-  wxQT,                     // Qt
-  wxGEOS,                   // GEOS
-  wxOS2_PM,                 // OS/2 Workplace
-  wxWINDOWS,                // Windows or WfW
-  wxPENWINDOWS,             // Windows for Pen Computing
-  wxWINDOWS_NT,             // Windows NT
-  wxWIN32S,                 // Windows 32S API
-  wxWIN95,                  // Windows 95
-  wxWIN386,                 // Watcom 32-bit supervisor modus
-  wxMGL_UNIX,               // MGL with direct hardware access
-  wxMGL_X,                  // MGL on X
-  wxMGL_WIN32,              // MGL on Win32
-  wxMGL_OS2,                // MGL on OS/2
-  wxWINDOWS_OS2             // Native OS/2 PM
+    wxUNKNOWN_PLATFORM,
+    wxCURSES,                 // Text-only CURSES
+    wxXVIEW_X,                // Sun's XView OpenLOOK toolkit
+    wxMOTIF_X,                // OSF Motif 1.x.x
+    wxCOSE_X,                 // OSF Common Desktop Environment
+    wxNEXTSTEP,               // NeXTStep
+    wxMACINTOSH,              // Apple System 7 and 8
+    wxBEOS,                   // BeOS
+    wxGTK,                    // GTK on X
+    wxGTK_WIN32,              // GTK on Win32
+    wxGTK_OS2,                // GTK on OS/2
+    wxGTK_BEOS,               // GTK on BeOS
+    wxQT,                     // Qt
+    wxGEOS,                   // GEOS
+    wxOS2_PM,                 // OS/2 Workplace
+    wxWINDOWS,                // Windows or WfW
+    wxPENWINDOWS,             // Windows for Pen Computing
+    wxWINDOWS_NT,             // Windows NT
+    wxWIN32S,                 // Windows 32S API
+    wxWIN95,                  // Windows 95
+    wxWIN386,                 // Watcom 32-bit supervisor modus
+    wxMGL_UNIX,               // MGL with direct hardware access
+    wxMGL_X,                  // MGL on X
+    wxMGL_WIN32,              // MGL on Win32
+    wxMGL_OS2,                // MGL on OS/2
+    wxWINDOWS_OS2             // Native OS/2 PM
 };
 
 // ----------------------------------------------------------------------------
 };
 
 // ----------------------------------------------------------------------------
@@ -586,6 +591,25 @@ enum
 #define  wxByte   wxUint8
 #define  wxWord   wxUint16
 
 #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 ordering related definition and macros
 // ----------------------------------------------------------------------------
@@ -604,6 +628,36 @@ enum
 
 // byte swapping
 
 
 // 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) | \
 #define wxUINT16_SWAP_ALWAYS(val) \
    ((wxUint16) ( \
     (((wxUint16) (val) & (wxUint16) 0x00ffU) << 8) | \
@@ -627,7 +681,7 @@ enum
     (((wxUint32) (val) & (wxUint32) 0x0000ff00U) <<  8) | \
     (((wxUint32) (val) & (wxUint32) 0x00ff0000U) >>  8) | \
     (((wxUint32) (val) & (wxUint32) 0xff000000U) >> 24)))
     (((wxUint32) (val) & (wxUint32) 0x0000ff00U) <<  8) | \
     (((wxUint32) (val) & (wxUint32) 0x00ff0000U) >>  8) | \
     (((wxUint32) (val) & (wxUint32) 0xff000000U) >> 24)))
-
+#endif
 // machine specific byte swapping
 
 #ifdef WORDS_BIGENDIAN
 // machine specific byte swapping
 
 #ifdef WORDS_BIGENDIAN
@@ -695,12 +749,17 @@ enum wxDirection
 enum wxAlignment
 {
     wxALIGN_NOT               = 0x0000,
 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_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
 };
 
 enum wxStretch
@@ -708,7 +767,8 @@ enum wxStretch
     wxSTRETCH_NOT             = 0x0000,
     wxSHRINK                  = 0x1000,
     wxGROW                    = 0x2000,
     wxSTRETCH_NOT             = 0x0000,
     wxSHRINK                  = 0x1000,
     wxGROW                    = 0x2000,
-    wxEXPAND                  = wxGROW
+    wxEXPAND                  = wxGROW,
+    wxSHAPED                  = 0x4000
 };
 
 // ----------------------------------------------------------------------------
 };
 
 // ----------------------------------------------------------------------------
@@ -1088,6 +1148,14 @@ enum wxStretch
 // standard IDs
 // ----------------------------------------------------------------------------
 
 // 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
 
 // Standard menu IDs
 #define wxID_LOWEST             4999
 
@@ -1621,7 +1689,6 @@ typedef unsigned long   WXMSGID;
 typedef void*           WXRESULT;
 typedef int             (*WXFARPROC)();
 // some windows handles not defined by PM
 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   HANDLE;
 typedef unsigned long   HICON;
 typedef unsigned long   HFONT;
@@ -1635,7 +1702,33 @@ typedef unsigned long   HIMAGELIST;
 typedef unsigned long   HGLOBAL;
 typedef unsigned long   DWORD;
 typedef unsigned short  WORD;
 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)();
 
 #if defined(__GNUWIN32__) || defined(__WXWINE__)
     typedef int (*WXFARPROC)();
@@ -1700,6 +1793,10 @@ typedef struct _GdkWindow       GdkPixmap;
 typedef struct _GdkCursor       GdkCursor;
 typedef struct _GdkRegion       GdkRegion;
 typedef struct _GdkDragContext  GdkDragContext;
 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;
 
 /* Stand-ins for GTK types */
 typedef struct _GtkWidget         GtkWidget;