]> git.saurik.com Git - wxWidgets.git/blobdiff - interface/wx/defs.h
Use Cairo for wxGraphicsContext in wxX11.
[wxWidgets.git] / interface / wx / defs.h
index b1b2c9536ec3f9c65ec65d9f3be70856a401481a..9971fa818e384157789db92c04a72af1b4f02d37 100644 (file)
@@ -3,9 +3,389 @@
 // Purpose:     interface of global functions
 // Author:      wxWidgets team
 // RCS-ID:      $Id$
-// Licence:     wxWindows license
+// Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
+
+// ----------------------------------------------------------------------------
+// enumerations
+// ----------------------------------------------------------------------------
+
+/**
+    Generic flags.
+*/
+enum wxGeometryCentre
+{
+    wxCENTRE                  = 0x0001,
+    wxCENTER                  = wxCENTRE
+};
+
+/**
+    A generic orientation value.
+*/
+enum wxOrientation
+{
+    wxHORIZONTAL              = 0x0004,
+    wxVERTICAL                = 0x0008,
+
+    /**
+        A mask value to indicate both vertical and horizontal orientations.
+    */
+    wxBOTH                    = wxVERTICAL | wxHORIZONTAL,
+
+    /// A synonim for @c wxBOTH.
+    wxORIENTATION_MASK        = wxBOTH
+};
+
+/**
+    A generic direction value.
+*/
+enum wxDirection
+{
+    wxLEFT                    = 0x0010,
+    wxRIGHT                   = 0x0020,
+    wxUP                      = 0x0040,
+    wxDOWN                    = 0x0080,
+
+    wxTOP                     = wxUP,
+    wxBOTTOM                  = wxDOWN,
+
+    wxNORTH                   = wxUP,
+    wxSOUTH                   = wxDOWN,
+    wxWEST                    = wxLEFT,
+    wxEAST                    = wxRIGHT,
+
+    wxALL                     = (wxUP | wxDOWN | wxRIGHT | wxLEFT),
+
+    /** A mask to extract direction from the combination of flags. */
+    wxDIRECTION_MASK           = wxALL
+};
+
+/**
+    Generic alignment values. Can be combined together.
+*/
+enum wxAlignment
+{
+    /**
+        A value different from any valid alignment value.
+
+        Note that you shouldn't use 0 for this as it's the value of (valid)
+        alignments wxALIGN_LEFT and wxALIGN_TOP.
+
+        @since 2.9.1
+     */
+    wxALIGN_INVALID           = -1,
+
+    wxALIGN_NOT               = 0x0000,
+    wxALIGN_CENTER_HORIZONTAL = 0x0100,
+    wxALIGN_CENTRE_HORIZONTAL = wxALIGN_CENTER_HORIZONTAL,
+    wxALIGN_LEFT              = wxALIGN_NOT,
+    wxALIGN_TOP               = wxALIGN_NOT,
+    wxALIGN_RIGHT             = 0x0200,
+    wxALIGN_BOTTOM            = 0x0400,
+    wxALIGN_CENTER_VERTICAL   = 0x0800,
+    wxALIGN_CENTRE_VERTICAL   = wxALIGN_CENTER_VERTICAL,
+
+    wxALIGN_CENTER            = (wxALIGN_CENTER_HORIZONTAL | wxALIGN_CENTER_VERTICAL),
+    wxALIGN_CENTRE            = wxALIGN_CENTER,
+
+    /** A mask to extract alignment from the combination of flags. */
+    wxALIGN_MASK              = 0x0f00
+};
+
+/**
+    Miscellaneous flags for wxSizer items.
+*/
+enum wxSizerFlagBits
+{
+    wxFIXED_MINSIZE                = 0x8000,
+    wxRESERVE_SPACE_EVEN_IF_HIDDEN = 0x0002,
+
+    /*  a mask to extract wxSizerFlagBits from combination of flags */
+    wxSIZER_FLAG_BITS_MASK         = 0x8002
+};
+
+/**
+    Generic stretch values.
+*/
+enum wxStretch
+{
+    wxSTRETCH_NOT             = 0x0000,
+    wxSHRINK                  = 0x1000,
+    wxGROW                    = 0x2000,
+    wxEXPAND                  = wxGROW,
+    wxSHAPED                  = 0x4000,
+    wxTILE                    = wxSHAPED | wxFIXED_MINSIZE,
+
+    /*  a mask to extract stretch from the combination of flags */
+    wxSTRETCH_MASK            = 0x7000 /* sans wxTILE */
+};
+
+/**
+    Border flags for wxWindow.
+*/
+enum wxBorder
+{
+    /**
+        This is different from wxBORDER_NONE as by default the controls do have
+        a border.
+    */
+    wxBORDER_DEFAULT = 0,
+
+    wxBORDER_NONE   = 0x00200000,
+    wxBORDER_STATIC = 0x01000000,
+    wxBORDER_SIMPLE = 0x02000000,
+    wxBORDER_RAISED = 0x04000000,
+    wxBORDER_SUNKEN = 0x08000000,
+    wxBORDER_DOUBLE = 0x10000000, /* deprecated */
+    wxBORDER_THEME  = wxBORDER_DOUBLE,
+
+    /*  a mask to extract border style from the combination of flags */
+    wxBORDER_MASK   = 0x1f200000
+};
+
+
+/**
+    Background styles.
+
+    @see wxWindow::SetBackgroundStyle()
+*/
+enum wxBackgroundStyle
+{
+    /**
+        Default background style value indicating that the background may be
+        erased in the user-defined EVT_ERASE_BACKGROUND handler.
+
+        If no such handler is defined (or if it skips the event), the effect of
+        this style is the same as wxBG_STYLE_SYSTEM. If an empty handler (@em
+        not skipping the event) is defined, the effect is the same as
+        wxBG_STYLE_PAINT, i.e. the background is not erased at all until
+        EVT_PAINT handler is executed.
+
+        This is the only background style value for which erase background
+        events are generated at all.
+     */
+    wxBG_STYLE_ERASE,
+
+    /**
+        Use the default background, as determined by the system or the current
+        theme.
+
+        If the window has been assigned a non-default background colour, it
+        will be used for erasing its background. Otherwise the default
+        background (which might be a gradient or a pattern) will be used.
+
+        EVT_ERASE_BACKGROUND event will not be generated at all for windows
+        with this style.
+     */
+    wxBG_STYLE_SYSTEM,
+
+    /**
+        Indicates that the background is only erased in the user-defined
+        EVT_PAINT handler.
+
+        Using this style avoids flicker which would result from redrawing the
+        background twice if the EVT_PAINT handler entirely overwrites it. It
+        must not be used however if the paint handler leaves any parts of the
+        window unpainted as their contents is then undetermined. Only use it if
+        you repaint the whole window in your handler.
+
+        EVT_ERASE_BACKGROUND event will not be generated at all for windows
+        with this style.
+     */
+    wxBG_STYLE_PAINT
+};
+
+
+/**
+    Standard IDs.
+
+    Notice that some, but @em not all, of these IDs are also stock IDs, i.e.
+    you can use them for the button or menu items without specifying the label
+    which will be provided by the underlying platform itself. See @ref "the
+    list of stock items" for the subset of standard IDs which are stock IDs as
+    well.
+*/
+enum wxStandardID
+{
+    /**
+       This id delimits the lower bound of the range used by automatically-generated ids
+       (i.e. those used when wxID_ANY is specified during construction).
+     */
+    wxID_AUTO_LOWEST,
+
+    /**
+       This id delimits the upper bound of the range used by automatically-generated ids
+       (i.e. those used when wxID_ANY is specified during construction).
+     */
+    wxID_AUTO_HIGHEST,
+
+    /**
+        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,
+
+    wxID_LOWEST = 4999,
+
+    wxID_OPEN,
+    wxID_CLOSE,
+    wxID_NEW,
+    wxID_SAVE,
+    wxID_SAVEAS,
+    wxID_REVERT,
+    wxID_EXIT,
+    wxID_UNDO,
+    wxID_REDO,
+    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_EDIT = 5030,
+    wxID_CUT,
+    wxID_COPY,
+    wxID_PASTE,
+    wxID_CLEAR,
+    wxID_FIND,
+    wxID_DUPLICATE,
+    wxID_SELECTALL,
+    wxID_DELETE,
+    wxID_REPLACE,
+    wxID_REPLACE_ALL,
+    wxID_PROPERTIES,
+
+    wxID_VIEW_DETAILS,
+    wxID_VIEW_LARGEICONS,
+    wxID_VIEW_SMALLICONS,
+    wxID_VIEW_LIST,
+    wxID_VIEW_SORTDATE,
+    wxID_VIEW_SORTNAME,
+    wxID_VIEW_SORTSIZE,
+    wxID_VIEW_SORTTYPE,
+
+    wxID_FILE = 5050,
+    wxID_FILE1,
+    wxID_FILE2,
+    wxID_FILE3,
+    wxID_FILE4,
+    wxID_FILE5,
+    wxID_FILE6,
+    wxID_FILE7,
+    wxID_FILE8,
+    wxID_FILE9,
+
+    /** Standard button and menu IDs */
+    wxID_OK = 5100,
+    wxID_CANCEL,
+    wxID_APPLY,
+    wxID_YES,
+    wxID_NO,
+    wxID_STATIC,
+    wxID_FORWARD,
+    wxID_BACKWARD,
+    wxID_DEFAULT,
+    wxID_MORE,
+    wxID_SETUP,
+    wxID_RESET,
+    wxID_CONTEXT_HELP,
+    wxID_YESTOALL,
+    wxID_NOTOALL,
+    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,
+    wxID_CDROM,
+    wxID_CONVERT,
+    wxID_EXECUTE,
+    wxID_FLOPPY,
+    wxID_HARDDISK,
+    wxID_BOTTOM,
+    wxID_FIRST,
+    wxID_LAST,
+    wxID_TOP,
+    wxID_INFO,
+    wxID_JUMP_TO,
+    wxID_NETWORK,
+    wxID_SELECT_COLOR,
+    wxID_SELECT_FONT,
+    wxID_SORT_ASCENDING,
+    wxID_SORT_DESCENDING,
+    wxID_SPELL_CHECK,
+    wxID_STRIKETHROUGH,
+
+    /** System menu IDs (used by wxUniv): */
+    wxID_SYSTEM_MENU = 5200,
+    wxID_CLOSE_FRAME,
+    wxID_MOVE_FRAME,
+    wxID_RESIZE_FRAME,
+    wxID_MAXIMIZE_FRAME,
+    wxID_ICONIZE_FRAME,
+    wxID_RESTORE_FRAME,
+
+    /** MDI window menu ids */
+    wxID_MDI_WINDOW_FIRST = 5230,
+    wxID_MDI_WINDOW_CASCADE = wxID_MDI_WINDOW_FIRST,
+    wxID_MDI_WINDOW_TILE_HORZ,
+    wxID_MDI_WINDOW_TILE_VERT,
+    wxID_MDI_WINDOW_ARRANGE_ICONS,
+    wxID_MDI_WINDOW_PREV,
+    wxID_MDI_WINDOW_NEXT,
+    wxID_MDI_WINDOW_LAST = wxID_MDI_WINDOW_NEXT,
+
+    /** IDs used by generic file dialog (13 consecutive starting from this value) */
+    wxID_FILEDLGG = 5900,
+
+    /** IDs used by generic file ctrl (4 consecutive starting from this value) */
+    wxID_FILECTRL = 5950,
+
+    wxID_HIGHEST = 5999
+};
+
 /**
     Item kinds for use with wxMenu, wxMenuItem, and wxToolBar.
 
@@ -48,6 +428,247 @@ enum wxItemKind
     wxITEM_MAX
 };
 
+/**
+    Generic hit test results.
+*/
+enum wxHitTest
+{
+    wxHT_NOWHERE,
+
+    /*  scrollbar */
+    wxHT_SCROLLBAR_FIRST = wxHT_NOWHERE,
+    wxHT_SCROLLBAR_ARROW_LINE_1,    /**< left or upper arrow to scroll by line */
+    wxHT_SCROLLBAR_ARROW_LINE_2,    /**< right or down */
+    wxHT_SCROLLBAR_ARROW_PAGE_1,    /**< left or upper arrow to scroll by page */
+    wxHT_SCROLLBAR_ARROW_PAGE_2,    /**< right or down */
+    wxHT_SCROLLBAR_THUMB,           /**< on the thumb */
+    wxHT_SCROLLBAR_BAR_1,           /**< bar to the left/above the thumb */
+    wxHT_SCROLLBAR_BAR_2,           /**< bar to the right/below the thumb */
+    wxHT_SCROLLBAR_LAST,
+
+    /*  window */
+    wxHT_WINDOW_OUTSIDE,            /**< not in this window at all */
+    wxHT_WINDOW_INSIDE,             /**< in the client area */
+    wxHT_WINDOW_VERT_SCROLLBAR,     /**< on the vertical scrollbar */
+    wxHT_WINDOW_HORZ_SCROLLBAR,     /**< on the horizontal scrollbar */
+    wxHT_WINDOW_CORNER,             /**< on the corner between 2 scrollbars */
+
+    wxHT_MAX
+};
+
+/**
+    Data format IDs used by wxDataFormat.
+*/
+enum wxDataFormatId
+{
+    wxDF_INVALID =          0,
+    wxDF_TEXT =             1,  /* CF_TEXT */
+    wxDF_BITMAP =           2,  /* CF_BITMAP */
+    wxDF_METAFILE =         3,  /* CF_METAFILEPICT */
+    wxDF_SYLK =             4,
+    wxDF_DIF =              5,
+    wxDF_TIFF =             6,
+    wxDF_OEMTEXT =          7,  /* CF_OEMTEXT */
+    wxDF_DIB =              8,  /* CF_DIB */
+    wxDF_PALETTE =          9,
+    wxDF_PENDATA =          10,
+    wxDF_RIFF =             11,
+    wxDF_WAVE =             12,
+    wxDF_UNICODETEXT =      13,
+    wxDF_ENHMETAFILE =      14,
+    wxDF_FILENAME =         15, /* CF_HDROP */
+    wxDF_LOCALE =           16,
+    wxDF_PRIVATE =          20,
+    wxDF_HTML =             30, /* Note: does not correspond to CF_ constant */
+    wxDF_MAX
+};
+
+/**
+    Virtual keycodes used by wxKeyEvent and some other wxWidgets functions.
+
+    Note that the range <code>0..255</code> corresponds to the characters of
+    the current locale, in particular the <code>32..127</code> subrange is for
+    the ASCII symbols, and all the special key values such as @c WXK_END lie
+    above this range.
+*/
+enum wxKeyCode
+{
+    /**
+        No key.
+
+        This value is returned by wxKeyEvent::GetKeyCode() if there is no
+        non-Unicode representation for the pressed key (e.g. a Cyrillic letter
+        was entered when not using a Cyrillic locale) and by
+        wxKeyEvent::GetUnicodeKey() if there is no Unicode representation for
+        the key (this happens for the special, non printable, keys only, e.g.
+        WXK_HOME).
+
+        @since 2.9.2 (you can simply use 0 with previous versions).
+     */
+    WXK_NONE    =    0,
+
+    WXK_BACK    =    8,     //!< Backspace.
+    WXK_TAB     =    9,
+    WXK_RETURN  =    13,
+    WXK_ESCAPE  =    27,
+    WXK_SPACE   =    32,
+
+    WXK_DELETE  =    127,
+
+    /**
+        Special key values.
+
+        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,
+    WXK_CANCEL,
+    WXK_MBUTTON,
+    WXK_CLEAR,
+    WXK_SHIFT,
+    WXK_ALT,
+    WXK_CONTROL,
+    WXK_MENU,
+    WXK_PAUSE,
+    WXK_CAPITAL,
+    WXK_END,
+    WXK_HOME,
+    WXK_LEFT,
+    WXK_UP,
+    WXK_RIGHT,
+    WXK_DOWN,
+    WXK_SELECT,
+    WXK_PRINT,
+    WXK_EXECUTE,
+    WXK_SNAPSHOT,
+    WXK_INSERT,
+    WXK_HELP,
+    WXK_NUMPAD0,
+    WXK_NUMPAD1,
+    WXK_NUMPAD2,
+    WXK_NUMPAD3,
+    WXK_NUMPAD4,
+    WXK_NUMPAD5,
+    WXK_NUMPAD6,
+    WXK_NUMPAD7,
+    WXK_NUMPAD8,
+    WXK_NUMPAD9,
+    WXK_MULTIPLY,
+    WXK_ADD,
+    WXK_SEPARATOR,
+    WXK_SUBTRACT,
+    WXK_DECIMAL,
+    WXK_DIVIDE,
+    WXK_F1,
+    WXK_F2,
+    WXK_F3,
+    WXK_F4,
+    WXK_F5,
+    WXK_F6,
+    WXK_F7,
+    WXK_F8,
+    WXK_F9,
+    WXK_F10,
+    WXK_F11,
+    WXK_F12,
+    WXK_F13,
+    WXK_F14,
+    WXK_F15,
+    WXK_F16,
+    WXK_F17,
+    WXK_F18,
+    WXK_F19,
+    WXK_F20,
+    WXK_F21,
+    WXK_F22,
+    WXK_F23,
+    WXK_F24,
+    WXK_NUMLOCK,
+    WXK_SCROLL,
+    WXK_PAGEUP,
+    WXK_PAGEDOWN,
+
+    WXK_NUMPAD_SPACE,
+    WXK_NUMPAD_TAB,
+    WXK_NUMPAD_ENTER,
+    WXK_NUMPAD_F1,
+    WXK_NUMPAD_F2,
+    WXK_NUMPAD_F3,
+    WXK_NUMPAD_F4,
+    WXK_NUMPAD_HOME,
+    WXK_NUMPAD_LEFT,
+    WXK_NUMPAD_UP,
+    WXK_NUMPAD_RIGHT,
+    WXK_NUMPAD_DOWN,
+    WXK_NUMPAD_PAGEUP,
+    WXK_NUMPAD_PAGEDOWN,
+    WXK_NUMPAD_END,
+    WXK_NUMPAD_BEGIN,
+    WXK_NUMPAD_INSERT,
+    WXK_NUMPAD_DELETE,
+    WXK_NUMPAD_EQUAL,
+    WXK_NUMPAD_MULTIPLY,
+    WXK_NUMPAD_ADD,
+    WXK_NUMPAD_SEPARATOR,
+    WXK_NUMPAD_SUBTRACT,
+    WXK_NUMPAD_DECIMAL,
+    WXK_NUMPAD_DIVIDE,
+
+    /** The following key codes are only generated under Windows currently */
+    WXK_WINDOWS_LEFT,
+    WXK_WINDOWS_RIGHT,
+    WXK_WINDOWS_MENU ,
+    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
+};
+
+/**
+    This enum contains bit mask constants used in wxKeyEvent.
+*/
+enum wxKeyModifier
+{
+    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,
+
+    /**
+        Notice that @c wxMOD_CMD should be used instead of @c wxMOD_CONTROL
+        in portable code to account for the fact that although
+        @c Control modifier exists under Mac OS, it is not used for the same
+        purpose as under Windows or Unix there while the special Mac-specific
+        @c Command modifier is used in exactly the same way.
+    */
+    wxMOD_CMD       = wxMOD_META,
+    wxMOD_ALL       = 0xffff
+};
 
 /**
     Paper size types for use with the printing framework.
@@ -99,7 +720,7 @@ enum wxPaperSize
     wxPAPER_FANFOLD_STD_GERMAN, ///<  German Std Fanfold, 8 1/2 by 12 inches
     wxPAPER_FANFOLD_LGL_GERMAN, ///<  German Legal Fanfold, 8 1/2 by 13 inches
 
-    // Windows 95 Only
+    // wxMSW Only
 
     wxPAPER_ISO_B4,             ///<  B4 (ISO) 250 x 353 mm
     wxPAPER_JAPANESE_POSTCARD,  ///<  Japanese Postcard 100 x 148 mm
@@ -107,13 +728,13 @@ enum wxPaperSize
     wxPAPER_10X11,              ///<  10 x 11 in
     wxPAPER_15X11,              ///<  15 x 11 in
     wxPAPER_ENV_INVITE,         ///<  Envelope Invite 220 x 220 mm
-    wxPAPER_LETTER_EXTRA,       ///<  Letter Extra 9 \275 x 12 in
-    wxPAPER_LEGAL_EXTRA,        ///<  Legal Extra 9 \275 x 15 in
+    wxPAPER_LETTER_EXTRA,       ///<  Letter Extra 9.5 x 12 in
+    wxPAPER_LEGAL_EXTRA,        ///<  Legal Extra 9.5 x 15 in
     wxPAPER_TABLOID_EXTRA,      ///<  Tabloid Extra 11.69 x 18 in
     wxPAPER_A4_EXTRA,           ///<  A4 Extra 9.27 x 12.69 in
-    wxPAPER_LETTER_TRANSVERSE,  ///<  Letter Transverse 8 \275 x 11 in
+    wxPAPER_LETTER_TRANSVERSE,  ///<  Letter Transverse 8.5 x 11 in
     wxPAPER_A4_TRANSVERSE,      ///<  A4 Transverse 210 x 297 mm
-    wxPAPER_LETTER_EXTRA_TRANSVERSE, ///<  Letter Extra Transverse 9\275 x 12 in
+    wxPAPER_LETTER_EXTRA_TRANSVERSE, ///<  Letter Extra Transverse 9.5 x 12 in
     wxPAPER_A_PLUS,             ///<  SuperA/SuperA/A4 227 x 356 mm
     wxPAPER_B_PLUS,             ///<  SuperB/SuperB/A3 305 x 487 mm
     wxPAPER_LETTER_PLUS,        ///<  Letter Plus 8.5 x 12.69 in
@@ -179,8 +800,156 @@ enum wxPaperSize
     wxPAPER_PENV_10_ROTATED     ///< PRC Envelope #10 Rotated 458 x 324 m
 };
 
+/**
+    Printing orientation
+*/
 
