]> git.saurik.com Git - wxWidgets.git/blame - include/wx/defs.h
Some cleanup.
[wxWidgets.git] / include / wx / defs.h
CommitLineData
c801d85f
KB
1/////////////////////////////////////////////////////////////////////////////
2// Name: defs.h
3// Purpose: Declarations/definitions common to all wx source files
4// Author: Julian Smart and others
5// Modified by:
6// Created: 01/02/97
7// RCS-ID: $Id$
8// Copyright: (c)
3f4a0c5b 9// Licence: wxWindows licence
c801d85f
KB
10/////////////////////////////////////////////////////////////////////////////
11
34138703
JS
12#ifndef _WX_DEFS_H_
13#define _WX_DEFS_H_
c801d85f
KB
14
15#ifdef __GNUG__
d22699b5 16 #pragma interface "defs.h"
c801d85f
KB
17#endif
18
3f4a0c5b
VZ
19// ----------------------------------------------------------------------------
20// compiler and OS identification
21// ----------------------------------------------------------------------------
c801d85f 22
b12915c1
VZ
23// OS: first test for generic Unix defines, then for particular flavours and
24// finally for Unix-like systems
5b34447b 25#if defined(__unix) || defined(__unix__) || defined(____SVR4____) || \
b12915c1 26 defined(__LINUX__) || defined(__sgi) || \
91b8de8d 27 defined(__hpux) || defined(sun) || defined(__SUN__) || defined(_AIX) || \
b12915c1 28 defined(__EMX__) || defined(__VMS) || defined(__BEOS__)
5b34447b 29
3fb98ddf 30 #define __UNIX_LIKE__
3f4a0c5b
VZ
31
32 // Helps SGI compilation, apparently
33 #ifdef __SGI__
34 #ifdef __GNUG__
35 #define __need_wchar_t
36 #else // !gcc
37 // Note I use the term __SGI_CC__ for both cc and CC, its not a good
38 // idea to mix gcc and cc/CC, the name mangling is different
39 #define __SGI_CC__
40 #endif // gcc/!gcc
41 #endif // SGI
42
43 #if defined(sun) || defined(__SUN__)
44 #ifndef __GNUG__
45 #ifndef __SUNCC__
46 #define __SUNCC__
47 #endif // Sun CC
48 #endif
49 #endif // Sun
5b34447b 50
8be97d65 51#elif defined(applec) || defined(THINK_C) || ( defined( __MWERKS__ ) && !defined(__INTEL__) )
5b34447b 52 // MacOS
1777b9bb
DW
53#elif defined(__OS2__)
54 #if defined(__IBMCPP__)
55 #define __VISAGEAVER__ __IBMCPP__
56 #endif
57 #ifndef __WXOS2__
58 #define __WXOS2__
59 #endif
60 #ifndef __WXPM__
61 #define __WXPM__
62 #endif
d5d63453 63
1777b9bb 64 // Place other OS/2 compiler environment defines here
02b6f531
DW
65 #if defined(__VISAGECPP__)
66 // VisualAge is the only thing that understands _Optlink
67 #define LINKAGEMODE _Optlink
68 #endif
3f4a0c5b
VZ
69#else // Windows
70 #ifndef __WINDOWS__
71 #define __WINDOWS__
72 #endif // Windows
73
74 // define another standard symbol for Microsoft Visual C++: the standard one
75 // (_MSC_VER) is also defined by Metrowerks compiler
76 #if defined(_MSC_VER) && !defined(__MWERKS__)
858f7d66 77 #define __VISUALC__ _MSC_VER
3f4a0c5b
VZ
78 #elif defined(__BCPLUSPLUS__) && !defined(__BORLANDC__)
79 #define __BORLANDC__
80 #elif defined(__WATCOMC__)
81 //#define __WATCOMC__
82 #elif defined(__SC__)
83 #define __SYMANTECC__
84 #endif // compiler
85#endif // OS
5dcf05ae 86
d5d63453
VZ
87// LINKAGEMODE mode is empty for everyting except OS/2
88#ifndef LINKAGEMODE
89 #define LINKAGEMODE
90#endif // LINKAGEMODE
91
fd3f686c 92// suppress some Visual C++ warnings
3f4a0c5b 93#ifdef __VISUALC__
197dd9af 94# pragma warning(disable:4201) // nonstandard extension used: nameless struct/union
539dae52 95# pragma warning(disable:4244) // conversion from double to float
fd3f686c 96# pragma warning(disable:4100) // unreferenced formal parameter
a23fd0e1
VZ
97# pragma warning(disable:4511) // copy ctor couldn't be generated
98# pragma warning(disable:4512) // operator=() couldn't be generated
197dd9af 99# pragma warning(disable:4699) // Using precompiled header
27a9bd48 100# pragma warning(disable:4134) // conversion between pointers to members of same class
197dd9af 101#ifndef WIN32
27a9bd48
PA
102# pragma warning(disable:4135) // conversion between different integral types
103# pragma warning(disable:4769) // assignment of near pointer to long integer
197dd9af
PA
104// This one is really annoying, since it occurs for each cast to (HANDLE)...
105# pragma warning(disable:4305) // truncation of long to near ptr
27a9bd48 106#endif
539dae52 107#endif // __VISUALC__
c801d85f 108
a3ef5bf5
JS
109// suppress some Salford C++ warnings
110#ifdef __SALFORDC__
111# pragma suppress 353 // Possible nested comments
112# pragma suppress 593 // Define not used
113# pragma suppress 61 // enum has no name (doesn't suppress!)
114# pragma suppress 106 // unnamed, unused parameter
115# pragma suppress 571 // Virtual function hiding
539dae52
VZ
116#endif // __SALFORDC__
117
e90c1d2a
VZ
118#if defined(__VISUALC__) && !defined(WIN32)
119 // VC1.5 does not have LPTSTR type
120 #define LPTSTR LPSTR
121 #define LPCTSTR LPCSTR
122#endif // VC++ 1.5
cc985fac 123
539dae52 124// Digital Unix C++ compiler only defines this symbol for .cxx and .hxx files,
e3f39499 125// so define it ourselves
539dae52 126#ifdef __DECCXX
e22c27b6 127#ifndef __VMS
aec34b46
JJ
128# define __cplusplus
129#endif
539dae52 130#endif // __DECCXX
a3ef5bf5 131
e3f39499 132// Resolves linking problems under HP-UX
5b34447b 133#if defined(__HPUX__) && defined(__GNUG__)
e3f39499
VZ
134 #define va_list __gnuc_va_list
135#endif // HP-UX
2f78bd2c 136
65fd5cb0
RS
137// Mingw32 gcc-2.95 uses new windows headers which are more ms-like
138// we are setting this define because of the complex check
139// using NORLANDER as Cygwin may follow. (header author is Anders Norlander)
4b6f0b91 140#if defined(__MINGW32__) && ((__GNUC__>2) ||((__GNUC__==2) && (__GNUC_MINOR__>=95)))
c42404a5
VZ
141 #ifndef wxUSE_NORLANDER_HEADERS
142 #define wxUSE_NORLANDER_HEADERS 1
143 #endif
144#else
145 #ifndef wxUSE_NORLANDER_HEADERS
146 #define wxUSE_NORLANDER_HEADERS 0
147 #endif
1a7f3062 148#endif
65fd5cb0 149
1c383dba
VZ
150// "old" GNUWIN32 is the one without Norlander's headers: it lacks the standard
151// Win32 headers and we define the used stuff ourselves for it in
152// wx/msw/gnuwin32/extra.h
9376d86e 153#if defined(__GNUC__) && !wxUSE_NORLANDER_HEADERS
1c383dba
VZ
154 #define __GNUWIN32_OLD__
155#endif
e3f39499 156
c801d85f
KB
157//////////////////////////////////////////////////////////////////////////////////
158// Currently Only MS-Windows/NT, XView and Motif are supported
159//
508203b0 160#if defined(__HPUX__) && !defined(__WXGTK__)
3f480da3 161 #ifndef __WXMOTIF__
508203b0
VZ
162 #define __WXMOTIF__
163 #endif // __WXMOTIF__
c801d85f 164#endif
508203b0 165
2049ba38 166#if defined(__WXMOTIF__)
508203b0 167 #define __X__
c801d85f
KB
168#endif
169
16ee7f42 170#ifdef __WXMSW__
8a84f3a0
VZ
171
172#if defined(_WIN32) || defined(WIN32) || defined(__NT__)
173 #ifndef __WIN32__
174 #define __WIN32__
634d3cc8 175 #endif
c801d85f
KB
176#endif
177
5ea105e0
RR
178#ifdef __WXWINE__
179 #ifndef __WIN32__
180 #define __WIN32__
181 #endif
182 #ifndef __WIN95__
183 #define __WIN95__
184 #endif
185 #ifndef STRICT
186 #define STRICT
187 #endif
188#endif
189
c801d85f
KB
190#ifndef __WIN32__
191#define __WIN16__
192#endif
193
194#if !defined(__WIN95__) && (WINVER >= 0x0400)
195#define __WIN95__
196#endif
197
57c208c5
JS
198#if defined(TWIN32) && !defined(__TWIN32__)
199#define __TWIN32__
200#endif
201
16ee7f42
VZ
202#endif // wxMSW
203
c801d85f 204// Make sure the environment is set correctly
2049ba38 205#if defined(__WXMSW__) && defined(__X__)
ba6f401d 206 #error "Target can't be both X and Windows"
e90c1d2a
VZ
207#elif !defined(__WXMOTIF__) && !defined(__WXMSW__) && !defined(__WXGTK__) && \
208 !defined(__WXPM__) && !defined(__WXMAC__) && !defined(__X__) && \
209 !defined(__WXQT__) && !defined(__WXSTUBS__) && wxUSE_GUI
1777b9bb 210 #error "No Target! Use -D[__WXMOTIF__|__WXGTK__|__WXMSW__|__WXMAC__|__WXQT__|__WXPM__|__WXSTUBS__]"
c801d85f
KB
211#endif
212
d22699b5
VZ
213// ----------------------------------------------------------------------------
214// wxWindows options
215// ----------------------------------------------------------------------------
216
217#include <stddef.h>
218
219#include "wx/setup.h"
220
221// just in case they were defined in setup.h
222#undef PACKAGE
223#undef VERSION
224
e115e771
RR
225// this has to be done after including setup.h which might
226// define __HPUX__ 1 itself
227#if defined(__hpux) && !defined(__HPUX__)
228 #define __HPUX__
229#endif // HP-UX
230
b12915c1 231// if we're on a Unix system but didn't use configure (so that setup.h didn't
3fb98ddf
VZ
232// define __UNIX__), do define __UNIX__ now
233#if !defined(__UNIX__) && defined(__UNIX_LIKE__)
234 #define __UNIX__
235#endif // Unix
236
d22699b5
VZ
237#include "wx/version.h"
238
e90c1d2a
VZ
239// ----------------------------------------------------------------------------
240// compatibility defines
241// ----------------------------------------------------------------------------
242
243// possibility to build non GUI apps is new, so don't burden ourselves with
244// compatibility code
245#if !wxUSE_GUI
246 #undef WXWIN_COMPATIBILITY_2
247 #define WXWIN_COMPATIBILITY_2 0
248#endif // !GUI
249
57493f9f
VZ
250// ============================================================================
251// non portable C++ features
252// ============================================================================
253
254// ----------------------------------------------------------------------------
255// check for native bool type and TRUE/FALSE constants
256// ----------------------------------------------------------------------------
257
e90c1d2a
VZ
258// define boolean constants if not done yet
259#ifndef TRUE
260 #define TRUE 1
261#endif
c801d85f 262
e90c1d2a
VZ
263#ifndef FALSE
264 #define FALSE 0
265#endif
c801d85f 266
57493f9f
VZ
267// Add more tests here for Windows compilers that already define bool
268// (under Unix, configure tests for this)
269#ifndef HAVE_BOOL
270 #if defined( __MWERKS__ )
585ae8cb 271 #if (__MWERKS__ >= 0x1000) && __option(bool)
57493f9f
VZ
272 #define HAVE_BOOL
273 #endif
274 #elif defined(__VISUALC__) && (__VISUALC__ == 1020)
275 // in VC++ 4.2 the bool keyword is reserved (hence can't be typedefed)
276 // but not implemented, so we must #define it
277 #define bool unsigned int
794005c0
JS
278 #elif defined(__VISUALC__) && (__VISUALC__ == 1010)
279 // For VisualC++ 4.1, we need to define
280 // bool as something between 4.0 & 5.0...
281 typedef unsigned int wxbool;
282 #define bool wxbool
283 #define HAVE_BOOL
57493f9f
VZ
284 #elif defined(__VISUALC__) && (__VISUALC__ > 1020)
285 // VC++ supports bool since 4.2
286 #define HAVE_BOOL
287 #elif defined(__BORLANDC__) && (__BORLANDC__ >= 0x500)
288 // Borland 5.0+ supports bool
289 #define HAVE_BOOL
290 #elif defined(__WATCOMC__) && (__WATCOMC__ >= 1100)
291 // Watcom 11+ supports bool
292 #define HAVE_BOOL
6776a0b2
JS
293 #elif defined(__GNUWIN32__)
294 // Cygwin supports bool
295 #define HAVE_BOOL
1777b9bb 296 #elif defined(__VISAGECPP__)
51d7e4e7
DW
297 #if __IBMCPP__ < 400
298 typedef unsigned long bool;
299 #endif
1777b9bb 300 #define HAVE_BOOL
57493f9f
VZ
301 #endif // compilers
302#endif // HAVE_BOOL
303
304#if !defined(HAVE_BOOL) && !defined(bool)
305 // NB: of course, this doesn't replace the standard type, because, for
306 // example, overloading based on bool/int parameter doesn't work and
307 // so should be avoided in portable programs
aec34b46
JJ
308#ifndef VMS
309typedef unsigned int bool;
310#endif
57493f9f 311#endif // bool
c801d85f
KB
312
313typedef short int WXTYPE;
42e69d6b
VZ
314
315// special care should be taken with this type under Windows where the real
316// window id is unsigned, so we must always do the cast before comparing them
317// (or else they would be always different!). Usign wxGetWindowId() which does
318// the cast itself is recommended. Note that this type can't be unsigned
319// because -1 is a valid (and largely used) value for window id.
c801d85f
KB
320typedef int wxWindowID;
321
322// Macro to cut down on compiler warnings.
323#if REMOVE_UNUSED_ARG
57493f9f 324 #define WXUNUSED(identifier) /* identifier */
c801d85f 325#else // stupid, broken compiler
57493f9f 326 #define WXUNUSED(identifier) identifier
c801d85f
KB
327#endif
328
6f2a55e3
VZ
329// some arguments are only used in debug mode, but unused in release one
330#ifdef __WXDEBUG__
331 #define WXUNUSED_UNLESS_DEBUG(param) param
332#else
333 #define WXUNUSED_UNLESS_DEBUG(param) WXUNUSED(param)
334#endif
335
0661ec39
VZ
336// ----------------------------------------------------------------------------
337// portable calling conventions macros
338// ----------------------------------------------------------------------------
339
1222db72
VZ
340// stdcall is used for all functions called by Windows under Windows
341#ifdef __WINDOWS__
342 #if defined(__GNUWIN32__)
ba2d8605 343 #define wxSTDCALL __attribute__((stdcall))
0661ec39
VZ
344 #else
345 // both VC++ and Borland understand this
ba2d8605 346 #define wxSTDCALL _stdcall
0661ec39 347 #endif
ba2d8605 348
1222db72
VZ
349#else // Win
350 // no such stupidness under Unix
351 #define wxSTDCALL
352#endif // platform
353
354// wxCALLBACK should be used for the functions which are called back by
355// Windows (such as compare function for wxListCtrl)
356#if defined(__WIN32__)
357 #define wxCALLBACK wxSTDCALL
0661ec39 358#else
8f177c8e 359 // no stdcall under Unix nor Win16
0661ec39
VZ
360 #define wxCALLBACK
361#endif // platform
362
363// callling convention for the qsort(3) callback
364
365#if defined(__VISUALC__)
366 #define wxCMPFUNC_CONV _cdecl
367#elif defined(__VISAGECPP__)
368 #define wxCMPFUNC_CONV _Optlink
369#else // !Visual C++
370 #define wxCMPFUNC_CONV
371#endif // compiler
372
373// compatibility :-(
374#define CMPFUNC_CONV wxCMPFUNC_CONV
375
376// ----------------------------------------------------------------------------
377// Making or using wxWindows as a Windows DLL
378// ----------------------------------------------------------------------------
c801d85f 379
1777b9bb 380#if defined(__WXMSW__)
c801d85f 381
aed0ed3c
JS
382// _declspec works in BC++ 5 and later, as well as VC++
383#if defined(__VISUALC__) || defined(__BORLANDC__)
c801d85f
KB
384
385# ifdef WXMAKINGDLL
aed0ed3c
JS
386# define WXDLLEXPORT _declspec( dllexport )
387# define WXDLLEXPORT_DATA(type) _declspec( dllexport ) type
388# define WXDLLEXPORT_CTORFN
c801d85f 389# elif defined(WXUSINGDLL)
aed0ed3c
JS
390# define WXDLLEXPORT _declspec( dllimport )
391# define WXDLLEXPORT_DATA(type) _declspec( dllimport ) type
c801d85f
KB
392# define WXDLLEXPORT_CTORFN
393# else
394# define WXDLLEXPORT
395# define WXDLLEXPORT_DATA(type) type
396# define WXDLLEXPORT_CTORFN
397# endif
398
6f4968e2
GRG
399#elif defined(__GNUC__)
400
401# ifdef WXMAKINGDLL
402# define WXDLLEXPORT __declspec( dllexport )
403# define WXDLLEXPORT_DATA(type) __declspec( dllexport ) type
404# define WXDLLEXPORT_CTORFN
405# elif defined(WXUSINGDLL)
406# define WXDLLEXPORT __declspec( dllimport )
407# define WXDLLEXPORT_DATA(type) __declspec( dllimport ) type
408# define WXDLLEXPORT_CTORFN
409# else
410# define WXDLLEXPORT
411# define WXDLLEXPORT_DATA(type) type
412# define WXDLLEXPORT_CTORFN
413# endif
414
1777b9bb
DW
415#elif defined(__WXPM__)
416
417# ifdef WXMAKINGDLL
418# define WXDLLEXPORT _Export
419# define WXDLLEXPORT_DATA(type) _Export type
420# define WXDLLEXPORT_CTORFN
421# elif defined(WXUSINGDLL)
422# define WXDLLEXPORT _Export
423# define WXDLLEXPORT_DATA(type) _Export type
424# define WXDLLEXPORT_CTORFN
425# else
426# define WXDLLEXPORT
427# define WXDLLEXPORT_DATA(type) type
428# define WXDLLEXPORT_CTORFN
429# endif
430
aed0ed3c
JS
431#else
432# define WXDLLEXPORT
433# define WXDLLEXPORT_DATA(type) type
434# define WXDLLEXPORT_CTORFN
c801d85f
KB
435#endif
436
57493f9f 437#else // !Windows
c801d85f
KB
438# define WXDLLEXPORT
439# define WXDLLEXPORT_DATA(type) type
440# define WXDLLEXPORT_CTORFN
57493f9f 441#endif // Win/!Win
c801d85f
KB
442
443// For ostream, istream ofstream
444#if defined(__BORLANDC__) && defined( _RTLDLL )
445# define WXDLLIMPORT __import
446#else
447# define WXDLLIMPORT
448#endif
449
450class WXDLLEXPORT wxObject;
451class WXDLLEXPORT wxEvent;
452
c86f1403 453 /** symbolic constant used by all Find()-like functions returning positive
c801d85f 454 integer on success as failure indicator */
3c67202d 455#define wxNOT_FOUND (-1)
c801d85f 456
c801d85f
KB
457// ----------------------------------------------------------------------------
458/** @name Very common macros */
459// ----------------------------------------------------------------------------
460//@{
a3622daa
VZ
461/// delete pointer if it is not NULL and NULL it afterwards
462// (checking that it's !NULL before passing it to delete is just a
463// a question of style, because delete will do it itself anyhow, but it might
464// be considered as an error by some overzealous debugging implementations of
465// the library, so we do it ourselves)
c67daf87 466#if defined(__SGI_CC__)
d4b67f95 467// Okay this is bad styling, but the native SGI compiler is very picky, it
c67daf87 468// wont let you compare/assign between a NULL (void *) and another pointer
d4b67f95
RD
469// type. To be really clean we'd need to pass in another argument, the type
470// of p.
471// Also note the use of 0L, this would allow future possible 64bit support
472// (as yet untested) by ensuring that we zero all the bits in a pointer
473// (which is always the same length as a long (at least with the LP64 standard)
c67daf87 474// --- offer aug 98
d8260b2f 475#define wxDELETE(p) if ( (p) ) { delete (p); p = 0L; }
c67daf87 476#else
d8260b2f 477#define wxDELETE(p) if ( (p) != NULL ) { delete p; p = NULL; }
c67daf87 478#endif /* __SGI__CC__ */
a3622daa
VZ
479
480// delete an array and NULL it (see comments above)
c67daf87
UR
481#if defined(__SGI_CC__)
482// see above comment.
483#define wxDELETEA(p) if ( (p) ) { delete [] (p); p = 0L; }
484#else
d8260b2f 485#define wxDELETEA(p) if ( ((void *) (p)) != NULL ) { delete [] p; p = NULL; }
c67daf87 486#endif /* __SGI__CC__ */
c801d85f
KB
487
488/// size of statically declared array
489#define WXSIZEOF(array) (sizeof(array)/sizeof(array[0]))
490
8cb50e4b
JS
491// Use of these suppresses some compiler warnings
492WXDLLEXPORT_DATA(extern const bool) wxTrue;
493WXDLLEXPORT_DATA(extern const bool) wxFalse;
494
c801d85f
KB
495// ----------------------------------------------------------------------------
496// compiler specific settings
497// ----------------------------------------------------------------------------
498
499// to allow compiling with warning level 4 under Microsoft Visual C++ some
500// warnings just must be disabled
501#ifdef __VISUALC__
502 #pragma warning(disable: 4514) // unreferenced inline func has been removed
d4b67f95 503/*
c801d85f 504 you might be tempted to disable this one also: triggered by CHECK and FAIL
3f4a0c5b
VZ
505 macros in debug.h, but it's, overall, a rather useful one, so I leave it and
506 will try to find some way to disable this warning just for CHECK/FAIL. Anyone?
c801d85f
KB
507*/
508 #pragma warning(disable: 4127) // conditional expression is constant
c801d85f
KB
509#endif // VC++
510
3f4a0c5b
VZ
511#if defined(__MWERKS__)
512 #undef try
513 #undef except
514 #undef finally
515 #define except(x) catch(...)
516#endif // Metrowerks
8a60ae88 517
85ee3474
UU
518// where should i put this? we need to make sure of this as it breaks
519// the <iostream> code.
ea57084d 520#if !wxUSE_IOSTREAMH && defined(__WXDEBUG__)
518f33a4 521#ifndef __MWERKS__
ea57084d 522#undef __WXDEBUG__
85ee3474 523#endif
518f33a4 524#endif
85ee3474 525
c801d85f
KB
526// Callback function type definition
527typedef void (*wxFunction) (wxObject&, wxEvent&);
528
329e86bf
RR
529// ----------------------------------------------------------------------------
530// OS mnemonics -- Identify the running OS (useful for Windows)
531// ----------------------------------------------------------------------------
532
533// Not all platforms are currently available or supported
534enum
535{
b12915c1
VZ
536 wxUNKNOWN_PLATFORM,
537 wxCURSES, // Text-only CURSES
538 wxXVIEW_X, // Sun's XView OpenLOOK toolkit
539 wxMOTIF_X, // OSF Motif 1.x.x
540 wxCOSE_X, // OSF Common Desktop Environment
541 wxNEXTSTEP, // NeXTStep
542 wxMACINTOSH, // Apple System 7 and 8
543 wxBEOS, // BeOS
544 wxGTK, // GTK on X
545 wxGTK_WIN32, // GTK on Win32
546 wxGTK_OS2, // GTK on OS/2
547 wxGTK_BEOS, // GTK on BeOS
548 wxQT, // Qt
549 wxGEOS, // GEOS
550 wxOS2_PM, // OS/2 Workplace
551 wxWINDOWS, // Windows or WfW
552 wxPENWINDOWS, // Windows for Pen Computing
553 wxWINDOWS_NT, // Windows NT
554 wxWIN32S, // Windows 32S API
555 wxWIN95, // Windows 95
556 wxWIN386, // Watcom 32-bit supervisor modus
557 wxMGL_UNIX, // MGL with direct hardware access
558 wxMGL_X, // MGL on X
559 wxMGL_WIN32, // MGL on Win32
560 wxMGL_OS2, // MGL on OS/2
561 wxWINDOWS_OS2 // Native OS/2 PM
329e86bf
RR
562};
563
d716d967 564// ----------------------------------------------------------------------------
72cdf4c9 565// standard wxWindows types
d716d967
RR
566// ----------------------------------------------------------------------------
567
72cdf4c9
VZ
568// the type for screen and DC coordinates
569
570#if wxUSE_COMPATIBLE_COORD_TYPES
571 // to ensure compatibility with 2.0, we must use long
572 #define wxCoord long
573#else // !wxUSE_COMPATIBLE_COORD_TYPES
574 #ifdef __WIN16__
575 // under Win16, int is too small, so use long to allow for bigger
576 // virtual canvases
577 typedef long wxCoord;
578 #else // !Win16
579 // other platforms we support have at least 32bit int - quite enough
580 typedef int wxCoord;
581 #endif // Win16/!Win16
582#endif // wxUSE_COMPATIBLE_COORD_TYPES/!wxUSE_COMPATIBLE_COORD_TYPES
583
d716d967
RR
584// fixed length types
585
56d7679d 586#define wxInt8 char signed
bac507e0 587#define wxUint8 char unsigned
d716d967
RR
588
589#ifdef __WIN16__
bac507e0
DW
590#define wxInt16 int signed
591#define wxUint16 int unsigned
592#define wxInt32 long signed
593#define wxUint32 long unsigned
d716d967
RR
594#endif
595
596#ifdef __WIN32__
bac507e0
DW
597#define wxInt16 short signed
598#define wxUint16 short unsigned
599#define wxInt32 int signed
600#define wxUint32 int unsigned
d716d967
RR
601#endif
602
603#ifdef __WXMAC__
bac507e0
DW
604#define wxInt16 short signed
605#define wxUint16 short unsigned
606#define wxInt32 int signed
607#define wxUint32 int unsigned
d716d967
RR
608#endif
609
610#ifdef __WXOS2__
bac507e0
DW
611#define wxInt16 short signed
612#define wxUint16 short unsigned
613#define wxInt32 int signed
614#define wxUint32 int unsigned
d716d967
RR
615#endif
616
617#if !defined(__WXMSW__) && !defined(__WXMAC__) && !defined(__WXOS2__)
618 #if defined(SIZEOF_INT)
329e86bf 619 /* well, this shouldn't happen... */
bac507e0
DW
620 #define wxInt16 short signed
621 #define wxUint16 short unsigned
622 #define wxInt32 int signed
623 #define wxUint32 int unsigned
d716d967 624 #else
bac507e0
DW
625 #define wxInt16 short signed
626 #define wxUint16 short unsigned
627 #define wxInt32 int signed
628 #define wxUint32 int unsigned
d716d967
RR
629 #endif
630#endif
631
56d7679d 632#define wxByte wxUint8
bac507e0 633#define wxWord wxUint16
d716d967 634
43543d98 635// base floating point types
7c74e7fe
SC
636// wxFloat32 : 32 bit IEEE float ( 1 sign , 8 exponent bits , 23 fraction bits
637// wxFloat64 : 64 bit IEEE float ( 1 sign , 11 exponent bits , 52 fraction bits
638// wxDouble : native fastest representation that has at least wxFloat64
639// precision, so use the IEEE types for storage , and this for calculations
640
43543d98
DW
641typedef float wxFloat32 ;
642#if defined( __WXMAC__ ) && defined (__MWERKS__)
f608bc67 643 typedef short double wxFloat64;
7c74e7fe 644#else
f608bc67 645 typedef double wxFloat64;
7c74e7fe
SC
646#endif
647
43543d98 648#if defined( __WXMAC__ ) && !defined( __POWERPC__ )
20d9661c 649 typedef long double wxDouble;
7c74e7fe 650#else
20d9661c 651 typedef double wxDouble ;
7c74e7fe
SC
652#endif
653
72cdf4c9
VZ
654// ----------------------------------------------------------------------------
655// byte ordering related definition and macros
656// ----------------------------------------------------------------------------
657
d716d967
RR
658// byte sex
659
660#define wxBIG_ENDIAN 4321
661#define wxLITTLE_ENDIAN 1234
662#define wxPDP_ENDIAN 3412
663
664#ifdef WORDS_BIGENDIAN
665#define wxBYTE_ORDER wxBIG_ENDIAN
666#else
667#define wxBYTE_ORDER wxLITTLE_ENDIAN
668#endif
669
670// byte swapping
671
7c74e7fe
SC
672#if defined (__MWERKS__) && ( (__MWERKS__ < 0x0900) || macintosh )
673// assembler versions for these
674#ifdef __POWERPC__
f608bc67
VZ
675 inline wxUint16 wxUINT16_SWAP_ALWAYS( wxUint16 i )
676 {return (__lhbrx( &i , 0 ) ) ;}
677 inline wxInt16 wxINT16_SWAP_ALWAYS( wxInt16 i )
678 {return (__lhbrx( &i , 0 ) ) ;}
679 inline wxUint32 wxUINT32_SWAP_ALWAYS( wxUint32 i )
680 {return (__lwbrx( &i , 0 ) ) ;}
681 inline wxInt32 wxINT32_SWAP_ALWAYS( wxInt32 i )
682 {return (__lwbrx( &i , 0 ) ) ;}
7c74e7fe 683#else
f608bc67
VZ
684 #pragma parameter __D0 wxUINT16_SWAP_ALWAYS(__D0)
685 pascal wxUint16 wxUINT16_SWAP_ALWAYS(wxUint16 value)
686 = { 0xE158 };
687
688 #pragma parameter __D0 wxINT16_SWAP_ALWAYS(__D0)
689 pascal wxInt16 wxUINT16_SWAP_ALWAYS(wxInt16 value)
690 = { 0xE158 };
691
692 #pragma parameter __D0 wxUINT32_SWAP_ALWAYS (__D0)
693 pascal wxUint32 wxUINT32_SWAP_ALWAYS(wxUint32 value)
694 = { 0xE158, 0x4840, 0xE158 };
695
696 #pragma parameter __D0 wxINT32_SWAP_ALWAYS (__D0)
697 pascal wxInt32 wxUINT32_SWAP_ALWAYS(wxInt32 value)
698 = { 0xE158, 0x4840, 0xE158 };
7c74e7fe
SC
699
700#endif
701#else // !MWERKS
d716d967
RR
702#define wxUINT16_SWAP_ALWAYS(val) \
703 ((wxUint16) ( \
704 (((wxUint16) (val) & (wxUint16) 0x00ffU) << 8) | \
705 (((wxUint16) (val) & (wxUint16) 0xff00U) >> 8)))
bac507e0 706
d716d967
RR
707#define wxINT16_SWAP_ALWAYS(val) \
708 ((wxInt16) ( \
7e2c43b8
RR
709 (((wxUint16) (val) & (wxUint16) 0x00ffU) << 8) | \
710 (((wxUint16) (val) & (wxUint16) 0xff00U) >> 8)))
bac507e0 711
d716d967
RR
712#define wxUINT32_SWAP_ALWAYS(val) \
713 ((wxUint32) ( \
714 (((wxUint32) (val) & (wxUint32) 0x000000ffU) << 24) | \
715 (((wxUint32) (val) & (wxUint32) 0x0000ff00U) << 8) | \
716 (((wxUint32) (val) & (wxUint32) 0x00ff0000U) >> 8) | \
717 (((wxUint32) (val) & (wxUint32) 0xff000000U) >> 24)))
718
719#define wxINT32_SWAP_ALWAYS(val) \
720 ((wxInt32) ( \
7e2c43b8
RR
721 (((wxUint32) (val) & (wxUint32) 0x000000ffU) << 24) | \
722 (((wxUint32) (val) & (wxUint32) 0x0000ff00U) << 8) | \
723 (((wxUint32) (val) & (wxUint32) 0x00ff0000U) >> 8) | \
724 (((wxUint32) (val) & (wxUint32) 0xff000000U) >> 24)))
7c74e7fe 725#endif
d716d967
RR
726// machine specific byte swapping
727
728#ifdef WORDS_BIGENDIAN
7e2c43b8
RR
729 #define wxUINT16_SWAP_ON_BE(val) wxUINT16_SWAP_ALWAYS(val)
730 #define wxINT16_SWAP_ON_BE(val) wxINT16_SWAP_ALWAYS(val)
731 #define wxUINT16_SWAP_ON_LE(val) (val)
732 #define wxINT16_SWAP_ON_LE(val) (val)
733 #define wxUINT32_SWAP_ON_BE(val) wxUINT32_SWAP_ALWAYS(val)
734 #define wxINT32_SWAP_ON_BE(val) wxINT32_SWAP_ALWAYS(val)
735 #define wxUINT32_SWAP_ON_LE(val) (val)
736 #define wxINT32_SWAP_ON_LE(val) (val)
d716d967 737#else
7e2c43b8
RR
738 #define wxUINT16_SWAP_ON_LE(val) wxUINT16_SWAP_ALWAYS(val)
739 #define wxINT16_SWAP_ON_LE(val) wxINT16_SWAP_ALWAYS(val)
740 #define wxUINT16_SWAP_ON_BE(val) (val)
741 #define wxINT16_SWAP_ON_BE(val) (val)
742 #define wxUINT32_SWAP_ON_LE(val) wxUINT32_SWAP_ALWAYS(val)
743 #define wxINT32_SWAP_ON_LE(val) wxINT32_SWAP_ALWAYS(val)
744 #define wxUINT32_SWAP_ON_BE(val) (val)
745 #define wxINT32_SWAP_ON_BE(val) (val)
d716d967
RR
746#endif
747
d597fcb7
RR
748// ----------------------------------------------------------------------------
749// Geometric flags
750// ----------------------------------------------------------------------------
751
752enum wxGeometryCentre
753{
754 wxCENTRE = 0x0001,
755 wxCENTER = wxCENTRE
756};
757
758// centering into frame rather than screen (obsolete)
759#define wxCENTER_FRAME 0x0000
760// centre on screen rather than parent
761#define wxCENTRE_ON_SCREEN 0x0002
762#define wxCENTER_ON_SCREEN wxCENTRE_ON_SCREEN
763
764enum wxOrientation
765{
766 wxHORIZONTAL = 0x0004,
767 wxVERTICAL = 0x0008,
2f78bd2c 768
d597fcb7
RR
769 wxBOTH = (wxVERTICAL | wxHORIZONTAL)
770};
771
772enum wxDirection
773{
774 wxLEFT = 0x0010,
775 wxRIGHT = 0x0020,
776 wxUP = 0x0040,
777 wxDOWN = 0x0080,
2f78bd2c 778
d597fcb7
RR
779 wxTOP = wxUP,
780 wxBOTTOM = wxDOWN,
2f78bd2c 781
d597fcb7
RR
782 wxNORTH = wxUP,
783 wxSOUTH = wxDOWN,
784 wxWEST = wxLEFT,
785 wxEAST = wxRIGHT,
2f78bd2c 786
d597fcb7
RR
787 wxALL = (wxUP | wxDOWN | wxRIGHT | wxLEFT)
788};
789
790enum wxAlignment
791{
792 wxALIGN_NOT = 0x0000,
be2577e4
RD
793 wxALIGN_CENTER_HORIZONTAL = 0x0100,
794 wxALIGN_CENTRE_HORIZONTAL = wxALIGN_CENTER_HORIZONTAL,
d597fcb7
RR
795 wxALIGN_LEFT = wxALIGN_NOT,
796 wxALIGN_TOP = wxALIGN_NOT,
797 wxALIGN_RIGHT = 0x0200,
be2577e4
RD
798 wxALIGN_BOTTOM = 0x0400,
799 wxALIGN_CENTER_VERTICAL = 0x0800,
800 wxALIGN_CENTRE_VERTICAL = wxALIGN_CENTER_VERTICAL,
801
802 wxALIGN_CENTER = (wxALIGN_CENTER_HORIZONTAL | wxALIGN_CENTER_VERTICAL),
803 wxALIGN_CENTRE = wxALIGN_CENTER
d597fcb7
RR
804};
805
806enum wxStretch
807{
808 wxSTRETCH_NOT = 0x0000,
809 wxSHRINK = 0x1000,
810 wxGROW = 0x2000,
be2577e4
RD
811 wxEXPAND = wxGROW,
812 wxSHAPED = 0x4000
d597fcb7
RR
813};
814
d716d967
RR
815// ----------------------------------------------------------------------------
816// Window style flags
817// ----------------------------------------------------------------------------
818
c801d85f 819/*
c801d85f
KB
820 * Values are chosen so they can be |'ed in a bit list.
821 * Some styles are used across more than one group,
822 * so the values mustn't clash with others in the group.
823 * Otherwise, numbers can be reused across groups.
824 *
825 * From version 1.66:
826 * Window (cross-group) styles now take up the first half
827 * of the flag, and control-specific styles the
828 * second half.
d4b67f95 829 *
c801d85f
KB
830 */
831
832/*
833 * Window (Frame/dialog/subwindow/panel item) style flags
834 */
329e86bf
RR
835#define wxVSCROLL 0x80000000
836#define wxHSCROLL 0x40000000
837#define wxCAPTION 0x20000000
c801d85f
KB
838
839// New styles
329e86bf
RR
840#define wxDOUBLE_BORDER 0x10000000
841#define wxSUNKEN_BORDER 0x08000000
842#define wxRAISED_BORDER 0x04000000
843#define wxBORDER 0x02000000
844#define wxSIMPLE_BORDER wxBORDER
845#define wxSTATIC_BORDER 0x01000000
846#define wxTRANSPARENT_WINDOW 0x00100000
847#define wxNO_BORDER 0x00200000
848
d80cd92a
VZ
849// Override CTL3D etc. control colour processing to allow own background
850// colour.
851// OBSOLETE - use wxNO_3D instead
329e86bf 852#define wxUSER_COLOURS 0x00800000
d80cd92a 853// Override CTL3D or native 3D styles for children
329e86bf 854#define wxNO_3D 0x00800000
d80cd92a
VZ
855
856// Clip children when painting, which reduces flicker in e.g. frames and
857// splitter windows, but can't be used in a panel where a static box must be
858// 'transparent' (panel paints the background for it)
329e86bf 859#define wxCLIP_CHILDREN 0x00400000
c801d85f 860
d80cd92a
VZ
861// Add this style to a panel to get tab traversal working outside of dialogs
862// (on by default for wxPanel, wxDialog, wxScrolledWindow)
329e86bf 863#define wxTAB_TRAVERSAL 0x00080000
c801d85f 864
9bf84618
VZ
865// Add this style if the control wants to get all keyboard messages (under
866// Windows, it won't normally get the dialog navigation key events)
329e86bf 867#define wxWANTS_CHARS 0x00040000
9bf84618 868
329e86bf 869// Make window retained (mostly Motif, I think)
d9ea011f 870#define wxRETAINED 0x00020000
329e86bf 871#define wxBACKINGSTORE wxRETAINED
c801d85f 872
d9ea011f
VZ
873// don't invalidate the whole window (resulting in a PAINT event) when the
874// window is resized (currently, makes sense for wxMSW only)
193fe989 875#define wxNO_FULL_REPAINT_ON_RESIZE 0x00010000
d80cd92a
VZ
876
877/*
878 * Extra window style flags (use wxWS_EX prefix to make it clear that they
879 * should be passed to wxWindow::SetExtraStyle(), not SetWindowStyle())
880 */
881
882// by default, TransferDataTo/FromWindow() only work on direct children of the
883// window (compatible behaviour), set this flag to make them recursively
884// descend into all subwindows
885#define wxWS_EX_VALIDATE_RECURSIVELY 0x00000001
886
c801d85f 887/*
329e86bf 888 * wxFrame/wxDialog style flags
c801d85f 889 */
3f4a0c5b
VZ
890#define wxSTAY_ON_TOP 0x8000
891#define wxICONIZE 0x4000
892#define wxMINIMIZE wxICONIZE
893#define wxMAXIMIZE 0x2000
894#define wxTHICK_FRAME 0x1000
3f480da3 895#define wxSYSTEM_MENU 0x0800
3f4a0c5b
VZ
896#define wxMINIMIZE_BOX 0x0400
897#define wxMAXIMIZE_BOX 0x0200
898#define wxTINY_CAPTION_HORIZ 0x0100
899#define wxTINY_CAPTION_VERT 0x0080
900#define wxRESIZE_BOX wxMAXIMIZE_BOX
901#define wxRESIZE_BORDER 0x0040
902#define wxDIALOG_MODAL 0x0020
903#define wxDIALOG_MODELESS 0x0000
329e86bf 904// Add for normal Windows frame behaviour
aeab10d0 905#define wxFRAME_FLOAT_ON_PARENT 0x0020
c801d85f 906
df61c009
JS
907/*
908 * MDI parent frame style flags
909 * Can overlap with some of the above.
910 */
911
912#define wxFRAME_NO_WINDOW_MENU 0x0100
c801d85f
KB
913
914#if WXWIN_COMPATIBILITY
915#define wxDEFAULT_FRAME wxDEFAULT_FRAME_STYLE
916#endif
917
329e86bf
RR
918#define wxDEFAULT_FRAME_STYLE \
919 (wxSYSTEM_MENU | wxRESIZE_BORDER | wxMINIMIZE_BOX | wxMAXIMIZE_BOX | wxTHICK_FRAME | wxSYSTEM_MENU | wxCAPTION | wxCLIP_CHILDREN)
aa64626e
KB
920
921#ifdef __WXMSW__
922# define wxDEFAULT_DIALOG_STYLE (wxSYSTEM_MENU|wxCAPTION|wxTHICK_FRAME)
923#else
924// Under Unix, the dialogs don't have a system menu. Specifying
925// wxSYSTEM_MENU here, will make a close button appear.
3e469ea3 926# define wxDEFAULT_DIALOG_STYLE (wxCAPTION|wxTHICK_FRAME)
aa64626e
KB
927#endif
928
c801d85f 929/*
329e86bf 930 * wxExtDialog style flags
c801d85f 931 */
329e86bf
RR
932#define wxED_CLIENT_MARGIN 0x0004
933#define wxED_BUTTONS_BOTTOM 0x0000 // has no effect
934#define wxED_BUTTONS_RIGHT 0x0002
935#define wxED_STATIC_LINE 0x0001
936
937#if defined(__WXMSW__) || defined(__WXMAC__)
938# define wxEXT_DIALOG_STYLE (wxDEFAULT_DIALOG_STYLE|wxED_CLIENT_MARGIN)
939#else
940# define wxEXT_DIALOG_STYLE (wxDEFAULT_DIALOG_STYLE|wxED_CLIENT_MARGIN|wxED_STATIC_LINE)
941#endif
c801d85f
KB
942
943/*
944 * wxToolBar style flags
945 */
5d5b3a40
RR
946#define wxTB_HORIZONTAL wxHORIZONTAL
947#define wxTB_VERTICAL wxVERTICAL
948#define wxTB_3DBUTTONS 0x0010
858b5bdd 949// Flatbar/Coolbar under Win98/ GTK 1.2
5d5b3a40 950#define wxTB_FLAT 0x0020
858b5bdd 951// use native docking under GTK
5d5b3a40 952#define wxTB_DOCKABLE 0x0040
c801d85f
KB
953
954/*
3502e687 955 * wxMenuBar style flags
c801d85f 956 */
3502e687
RR
957// use native docking
958#define wxMB_DOCKABLE 0x0001
959
ae53c98c
KB
960/*
961 * wxMenu style flags
962 */
963#define wxMENU_TEAROFF 0x0001
d4b67f95 964
3502e687
RR
965/*
966 * Apply to all panel items
967 */
c801d85f 968#define wxCOLOURED 0x0800
c801d85f 969#define wxFIXED_LENGTH 0x0400
c801d85f
KB
970
971/*
972 * Styles for wxListBox
973 */
c801d85f 974#define wxLB_SORT 0x0010
9c331ded 975#define wxLB_SINGLE 0x0020
c801d85f
KB
976#define wxLB_MULTIPLE 0x0040
977#define wxLB_EXTENDED 0x0080
978// wxLB_OWNERDRAW is Windows-only
979#define wxLB_OWNERDRAW 0x0100
9c331ded
JS
980#define wxLB_NEEDED_SB 0x0200
981#define wxLB_ALWAYS_SB 0x0400
c801d85f
KB
982#define wxLB_HSCROLL wxHSCROLL
983
984/*
985 * wxTextCtrl style flags
986 */
c857185c
VZ
987// the flag bits 0x0001, 2, 4 and 8 are free but should be used only for the
988// things which don't make sense for a text control used by wxTextEntryDialog
989// because they would otherwise conflict with wxOK, wxCANCEL, wxCENTRE
c801d85f
KB
990#define wxTE_READONLY 0x0010
991#define wxTE_MULTILINE 0x0020
2004484f 992#define wxTE_PROCESS_TAB 0x0040
c49245f8
VZ
993// this style means to use RICHEDIT control and does something only under wxMSW
994// and Win32 and is silently ignored under all other platforms
995#define wxTE_RICH 0x0080
b70ababc 996#define wxTE_NO_VSCROLL 0x0100
7682a175 997#define wxTE_AUTO_SCROLL 0x0200
c857185c
VZ
998#define wxPROCESS_ENTER 0x0400
999#define wxPASSWORD 0x0800
1000#define wxTE_PROCESS_ENTER wxPROCESS_ENTER
1001#define wxTE_PASSWORD wxPASSWORD
c801d85f
KB
1002
1003/*
1004 * wxComboBox style flags
1005 */
1006#define wxCB_SIMPLE 0x0004
c801d85f 1007#define wxCB_SORT 0x0008
9c331ded
JS
1008#define wxCB_READONLY 0x0010
1009#define wxCB_DROPDOWN 0x0020
c801d85f
KB
1010
1011/*
0544bc0a 1012 * wxRadioBox style flags
c801d85f 1013 */
fa18b757 1014// New, more intuitive names to specify majorDim argument
0544bc0a
RR
1015#define wxRA_SPECIFY_COLS wxHORIZONTAL
1016#define wxRA_SPECIFY_ROWS wxVERTICAL
fa18b757 1017// Old names for compatibility
c801d85f
KB
1018#define wxRA_HORIZONTAL wxHORIZONTAL
1019#define wxRA_VERTICAL wxVERTICAL
0544bc0a
RR
1020
1021/*
1022 * wxRadioButton style flag
1023 */
c801d85f
KB
1024#define wxRB_GROUP 0x0004
1025
1026/*
1027 * wxGauge flags
1028 */
c801d85f
KB
1029#define wxGA_HORIZONTAL wxHORIZONTAL
1030#define wxGA_VERTICAL wxVERTICAL
e115e771 1031#define wxGA_PROGRESSBAR 0x0010
329e86bf 1032// Windows only
e115e771 1033#define wxGA_SMOOTH 0x0020
c801d85f
KB
1034
1035/*
1036 * wxSlider flags
1037 */
2f78bd2c
RD
1038#define wxSL_HORIZONTAL wxHORIZONTAL // 4
1039#define wxSL_VERTICAL wxVERTICAL // 8
c801d85f
KB
1040// The next one is obsolete - use scroll events instead
1041#define wxSL_NOTIFY_DRAG 0x0000
2f78bd2c 1042#define wxSL_AUTOTICKS 0x0010
c801d85f
KB
1043// #define wxSL_MANUALTICKS 0x0010
1044#define wxSL_LABELS 0x0020
1045#define wxSL_LEFT 0x0040
1046#define wxSL_TOP 0x0080
1047#define wxSL_RIGHT 0x0100
1048#define wxSL_BOTTOM 0x0200
1049#define wxSL_BOTH 0x0400
1050#define wxSL_SELRANGE 0x0800
1051
1052/*
1053 * wxScrollBar flags
1054 */
c801d85f
KB
1055#define wxSB_HORIZONTAL wxHORIZONTAL
1056#define wxSB_VERTICAL wxVERTICAL
1057
1058/*
b0351fc9 1059 * wxButton flags (Win32 only)
c801d85f 1060 */
c801d85f
KB
1061#define wxBU_AUTODRAW 0x0004
1062#define wxBU_NOAUTODRAW 0x0000
1063
1064/*
1065 * wxTreeCtrl flags
1066 */
c801d85f
KB
1067#define wxTR_HAS_BUTTONS 0x0004
1068#define wxTR_EDIT_LABELS 0x0008
64693098 1069#define wxTR_LINES_AT_ROOT 0x0010
c801d85f 1070
c25ccf85
RR
1071#define wxTR_SINGLE 0x0000
1072#define wxTR_MULTIPLE 0x0020
1073#define wxTR_EXTENDED 0x0040
5ea47806 1074#define wxTR_HAS_VARIABLE_ROW_HEIGHT 0x0080
c25ccf85 1075
c801d85f
KB
1076/*
1077 * wxListCtrl flags
1078 */
c801d85f
KB
1079#define wxLC_ICON 0x0004
1080#define wxLC_SMALL_ICON 0x0008
1081#define wxLC_LIST 0x0010
1082#define wxLC_REPORT 0x0020
1083#define wxLC_ALIGN_TOP 0x0040
1084#define wxLC_ALIGN_LEFT 0x0080
1085#define wxLC_AUTOARRANGE 0x0100
1086#define wxLC_USER_TEXT 0x0200
1087#define wxLC_EDIT_LABELS 0x0400
1088#define wxLC_NO_HEADER 0x0800
1089#define wxLC_NO_SORT_HEADER 0x1000
1090#define wxLC_SINGLE_SEL 0x2000
1091#define wxLC_SORT_ASCENDING 0x4000
1092#define wxLC_SORT_DESCENDING 0x8000
1093
1094#define wxLC_MASK_TYPE (wxLC_ICON | wxLC_SMALL_ICON | wxLC_LIST | wxLC_REPORT)
1095#define wxLC_MASK_ALIGN (wxLC_ALIGN_TOP | wxLC_ALIGN_LEFT)
1096#define wxLC_MASK_SORT (wxLC_SORT_ASCENDING | wxLC_SORT_DESCENDING)
1097
1098// Omitted because (a) too much detail (b) not enough style flags
1099// #define wxLC_NO_SCROLL
1100// #define wxLC_NO_LABEL_WRAP
1101// #define wxLC_OWNERDRAW_FIXED
1102// #define wxLC_SHOW_SEL_ALWAYS
1103
1104/*
1105 * wxSpinButton flags
1106 */
a3e7d24d
RR
1107#define wxSP_HORIZONTAL wxHORIZONTAL // 4
1108#define wxSP_VERTICAL wxVERTICAL // 8
1109#define wxSP_ARROW_KEYS 0x0010
1110#define wxSP_WRAP 0x0020
c801d85f
KB
1111
1112/*
cd2df130 1113 * wxSplitterWindow flags
c801d85f 1114 */
a3e7d24d
RR
1115#define wxSP_NOBORDER 0x0000
1116#define wxSP_3D 0x0010
1117#define wxSP_BORDER 0x0020
1118#define wxSP_PERMIT_UNSPLIT 0x0040
1119#define wxSP_LIVE_UPDATE 0x0080
c801d85f 1120
cd2df130
JS
1121/*
1122 * wxFrame extra flags
1123 */
cd2df130
JS
1124// No title on taskbar
1125#define wxFRAME_TOOL_WINDOW 0x0004
1126
c801d85f
KB
1127/*
1128 * wxTabCtrl flags
1129 */
329e86bf 1130#define wxTC_MULTILINE 0x0000
a3e7d24d
RR
1131#define wxTC_RIGHTJUSTIFY 0x0010
1132#define wxTC_FIXEDWIDTH 0x0020
1133#define wxTC_OWNERDRAW 0x0040
10b959e3 1134
58a8ab88
JS
1135/*
1136 * wxNotebook flags
1137 */
a3e7d24d 1138#define wxNB_FIXEDWIDTH 0x0010
4a0253b8
RS
1139#define wxNB_LEFT 0x0020
1140#define wxNB_RIGHT 0x0040
1141#define wxNB_BOTTOM 0x0080
58a8ab88 1142
c801d85f
KB
1143/*
1144 * wxStatusBar95 flags
1145 */
a3e7d24d 1146#define wxST_SIZEGRIP 0x0010
c801d85f 1147
185fa6bf
VZ
1148/*
1149 * wxStaticText flags
1150 */
1151#define wxST_NO_AUTORESIZE 0x0001
1152
b0351fc9
RR
1153/*
1154 * wxStaticLine flags
1155 */
329e86bf
RR
1156#define wxLI_HORIZONTAL wxHORIZONTAL
1157#define wxLI_VERTICAL wxVERTICAL
b0351fc9 1158
9726da4f
VZ
1159/*
1160 * wxProgressDialog flags
1161 */
329e86bf
RR
1162#define wxPD_CAN_ABORT 0x0001
1163#define wxPD_APP_MODAL 0x0002
1164#define wxPD_AUTO_HIDE 0x0004
1165#define wxPD_ELAPSED_TIME 0x0008
1166#define wxPD_ESTIMATED_TIME 0x0010
d0cf4846
VS
1167// wxGA_SMOOTH = 0x0020 may also be used with wxProgressDialog
1168#define wxPD_REMAINING_TIME 0x0040
b0351fc9 1169
ea8fe90e
VS
1170/*
1171 * wxHtmlWindow flags
1172 */
1173#define wxHW_SCROLLBAR_NEVER 0x0002
1174#define wxHW_SCROLLBAR_AUTO 0x0004
1175
1a8557b1
VZ
1176/*
1177 * wxCalendarCtrl flags
1178 */
1179#define wxCAL_SUNDAY_FIRST 0x0000
1180#define wxCAL_MONDAY_FIRST 0x0001
1181#define wxCAL_SHOW_HOLIDAYS 0x0002
bc385ba9
VZ
1182#define wxCAL_NO_YEAR_CHANGE 0x0004
1183#define wxCAL_NO_MONTH_CHANGE 0x000c // no month change => no year change
1a8557b1 1184
c801d85f 1185/*
bac507e0 1186 * extended dialog specifiers. these values are stored in a different
329e86bf
RR
1187 * flag and thus do not overlap with other style flags. note that these
1188 * values do not correspond to the return values of the dialogs (for
bac507e0 1189 * those values, look at the wxID_XXX defines).
c801d85f 1190 */
d597fcb7
RR
1191
1192// wxCENTRE already defined as 0x00000001
1193#define wxOK 0x00000004
1194#define wxYES_NO 0x00000008
1195#define wxCANCEL 0x00000010
1196#define wxYES 0x00000020
1197#define wxNO 0x00000040
1198#define wxNO_DEFAULT 0x00000080
329e86bf
RR
1199#define wxYES_DEFAULT 0x00000000 // has no effect
1200
d597fcb7
RR
1201#define wxICON_EXCLAMATION 0x00000100
1202#define wxICON_HAND 0x00000200
ebea0891
KB
1203#define wxICON_WARNING wxICON_EXCLAMATION
1204#define wxICON_ERROR wxICON_HAND
d597fcb7
RR
1205#define wxICON_QUESTION 0x00000400
1206#define wxICON_INFORMATION 0x00000800
329e86bf
RR
1207#define wxICON_STOP wxICON_HAND
1208#define wxICON_ASTERISK wxICON_INFORMATION
d597fcb7 1209#define wxICON_MASK (0x00000100|0x00000200|0x00000400|0x00000800)
329e86bf 1210
d597fcb7
RR
1211#define wxFORWARD 0x00001000
1212#define wxBACKWARD 0x00002000
1213#define wxRESET 0x00004000
1214#define wxHELP 0x00008000
1215#define wxMORE 0x00010000
1216#define wxSETUP 0x00020000
329e86bf
RR
1217
1218// ----------------------------------------------------------------------------
1219// standard IDs
1220// ----------------------------------------------------------------------------
1221
20d9661c
VZ
1222// id for a separator line in the menu (invalid for normal item)
1223#define wxID_SEPARATOR (-1)
1224
1225// this one is for compatibility only, don't use in new code
1226#ifndef ID_SEPARATOR
1227 #define ID_SEPARATOR wxID_SEPARATOR
1228#endif
1229
329e86bf
RR
1230// Standard menu IDs
1231#define wxID_LOWEST 4999
1232
1233#define wxID_OPEN 5000
1234#define wxID_CLOSE 5001
1235#define wxID_NEW 5002
1236#define wxID_SAVE 5003
1237#define wxID_SAVEAS 5004
1238#define wxID_REVERT 5005
1239#define wxID_EXIT 5006
1240#define wxID_UNDO 5007
1241#define wxID_REDO 5008
1242#define wxID_HELP 5009
1243#define wxID_PRINT 5010
1244#define wxID_PRINT_SETUP 5011
1245#define wxID_PREVIEW 5012
1246#define wxID_ABOUT 5013
1247#define wxID_HELP_CONTENTS 5014
1248#define wxID_HELP_COMMANDS 5015
1249#define wxID_HELP_PROCEDURES 5016
1250#define wxID_HELP_CONTEXT 5017
1251
1252#define wxID_CUT 5030
1253#define wxID_COPY 5031
1254#define wxID_PASTE 5032
1255#define wxID_CLEAR 5033
1256#define wxID_FIND 5034
1257#define wxID_DUPLICATE 5035
1258#define wxID_SELECTALL 5036
1259
1260#define wxID_FILE1 5050
1261#define wxID_FILE2 5051
1262#define wxID_FILE3 5052
1263#define wxID_FILE4 5053
1264#define wxID_FILE5 5054
1265#define wxID_FILE6 5055
1266#define wxID_FILE7 5056
1267#define wxID_FILE8 5057
1268#define wxID_FILE9 5058
1269
1270// Standard button IDs
1271#define wxID_OK 5100
1272#define wxID_CANCEL 5101
1273#define wxID_APPLY 5102
1274#define wxID_YES 5103
1275#define wxID_NO 5104
1276#define wxID_STATIC 5105
1277#define wxID_FORWARD 5106
1278#define wxID_BACKWARD 5107
1279#define wxID_DEFAULT 5108
1280#define wxID_MORE 5109
1281#define wxID_SETUP 5110
1282#define wxID_RESET 5111
1283
a16d3c04
KB
1284// IDs used by generic file dialog (11 consecutive starting from this value)
1285#define wxID_FILEDLGG 5900
329e86bf
RR
1286#define wxID_HIGHEST 5999
1287
329e86bf
RR
1288// ----------------------------------------------------------------------------
1289// Possible SetSize flags
1290// ----------------------------------------------------------------------------
1291
1292// Use internally-calculated width if -1
1293#define wxSIZE_AUTO_WIDTH 0x0001
1294// Use internally-calculated height if -1
1295#define wxSIZE_AUTO_HEIGHT 0x0002
1296// Use internally-calculated width and height if each is -1
1297#define wxSIZE_AUTO (wxSIZE_AUTO_WIDTH|wxSIZE_AUTO_HEIGHT)
1298// Ignore missing (-1) dimensions (use existing).
1299// For readability only: test for wxSIZE_AUTO_WIDTH/HEIGHT in code.
1300#define wxSIZE_USE_EXISTING 0x0000
1301// Allow -1 as a valid position
1302#define wxSIZE_ALLOW_MINUS_ONE 0x0004
1303// Don't do parent client adjustments (for implementation only)
1304#define wxSIZE_NO_ADJUSTMENTS 0x0008
1305
1306// ----------------------------------------------------------------------------
1307// GDI descriptions
1308// ----------------------------------------------------------------------------
c801d85f
KB
1309
1310enum {
1311// Text font families
1312 wxDEFAULT = 70,
1313 wxDECORATIVE,
1314 wxROMAN,
1315 wxSCRIPT,
1316 wxSWISS,
1317 wxMODERN,
1318 wxTELETYPE, /* @@@@ */
1319
1320// Proportional or Fixed width fonts (not yet used)
1321 wxVARIABLE = 80,
1322 wxFIXED,
1323
1324 wxNORMAL = 90,
1325 wxLIGHT,
1326 wxBOLD,
1327// Also wxNORMAL for normal (non-italic text)
1328 wxITALIC,
1329 wxSLANT,
1330
1331// Pen styles
1332 wxSOLID = 100,
1333 wxDOT,
1334 wxLONG_DASH,
1335 wxSHORT_DASH,
1336 wxDOT_DASH,
1337 wxUSER_DASH,
1338
1339 wxTRANSPARENT,
1340
1341// Brush & Pen Stippling. Note that a stippled pen cannot be dashed!!
1342// Note also that stippling a Pen IS meaningfull, because a Line is
de2d2cdc
VZ
1343 wxSTIPPLE_MASK_OPAQUE, //mask is used for blitting monochrome using text fore and back ground colors
1344 wxSTIPPLE_MASK, //mask is used for masking areas in the stipple bitmap (TO DO)
c801d85f
KB
1345// drawn with a Pen, and without any Brush -- and it can be stippled.
1346 wxSTIPPLE = 110,
1347 wxBDIAGONAL_HATCH,
1348 wxCROSSDIAG_HATCH,
1349 wxFDIAGONAL_HATCH,
1350 wxCROSS_HATCH,
1351 wxHORIZONTAL_HATCH,
1352 wxVERTICAL_HATCH,
3f4a0c5b 1353#define IS_HATCH(s) ((s)>=wxBDIAGONAL_HATCH && (s)<=wxVERTICAL_HATCH)
c801d85f
KB
1354
1355 wxJOIN_BEVEL = 120,
1356 wxJOIN_MITER,
1357 wxJOIN_ROUND,
1358
1359 wxCAP_ROUND = 130,
1360 wxCAP_PROJECTING,
1361 wxCAP_BUTT
1362};
1363
1364
1365// Logical ops
3f4a0c5b 1366typedef enum
83624f79 1367{
71fe5c01
RR
1368 wxCLEAR, wxROP_BLACK = wxCLEAR, wxBLIT_BLACKNESS = wxCLEAR, // 0
1369 wxXOR, wxROP_XORPEN = wxXOR, wxBLIT_SRCINVERT = wxXOR, // src XOR dst
1370 wxINVERT, wxROP_NOT = wxINVERT, wxBLIT_DSTINVERT = wxINVERT, // NOT dst
1371 wxOR_REVERSE, wxROP_MERGEPENNOT = wxOR_REVERSE, wxBLIT_00DD0228 = wxOR_REVERSE, // src OR (NOT dst)
1372 wxAND_REVERSE, wxROP_MASKPENNOT = wxAND_REVERSE, wxBLIT_SRCERASE = wxAND_REVERSE, // src AND (NOT dst)
1373 wxCOPY, wxROP_COPYPEN = wxCOPY, wxBLIT_SRCCOPY = wxCOPY, // src
1374 wxAND, wxROP_MASKPEN = wxAND, wxBLIT_SRCAND = wxAND, // src AND dst
1375 wxAND_INVERT, wxROP_MASKNOTPEN = wxAND_INVERT, wxBLIT_00220326 = wxAND_INVERT, // (NOT src) AND dst
1376 wxNO_OP, wxROP_NOP = wxNO_OP, wxBLIT_00AA0029 = wxNO_OP, // dst
1377 wxNOR, wxROP_NOTMERGEPEN = wxNOR, wxBLIT_NOTSRCERASE = wxNOR, // (NOT src) AND (NOT dst)
1378 wxEQUIV, wxROP_NOTXORPEN = wxEQUIV, wxBLIT_00990066 = wxEQUIV, // (NOT src) XOR dst
1379 wxSRC_INVERT, wxROP_NOTCOPYPEN = wxSRC_INVERT, wxBLIT_NOTSCRCOPY = wxSRC_INVERT, // (NOT src)
1380 wxOR_INVERT, wxROP_MERGENOTPEN = wxOR_INVERT, wxBLIT_MERGEPAINT = wxOR_INVERT, // (NOT src) OR dst
1381 wxNAND, wxROP_NOTMASKPEN = wxNAND, wxBLIT_007700E6 = wxNAND, // (NOT src) OR (NOT dst)
1382 wxOR, wxROP_MERGEPEN = wxOR, wxBLIT_SRCPAINT = wxOR, // src OR dst
1383 wxSET, wxROP_WHITE = wxSET, wxBLIT_WHITENESS = wxSET // 1
c801d85f
KB
1384} form_ops_t;
1385
329e86bf 1386/* Flood styles */
c801d85f
KB
1387#define wxFLOOD_SURFACE 1
1388#define wxFLOOD_BORDER 2
1389
329e86bf 1390/* Polygon filling mode */
c801d85f
KB
1391#define wxODDEVEN_RULE 1
1392#define wxWINDING_RULE 2
1393
329e86bf 1394/* ToolPanel in wxFrame */
3f4a0c5b
VZ
1395#define wxTOOL_TOP 1
1396#define wxTOOL_BOTTOM 2
1397#define wxTOOL_LEFT 3
1398#define wxTOOL_RIGHT 4
c801d85f 1399
9e2896e5
VZ
1400// the values of the format constants should be the same as correspondign
1401// CF_XXX constants in Windows API
3f480da3 1402enum wxDataFormatId
e3e65dac 1403{
9e2896e5
VZ
1404 wxDF_INVALID = 0,
1405 wxDF_TEXT = 1, /* CF_TEXT */
1406 wxDF_BITMAP = 2, /* CF_BITMAP */
1407 wxDF_METAFILE = 3, /* CF_METAFILEPICT */
1408 wxDF_SYLK = 4,
1409 wxDF_DIF = 5,
1410 wxDF_TIFF = 6,
1411 wxDF_OEMTEXT = 7, /* CF_OEMTEXT */
1412 wxDF_DIB = 8, /* CF_DIB */
1413 wxDF_PALETTE = 9,
1414 wxDF_PENDATA = 10,
1415 wxDF_RIFF = 11,
1416 wxDF_WAVE = 12,
1417 wxDF_UNICODETEXT = 13,
1418 wxDF_ENHMETAFILE = 14,
1419 wxDF_FILENAME = 15, /* CF_HDROP */
1420 wxDF_LOCALE = 16,
1421 wxDF_PRIVATE = 20,
1422 wxDF_MAX
e3e65dac 1423};
c801d85f 1424
83624f79 1425/* Virtual keycodes */
e3e65dac 1426
3f4a0c5b 1427enum wxKeyCode
83624f79 1428{
adde8c98
RR
1429 WXK_BACK = 8,
1430 WXK_TAB = 9,
1431 WXK_RETURN = 13,
1432 WXK_ESCAPE = 27,
1433 WXK_SPACE = 32,
1434 WXK_DELETE = 127,
1435
1436 WXK_START = 300,
1437 WXK_LBUTTON,
1438 WXK_RBUTTON,
1439 WXK_CANCEL,
1440 WXK_MBUTTON,
1441 WXK_CLEAR,
1442 WXK_SHIFT,
861ccde4 1443 WXK_ALT,
adde8c98
RR
1444 WXK_CONTROL,
1445 WXK_MENU,
1446 WXK_PAUSE,
1447 WXK_CAPITAL,
1448 WXK_PRIOR, /* Page up */
1449 WXK_NEXT, /* Page down */
1450 WXK_END,
1451 WXK_HOME,
1452 WXK_LEFT,
1453 WXK_UP,
1454 WXK_RIGHT,
1455 WXK_DOWN,
1456 WXK_SELECT,
1457 WXK_PRINT,
1458 WXK_EXECUTE,
1459 WXK_SNAPSHOT,
1460 WXK_INSERT,
1461 WXK_HELP,
1462 WXK_NUMPAD0,
1463 WXK_NUMPAD1,
1464 WXK_NUMPAD2,
1465 WXK_NUMPAD3,
1466 WXK_NUMPAD4,
1467 WXK_NUMPAD5,
1468 WXK_NUMPAD6,
1469 WXK_NUMPAD7,
1470 WXK_NUMPAD8,
1471 WXK_NUMPAD9,
1472 WXK_MULTIPLY,
1473 WXK_ADD,
1474 WXK_SEPARATOR,
1475 WXK_SUBTRACT,
1476 WXK_DECIMAL,
1477 WXK_DIVIDE,
1478 WXK_F1,
1479 WXK_F2,
1480 WXK_F3,
1481 WXK_F4,
1482 WXK_F5,
1483 WXK_F6,
1484 WXK_F7,
1485 WXK_F8,
1486 WXK_F9,
1487 WXK_F10,
1488 WXK_F11,
1489 WXK_F12,
1490 WXK_F13,
1491 WXK_F14,
1492 WXK_F15,
1493 WXK_F16,
1494 WXK_F17,
1495 WXK_F18,
1496 WXK_F19,
1497 WXK_F20,
1498 WXK_F21,
1499 WXK_F22,
1500 WXK_F23,
1501 WXK_F24,
1502 WXK_NUMLOCK,
1503 WXK_SCROLL,
1504 WXK_PAGEUP,
1505 WXK_PAGEDOWN,
3f480da3 1506
adde8c98
RR
1507 WXK_NUMPAD_SPACE,
1508 WXK_NUMPAD_TAB,
1509 WXK_NUMPAD_ENTER,
1510 WXK_NUMPAD_F1,
1511 WXK_NUMPAD_F2,
1512 WXK_NUMPAD_F3,
1513 WXK_NUMPAD_F4,
1514 WXK_NUMPAD_HOME,
1515 WXK_NUMPAD_LEFT,
1516 WXK_NUMPAD_UP,
1517 WXK_NUMPAD_RIGHT,
1518 WXK_NUMPAD_DOWN,
1519 WXK_NUMPAD_PRIOR,
1520 WXK_NUMPAD_PAGEUP,
b78cd60d 1521 WXK_NUMPAD_NEXT,
adde8c98
RR
1522 WXK_NUMPAD_PAGEDOWN,
1523 WXK_NUMPAD_END,
1524 WXK_NUMPAD_BEGIN,
1525 WXK_NUMPAD_INSERT,
1526 WXK_NUMPAD_DELETE,
1527 WXK_NUMPAD_EQUAL,
1528 WXK_NUMPAD_MULTIPLY,
1529 WXK_NUMPAD_ADD,
1530 WXK_NUMPAD_SEPARATOR,
1531 WXK_NUMPAD_SUBTRACT,
1532 WXK_NUMPAD_DECIMAL,
1533 WXK_NUMPAD_DIVIDE
c801d85f
KB
1534};
1535
e3065973
JS
1536// Mapping modes (as per Windows)
1537#define wxMM_TEXT 1
1538#define wxMM_LOMETRIC 2
1539#define wxMM_HIMETRIC 3
1540#define wxMM_LOENGLISH 4
1541#define wxMM_HIENGLISH 5
1542#define wxMM_TWIPS 6
1543#define wxMM_ISOTROPIC 7
1544#define wxMM_ANISOTROPIC 8
1545
1546#define wxMM_POINTS 9
1547#define wxMM_METRIC 10
1548
83624f79 1549/* Shortcut for easier dialog-unit-to-pixel conversion */
387a3b02 1550#define wxDLG_UNIT(parent, pt) parent->ConvertDialogToPixels(pt)
fd71308f 1551
7bcb11d3
JS
1552/* Paper types */
1553typedef enum {
1554 wxPAPER_NONE, // Use specific dimensions
1555 wxPAPER_LETTER, // Letter, 8 1/2 by 11 inches
1556 wxPAPER_LEGAL, // Legal, 8 1/2 by 14 inches
1557 wxPAPER_A4, // A4 Sheet, 210 by 297 millimeters
1558 wxPAPER_CSHEET, // C Sheet, 17 by 22 inches
1559 wxPAPER_DSHEET, // D Sheet, 22 by 34 inches
1560 wxPAPER_ESHEET, // E Sheet, 34 by 44 inches
1561 wxPAPER_LETTERSMALL, // Letter Small, 8 1/2 by 11 inches
1562 wxPAPER_TABLOID, // Tabloid, 11 by 17 inches
1563 wxPAPER_LEDGER, // Ledger, 17 by 11 inches
1564 wxPAPER_STATEMENT, // Statement, 5 1/2 by 8 1/2 inches
1565 wxPAPER_EXECUTIVE, // Executive, 7 1/4 by 10 1/2 inches
1566 wxPAPER_A3, // A3 sheet, 297 by 420 millimeters
1567 wxPAPER_A4SMALL, // A4 small sheet, 210 by 297 millimeters
1568 wxPAPER_A5, // A5 sheet, 148 by 210 millimeters
1569 wxPAPER_B4, // B4 sheet, 250 by 354 millimeters
1570 wxPAPER_B5, // B5 sheet, 182-by-257-millimeter paper
1571 wxPAPER_FOLIO, // Folio, 8-1/2-by-13-inch paper
1572 wxPAPER_QUARTO, // Quarto, 215-by-275-millimeter paper
1573 wxPAPER_10X14, // 10-by-14-inch sheet
1574 wxPAPER_11X17, // 11-by-17-inch sheet
1575 wxPAPER_NOTE, // Note, 8 1/2 by 11 inches
1576 wxPAPER_ENV_9, // #9 Envelope, 3 7/8 by 8 7/8 inches
1577 wxPAPER_ENV_10, // #10 Envelope, 4 1/8 by 9 1/2 inches
1578 wxPAPER_ENV_11, // #11 Envelope, 4 1/2 by 10 3/8 inches
1579 wxPAPER_ENV_12, // #12 Envelope, 4 3/4 by 11 inches
1580 wxPAPER_ENV_14, // #14 Envelope, 5 by 11 1/2 inches
1581 wxPAPER_ENV_DL, // DL Envelope, 110 by 220 millimeters
1582 wxPAPER_ENV_C5, // C5 Envelope, 162 by 229 millimeters
1583 wxPAPER_ENV_C3, // C3 Envelope, 324 by 458 millimeters
1584 wxPAPER_ENV_C4, // C4 Envelope, 229 by 324 millimeters
1585 wxPAPER_ENV_C6, // C6 Envelope, 114 by 162 millimeters
1586 wxPAPER_ENV_C65, // C65 Envelope, 114 by 229 millimeters
1587 wxPAPER_ENV_B4, // B4 Envelope, 250 by 353 millimeters
1588 wxPAPER_ENV_B5, // B5 Envelope, 176 by 250 millimeters
1589 wxPAPER_ENV_B6, // B6 Envelope, 176 by 125 millimeters
1590 wxPAPER_ENV_ITALY, // Italy Envelope, 110 by 230 millimeters
1591 wxPAPER_ENV_MONARCH, // Monarch Envelope, 3 7/8 by 7 1/2 inches
1592 wxPAPER_ENV_PERSONAL, // 6 3/4 Envelope, 3 5/8 by 6 1/2 inches
1593 wxPAPER_FANFOLD_US, // US Std Fanfold, 14 7/8 by 11 inches
1594 wxPAPER_FANFOLD_STD_GERMAN, // German Std Fanfold, 8 1/2 by 12 inches
1595 wxPAPER_FANFOLD_LGL_GERMAN, // German Legal Fanfold, 8 1/2 by 13 inches
1596
1597 wxPAPER_ISO_B4, // B4 (ISO) 250 x 353 mm
1598 wxPAPER_JAPANESE_POSTCARD, // Japanese Postcard 100 x 148 mm
1599 wxPAPER_9X11, // 9 x 11 in
1600 wxPAPER_10X11, // 10 x 11 in
1601 wxPAPER_15X11, // 15 x 11 in
1602 wxPAPER_ENV_INVITE, // Envelope Invite 220 x 220 mm
1603 wxPAPER_LETTER_EXTRA, // Letter Extra 9 \275 x 12 in
1604 wxPAPER_LEGAL_EXTRA, // Legal Extra 9 \275 x 15 in
1605 wxPAPER_TABLOID_EXTRA, // Tabloid Extra 11.69 x 18 in
1606 wxPAPER_A4_EXTRA, // A4 Extra 9.27 x 12.69 in
1607 wxPAPER_LETTER_TRANSVERSE, // Letter Transverse 8 \275 x 11 in
1608 wxPAPER_A4_TRANSVERSE, // A4 Transverse 210 x 297 mm
1609 wxPAPER_LETTER_EXTRA_TRANSVERSE, // Letter Extra Transverse 9\275 x 12 in
1610 wxPAPER_A_PLUS, // SuperA/SuperA/A4 227 x 356 mm
1611 wxPAPER_B_PLUS, // SuperB/SuperB/A3 305 x 487 mm
1612 wxPAPER_LETTER_PLUS, // Letter Plus 8.5 x 12.69 in
1613 wxPAPER_A4_PLUS, // A4 Plus 210 x 330 mm
1614 wxPAPER_A5_TRANSVERSE, // A5 Transverse 148 x 210 mm
1615 wxPAPER_B5_TRANSVERSE, // B5 (JIS) Transverse 182 x 257 mm
1616 wxPAPER_A3_EXTRA, // A3 Extra 322 x 445 mm
1617 wxPAPER_A5_EXTRA, // A5 Extra 174 x 235 mm
1618 wxPAPER_B5_EXTRA, // B5 (ISO) Extra 201 x 276 mm
1619 wxPAPER_A2, // A2 420 x 594 mm
1620 wxPAPER_A3_TRANSVERSE, // A3 Transverse 297 x 420 mm
1621 wxPAPER_A3_EXTRA_TRANSVERSE // A3 Extra Transverse 322 x 445 mm
1622
1623} wxPaperSize ;
1624
1625/* Printing orientation */
1626#ifndef wxPORTRAIT
1627#define wxPORTRAIT 1
1628#define wxLANDSCAPE 2
1629#endif
1630
1631/* Duplex printing modes
1632 */
1633
1634typedef enum {
1635 wxDUPLEX_SIMPLEX, // Non-duplex
1636 wxDUPLEX_HORIZONTAL,
1637 wxDUPLEX_VERTICAL
1638} wxDuplexMode;
1639
1640/* Print quality.
1641 */
1642
1643#define wxPRINT_QUALITY_HIGH -1
1644#define wxPRINT_QUALITY_MEDIUM -2
1645#define wxPRINT_QUALITY_LOW -3
1646#define wxPRINT_QUALITY_DRAFT -4
1647
1648typedef int wxPrintQuality;
1649
1650/* Print mode (currently PostScript only)
1651 */
1652
1653typedef enum {
1654 wxPRINT_MODE_NONE = 0,
1655 wxPRINT_MODE_PREVIEW = 1, // Preview in external application
1656 wxPRINT_MODE_FILE = 2, // Print to file
1657 wxPRINT_MODE_PRINTER = 3 // Send to printer
1658} wxPrintMode;
1659
2c41c440
KB
1660// ---------------------------------------------------------------------------
1661// Macro to specify "All Files" on different platforms
1662// ---------------------------------------------------------------------------
1663#if defined(__WXMSW__)
1664# define wxALL_FILES_PATTERN "*.*"
1665# define wxALL_FILES gettext_noop("All files (*.*)|*.*")
1666#else
1667# define wxALL_FILES_PATTERN "*"
1668# define wxALL_FILES gettext_noop("All files (*)|*")
1669#endif
329e86bf
RR
1670// ---------------------------------------------------------------------------
1671// macros that enable wxWindows apps to be compiled in absence of the
1672// sytem headers, although some platform specific types are used in the
1673// platform specific (implementation) parts of the headers
1674// ---------------------------------------------------------------------------
7bcb11d3 1675
519cb848
SC
1676#ifdef __WXMAC__
1677
f608bc67
VZ
1678typedef WindowPtr WXHWND;
1679typedef Handle WXHANDLE;
1680typedef CIconHandle WXHICON;
519cb848 1681//typedef unsigned long WXHFONT;
f608bc67 1682typedef MenuHandle WXHMENU;
519cb848
SC
1683//typedef unsigned long WXHPEN;
1684//typedef unsigned long WXHBRUSH;
1685//typedef unsigned long WXHPALETTE;
f608bc67
VZ
1686typedef CursHandle WXHCURSOR;
1687typedef RgnHandle WXHRGN;
519cb848
SC
1688//typedef unsigned long WXHACCEL;
1689//typedef unsigned long WXHINSTANCE;
1690typedef GWorldPtr WXHBITMAP;
1691//typedef unsigned long WXHIMAGELIST;
1692//typedef unsigned long WXHGLOBAL;
f608bc67 1693typedef GrafPtr WXHDC;
519cb848
SC
1694typedef unsigned int WXUINT;
1695typedef unsigned long WXDWORD;
1696typedef unsigned short WXWORD;
1697//typedef unsigned int WXWPARAM;
1698//typedef long WXLPARAM;
f608bc67 1699typedef RGBColor WXCOLORREF;
519cb848
SC
1700//typedef void * WXRGNDATA;
1701//typedef void * WXMSG;
1702//typedef unsigned long WXHCONV;
1703//typedef unsigned long WXHKEY;
1704//typedef void * WXDRAWITEMSTRUCT;
1705//typedef void * WXMEASUREITEMSTRUCT;
1706//typedef void * WXLPCREATESTRUCT;
1707typedef int (*WXFARPROC)();
1708
1709typedef WindowPtr WXWindow;
1710typedef ControlHandle WXWidget;
1711
1712#endif
1713
bac507e0
DW
1714#if defined(__WXMSW__) || defined(__WXPM__)
1715// Stand-ins for Windows types or OS/2, to avoid #including all of windows.h or os2.h
c801d85f
KB
1716typedef unsigned long WXHWND;
1717typedef unsigned long WXHANDLE;
1718typedef unsigned long WXHICON;
1719typedef unsigned long WXHFONT;
1720typedef unsigned long WXHMENU;
1721typedef unsigned long WXHPEN;
1722typedef unsigned long WXHBRUSH;
1723typedef unsigned long WXHPALETTE;
1724typedef unsigned long WXHCURSOR;
1725typedef unsigned long WXHRGN;
57a7b7c1 1726typedef unsigned long WXHACCEL;
c801d85f
KB
1727typedef unsigned long WXHINSTANCE;
1728typedef unsigned long WXHBITMAP;
1729typedef unsigned long WXHIMAGELIST;
1730typedef unsigned long WXHGLOBAL;
1731typedef unsigned long WXHDC;
1732typedef unsigned int WXUINT;
1733typedef unsigned long WXDWORD;
1734typedef unsigned short WXWORD;
45fcbf3b 1735#ifdef __WXMSW__
c801d85f
KB
1736typedef unsigned int WXWPARAM;
1737typedef long WXLPARAM;
45fcbf3b
DW
1738#else
1739# define WXWPARAM MPARAM
1740# define WXLPARAM MPARAM
86de7616
DW
1741# define RECT RECTL
1742# define LOGFONT FATTRS
11e59d47
DW
1743# define LOWORD SHORT1FROMMP
1744# define HIWORD SHORT2FROMMP
16a12a3d 1745#endif // __WXMSW__
c801d85f 1746typedef unsigned long WXCOLORREF;
c801d85f
KB
1747typedef void * WXRGNDATA;
1748typedef void * WXMSG;
1749typedef unsigned long WXHCONV;
0d8d91a9 1750typedef unsigned long WXHKEY;
ef366d32 1751typedef unsigned long WXHTREEITEM;
a23fd0e1 1752
c801d85f
KB
1753typedef void * WXDRAWITEMSTRUCT;
1754typedef void * WXMEASUREITEMSTRUCT;
1755typedef void * WXLPCREATESTRUCT;
a23fd0e1 1756
54da4255
DW
1757#if defined(__WXPM__)
1758typedef unsigned long WXMPARAM;
1759typedef unsigned long WXMSGID;
1760typedef void* WXRESULT;
1761typedef int (*WXFARPROC)();
1762// some windows handles not defined by PM
1763typedef unsigned long HANDLE;
1764typedef unsigned long HICON;
1765typedef unsigned long HFONT;
1766typedef unsigned long HMENU;
1767typedef unsigned long HPEN;
1768typedef unsigned long HBRUSH;
1769typedef unsigned long HPALETTE;
1770typedef unsigned long HCURSOR;
1771typedef unsigned long HINSTANCE;
1772typedef unsigned long HIMAGELIST;
1773typedef unsigned long HGLOBAL;
1774typedef unsigned long DWORD;
1775typedef unsigned short WORD;
43543d98
DW
1776
1777// WIN32 graphics types for OS/2 GPI
1778
1779// RGB under OS2 is more like a PALETTEENTRY struct under Windows so we need a real RGB def
1780#define OS2RGB(r,g,b) ((DWORD ((BYTE) (r) | ((WORD) (g) << 8)) | (((DWORD)(BYTE)(b)) << 16)))
1781
1782typedef unsigned long COLORREF;
1783#define GetBValue(rgb) ((BYTE)((rgb) >> 16))
1784#define GetGValue(rgb) ((BYTE)(((WORD)(rgb)) >> 8))
1785#define GetRValue(rgb) ((BYTE)(rgb))
1786#define PALETTEINDEX(i) ((COLORREF)(0x01000000 | (DWORD)(WORD)(i)))
1787#define PALETTERGB(r,g,b) (0x02000000 | OS2RGB(r,g,b))
1788// OS2's RGB/RGB2 is backwards from this
1789typedef struct tagPALETTEENTRY
1790{
1791 char bRed;
1792 char bGreen;
1793 char bBlue;
1794 char bFlags;
1795} PALETTEENTRY;
1796typedef struct tagLOGPALETTE
1797{
1798 WORD palVersion;
1799 WORD palNumentries;
1800 WORD PALETTEENTRY[1];
1801} LOGPALETTE;
1802#endif //__WXPM__
54da4255 1803
5ea105e0 1804#if defined(__GNUWIN32__) || defined(__WXWINE__)
a23fd0e1 1805 typedef int (*WXFARPROC)();
1e6d9499 1806#elif defined(__WIN32__)
a23fd0e1 1807 typedef int (__stdcall *WXFARPROC)();
1e6d9499 1808#else
a23fd0e1 1809 typedef int (*WXFARPROC)();
14b72bf5 1810#endif
c801d85f 1811
f03fc89f 1812typedef WXHWND WXWidget;
8fb3a512
JS
1813
1814#if defined(__BORLANDC__) && !defined(__WIN32__)
1815#ifndef LPTSTR
1816#define LPTSTR LPSTR
1817#endif
1818#ifndef LPCTSTR
1819#define LPCTSTR LPSTR
1820#endif
1821#endif
1822
1222db72 1823// the keywords needed for WinMain() declaration
790ad94f 1824
1222db72 1825#ifdef __WIN16__
1222db72 1826 #ifdef __VISUALC__
790ad94f 1827 #define WXFAR __far
1222db72 1828 #else // !VC++
790ad94f 1829 #define WXFAR _far
1222db72 1830 #endif
c5c32d72 1831#else // Win32
790ad94f
JS
1832 #ifndef WXFAR
1833 #define WXFAR
f608bc67 1834 #endif
1222db72
VZ
1835#endif // Win16/32
1836
f03fc89f 1837#endif // MSW
c801d85f 1838
589f0e3e 1839#ifdef __WXMOTIF__
83624f79 1840/* Stand-ins for X/Xt/Motif types */
589f0e3e
JS
1841typedef void* WXWindow;
1842typedef void* WXWidget;
1843typedef void* WXAppContext;
46ccb510 1844typedef void* WXColormap;
589f0e3e
JS
1845typedef void WXDisplay;
1846typedef void WXEvent;
46ccb510 1847typedef void* WXCursor;
50414e24 1848typedef void* WXPixmap;
dfc54541
JS
1849typedef void* WXFontStructPtr;
1850typedef void* WXGC;
1851typedef void* WXRegion;
e97f20a0 1852typedef void* WXFont;
f97c9854
JS
1853typedef void* WXImage;
1854typedef void* WXCursor;
1855typedef void* WXFontList;
da175b2c
RR
1856
1857typedef unsigned long Atom; /* this might fail on a few architectures */
1858
f03fc89f 1859#endif // Motif
589f0e3e 1860
83624f79
RR
1861#ifdef __WXGTK__
1862/* Stand-ins for GLIB types */
1863typedef int gint;
1864typedef unsigned guint;
1865typedef unsigned long gulong;
1866typedef void* gpointer;
953704c1 1867typedef struct _GSList GSList;
83624f79
RR
1868
1869/* Stand-ins for GDK types */
1870typedef gulong GdkAtom;
1871typedef struct _GdkColor GdkColor;
1872typedef struct _GdkColormap GdkColormap;
1873typedef struct _GdkFont GdkFont;
1874typedef struct _GdkGC GdkGC;
13111b2a
VZ
1875#ifdef __WXGTK13__
1876 typedef struct _GdkDrawable GdkWindow;
1877 typedef struct _GdkDrawable GdkBitmap;
1878 typedef struct _GdkDrawable GdkPixmap;
1879#else
1880 typedef struct _GdkWindow GdkWindow;
1881 typedef struct _GdkWindow GdkBitmap;
1882 typedef struct _GdkWindow GdkPixmap;
1883#endif
83624f79
RR
1884typedef struct _GdkCursor GdkCursor;
1885typedef struct _GdkRegion GdkRegion;
8a126fcc 1886typedef struct _GdkDragContext GdkDragContext;
63081513
RR
1887#ifdef HAVE_XIM
1888typedef struct _GdkIC GdkIC;
1889typedef struct _GdkICAttr GdkICAttr;
1890#endif
83624f79
RR
1891
1892/* Stand-ins for GTK types */
8a126fcc
RR
1893typedef struct _GtkWidget GtkWidget;
1894typedef struct _GtkStyle GtkStyle;
1895typedef struct _GtkAdjustment GtkAdjustment;
1896typedef struct _GtkList GtkList;
1897typedef struct _GtkToolbar GtkToolbar;
1898typedef struct _GtkTooltips GtkTooltips;
1899typedef struct _GtkNotebook GtkNotebook;
1900typedef struct _GtkNotebookPage GtkNotebookPage;
1901typedef struct _GtkAccelGroup GtkAccelGroup;
f608bc67
VZ
1902typedef struct _GtkItemFactory GtkItemFactory;
1903typedef struct _GtkSelectionData GtkSelectionData;
ad5c34f3 1904
f03fc89f
VZ
1905typedef GtkWidget *WXWidget;
1906#endif // GTK
ad5c34f3
JS
1907
1908// This is required because of clashing macros in windows.h, which may be
1909// included before or after wxWindows classes, and therefore must be
1910// disabled here before any significant wxWindows headers are included.
1911#ifdef __WXMSW__
1912#ifdef GetClassInfo
1913#undef GetClassInfo
1914#endif
1915
1916#ifdef GetClassName
1917#undef GetClassName
1918#endif
1919
1920#ifdef DrawText
1921#undef DrawText
1922#endif
1923
1924#ifdef GetCharWidth
1925#undef GetCharWidth
1926#endif
1927
1928#ifdef StartDoc
1929#undef StartDoc
1930#endif
1931
1932#ifdef FindWindow
1933#undef FindWindow
1934#endif
1935
1936#ifdef FindResource
1937#undef FindResource
1938#endif
83624f79 1939#endif
ad5c34f3 1940 // __WXMSW__
83624f79 1941
a23fd0e1
VZ
1942// ---------------------------------------------------------------------------
1943// macro to define a class without copy ctor nor assignment operator
1944// ---------------------------------------------------------------------------
1945
1946#define DECLARE_NO_COPY_CLASS(classname) \
1947 private: \
1948 classname(const classname&); \
1949 classname& operator=(const classname&)
1950
c801d85f 1951#endif
34138703 1952 // _WX_DEFS_H_