-/** @ingroup group_funcmacro_byteorder */
+enum wxPrintOrientation
+{
+   wxPORTRAIT,
+   wxLANDSCAPE
+};
+
+/**
+    Duplex printing modes.
+*/
+enum wxDuplexMode
+{
+    wxDUPLEX_SIMPLEX, /**< Non-duplex */
+    wxDUPLEX_HORIZONTAL,
+    wxDUPLEX_VERTICAL
+};
+
+/**
+    Print mode (currently PostScript only).
+*/
+enum wxPrintMode
+{
+    wxPRINT_MODE_NONE =    0,
+    wxPRINT_MODE_PREVIEW = 1,   /**< Preview in external application */
+    wxPRINT_MODE_FILE =    2,   /**< Print to file */
+    wxPRINT_MODE_PRINTER = 3,   /**< Send to printer */
+    wxPRINT_MODE_STREAM =  4    /**< Send postscript data into a stream */
+};
+
+/**
+    Flags which can be used in wxWindow::UpdateWindowUI().
+*/
+enum wxUpdateUI
+{
+    wxUPDATE_UI_NONE,
+    wxUPDATE_UI_RECURSE,
+    wxUPDATE_UI_FROMIDLE  /**<  Invoked from On(Internal)Idle */
+};
+
+
+// ----------------------------------------------------------------------------
+// constants
+// ----------------------------------------------------------------------------
+
+/**
+    C99-like sized MIN/MAX constants for all integer types.
+
+    For each @c n in the set 8, 16, 32, 64 we define @c wxINTn_MIN, @c
+    wxINTn_MAX and @c wxUINTc_MAX (@c wxUINTc_MIN is always 0 and so is not
+    defined).
+ */
+//@{
+#define wxINT8_MIN CHAR_MIN
+#define wxINT8_MAX CHAR_MAX
+#define wxUINT8_MAX UCHAR_MAX
+
+#define wxINT16_MIN SHRT_MIN
+#define wxINT16_MAX SHRT_MAX
+#define wxUINT16_MAX USHRT_MAX
+
+#define wxINT32_MIN INT_MIN-or-LONG_MIN
+#define wxINT32_MAX INT_MAX-or-LONG_MAX
+#define wxUINT32_MAX UINT_MAX-or-LONG_MAX
+
+#define wxINT64_MIN LLONG_MIN
+#define wxINT64_MAX LLONG_MAX
+#define wxUINT64_MAX ULLONG_MAX
+//@}
+
+// ----------------------------------------------------------------------------
+// types
+// ----------------------------------------------------------------------------
+
+/** The type for screen and DC coordinates. */
+typedef int wxCoord;
+
+/** A special value meaning "use default coordinate". */
+wxCoord wxDefaultCoord = -1;
+
+//@{
+/** 8 bit type (the mapping is more complex than a simple @c typedef and is not shown here). */
+typedef signed char wxInt8;
+typedef unsigned char wxUint8;
+typedef wxUint8 wxByte;
+//@}
+
+//@{
+/** 16 bit type (the mapping is more complex than a simple @c typedef and is not shown here). */
+typedef signed short wxInt16;
+typedef unsigned short wxUint16;
+typedef wxUint16 wxWord;
+typedef wxUint16 wxChar16;
+//@}
+
+//@{
+/** 32 bit type (the mapping is more complex than a simple @c typedef and is not shown here). */
+typedef int wxInt32;
+typedef unsigned int wxUint32;
+typedef wxUint32 wxDword;
+typedef wxUint32 wxChar32;
+//@}
+
+//@{
+/** 64 bit type (the mapping is more complex than a simple @c typedef and is not shown here). */
+typedef wxLongLong_t wxInt64;
+typedef wxULongLong_t wxUint64;
+//@}
+
+//@{
+/**
+    Signed and unsigned integral types big enough to contain all of @c long,
+    @c size_t and @c void*.
+    (The mapping is more complex than a simple @c typedef and is not shown here).
+*/
+typedef ssize_t wxIntPtr;
+typedef size_t wxUIntPtr;
+//@}
+
+
+/**
+    32 bit IEEE float ( 1 sign, 8 exponent bits, 23 fraction bits ).
+    (The mapping is more complex than a simple @c typedef and is not shown here).
+*/
+typedef float wxFloat32;
+
+
+/**
+    64 bit IEEE float ( 1 sign, 11 exponent bits, 52 fraction bits ).
+    (The mapping is more complex than a simple @c typedef and is not shown here).
+*/
+typedef double wxFloat64;
+
+/**
+    Native fastest representation that has at least wxFloat64 precision, so use
+    the IEEE types for storage, and this for calculations.
+    (The mapping is more complex than a simple @c typedef and is not shown here).
+*/
+typedef double wxDouble;
+
+
+
+// ----------------------------------------------------------------------------
+// macros
+// ----------------------------------------------------------------------------
+
+
+/** @addtogroup group_funcmacro_byteorder */
 //@{
 
 /**
@@ -190,14 +959,14 @@ enum wxPaperSize
 
     @header{wx/defs.h}
 */
-#define wxINT32_SWAP_ALWAYS( wxInt32 value )
-#define wxUINT32_SWAP_ALWAYS( wxUint32 value )
-#define wxINT16_SWAP_ALWAYS( wxInt16 value )
-#define wxUINT16_SWAP_ALWAYS( wxUint16 value )
+#define wxINT32_SWAP_ALWAYS( wxInt32_value )
+#define wxUINT32_SWAP_ALWAYS( wxUint32_value )
+#define wxINT16_SWAP_ALWAYS( wxInt16_value )
+#define wxUINT16_SWAP_ALWAYS( wxUint16_value )
 
 //@}
 
-/** @ingroup group_funcmacro_byteorder */
+/** @addtogroup group_funcmacro_byteorder */
 //@{
 
 /**
@@ -211,14 +980,14 @@ enum wxPaperSize
 
     @header{wx/defs.h}
 */
-#define wxINT32_SWAP_ON_BE( wxInt32 value )
-#define wxUINT32_SWAP_ON_BE( wxUint32 value )
-#define wxINT16_SWAP_ON_BE( wxInt16 value )
-#define wxUINT16_SWAP_ON_BE( wxUint16 value )
+#define wxINT32_SWAP_ON_BE( wxInt32_value )
+#define wxUINT32_SWAP_ON_BE( wxUint32_value )
+#define wxINT16_SWAP_ON_BE( wxInt16_value )
+#define wxUINT16_SWAP_ON_BE( wxUint16_value )
 
 //@}
 
-/** @ingroup group_funcmacro_byteorder */
+/** @addtogroup group_funcmacro_byteorder */
 //@{
 
 /**
@@ -232,16 +1001,16 @@ enum wxPaperSize
 
     @header{wx/defs.h}
 */
-#define wxINT32_SWAP_ON_LE( wxInt32 value )
-#define wxUINT32_SWAP_ON_LE( wxUint32 value )
-#define wxINT16_SWAP_ON_LE( wxInt16 value )
-#define wxUINT16_SWAP_ON_LE( wxUint16 value )
+#define wxINT32_SWAP_ON_LE( wxInt32_value )
+#define wxUINT32_SWAP_ON_LE( wxUint32_value )
+#define wxINT16_SWAP_ON_LE( wxInt16_value )
+#define wxUINT16_SWAP_ON_LE( wxUint16_value )
 
 //@}
 
 
 
-/** @ingroup group_funcmacro_misc */
+/** @addtogroup group_funcmacro_misc */
 //@{
 
 /**
@@ -253,9 +1022,9 @@ enum wxPaperSize
     In such case, this macro can be used to disable the automatic assignment
     operator generation.
 
-    @see DECLARE_NO_COPY_CLASS()
+    @see wxDECLARE_NO_COPY_CLASS()
  */
-#define DECLARE_NO_ASSIGN_CLASS(classname)
+#define wxDECLARE_NO_ASSIGN_CLASS(classname)
 
 /**
     This macro can be used in a class declaration to disable the generation of
@@ -280,15 +1049,85 @@ enum wxPaperSize
 
     private:
         // widgets can't be copied
-        DECLARE_NO_COPY_CLASS(FooWidget)
+        wxDECLARE_NO_COPY_CLASS(FooWidget);
     };
     @endcode
 
-    Notice that a semicolon should not be used after this macro and that it
-    changes the access specifier to private internally so it is better to use
-    it at the end of the class declaration.
+    Notice that a semicolon must be used after this macro and that it changes
+    the access specifier to private internally so it is better to use it at the
+    end of the class declaration.
+
+    @see wxDECLARE_NO_ASSIGN_CLASS(), wxDECLARE_NO_COPY_TEMPLATE_CLASS()
+ */
+#define wxDECLARE_NO_COPY_CLASS(classname)
+
+/**
+    Analog of wxDECLARE_NO_COPY_CLASS() for template classes.
+
+    This macro can be used for template classes (with a single template
+    parameter) for the same purpose as wxDECLARE_NO_COPY_CLASS() is used with the
+    non-template classes.
+
+    @param classname The name of the template class.
+    @param arg The name of the template parameter.
+
+    @see wxDECLARE_NO_COPY_TEMPLATE_CLASS_2
+ */
+#define wxDECLARE_NO_COPY_TEMPLATE_CLASS(classname, arg)
+
+/**
+    Analog of wxDECLARE_NO_COPY_TEMPLATE_CLASS() for templates with 2
+    parameters.
+
+    This macro can be used for template classes with two template
+    parameters for the same purpose as wxDECLARE_NO_COPY_CLASS() is used with
+    the non-template classes.
+
+    @param classname The name of the template class.
+    @param arg1 The name of the first template parameter.
+    @param arg2 The name of the second template parameter.
+
+    @see wxDECLARE_NO_COPY_TEMPLATE_CLASS
  */
-#define DECLARE_NO_COPY_CLASS(classname)
+#define wxDECLARE_NO_COPY_TEMPLATE_CLASS_2(classname, arg1, arg2)
+
+/**
+    A function which deletes and nulls the pointer.
+
+    This function uses operator delete to free the pointer and also sets it to
+    @NULL. Notice that this does @em not work for arrays, use wxDELETEA() for
+    them.
+
+    @code
+        MyClass *ptr = new MyClass;
+        ...
+        wxDELETE(ptr);
+        wxASSERT(!ptr);
+    @endcode
+
+    @header{wx/defs.h}
+*/
+template <typename T> wxDELETE(T*& ptr);
+
+/**
+    A function which deletes and nulls the pointer.
+
+    This function uses vector operator delete (@c delete[]) to free the array
+    pointer and also sets it to @NULL. Notice that this does @em not work for
+    non-array pointers, use wxDELETE() for them.
+
+    @code
+        MyClass *array = new MyClass[17];
+        ...
+        wxDELETEA(array);
+        wxASSERT(!array);
+    @endcode
+
+    @see wxDELETE()
+
+    @header{wx/defs.h}
+*/
+template <typename T> wxDELETEA(T*& array);
 
 /**
     This macro can be used around a function declaration to generate warnings
@@ -339,7 +1178,7 @@ enum wxPaperSize
     public:
         // OldMethod() is deprecated, use NewMethod() instead
         void NewMethod();
-        wxDEPRECATED_INLINE( void OldMethod(), NewMethod() );
+        wxDEPRECATED_INLINE( void OldMethod(), NewMethod(); )
     };
     @endcode
 
@@ -347,6 +1186,40 @@ enum wxPaperSize
 */
 #define wxDEPRECATED_INLINE(func, body)
 
+/**
+    A helper macro allowing to easily define a simple deprecated accessor.
+
+    Compared to wxDEPRECATED_INLINE() it saves a @c return statement and,
+    especially, a strangely looking semicolon inside a macro.
+
+    Example of use
+    @code
+    class wxFoo
+    {
+    public:
+        int GetValue() const { return m_value; }
+
+        // this one is deprecated because it was erroneously non-const
+        wxDEPRECATED_ACCESSOR( int GetValue(), m_value )
+
+    private:
+        int m_value;
+    };
+    @endcode
+ */
+#define wxDEPRECATED_ACCESSOR(func, what)
+
+/**
+    Combination of wxDEPRECATED_BUT_USED_INTERNALLY() and wxDEPRECATED_INLINE().
+
+    This macro should be used for deprecated functions called by the library
+    itself (usually for backwards compatibility reasons) and which are defined
+    inline.
+
+    @header{wx/defs.h}
+*/
+#define wxDEPRECATED_BUT_USED_INTERNALLY_INLINE(func, body)
+
 /**
     @c wxEXPLICIT is a macro which expands to the C++ @c explicit keyword if
     the compiler supports it or nothing otherwise. Thus, it can be used even in
@@ -390,6 +1263,25 @@ enum wxPaperSize
 */
 #define wxSUPPRESS_GCC_PRIVATE_DTOR_WARNING(name)
 
+/**
+    Swaps the contents of two variables.
+
+    This is similar to std::swap() but can be used even on the platforms where
+    the standard C++ library is not available (if you don't target such
+    platforms, please use std::swap() instead).
+
+    The function relies on type T being copy constructible and assignable.
+
+    Example of use:
+    @code
+        int x = 3,
+            y = 4;
+        wxSwap(x, y);
+        wxASSERT( x == 4 && y == 3 );
+    @endcode
+ */
+template <typename T> wxSwap(T& first, T& second);
+
 /**
     This macro is the same as the standard C99 @c va_copy for the compilers
     which support it or its replacement for those that don't. It must be used