# qwindowdefs.h

This is the verbatim text of the qwindowdefs.h include file. It is is provided only for illustration; the copyright remains with Troll Tech.

    /****************************************************************************
    ** $Id: qwindowdefs.h,v 2.26.2.11 1998/10/29 18:45:54 hanord Exp $
    **
    ** Definition of general window system dependent functions, types and
    ** constants
    **
    ** Created : 931029
    **
    ** Copyright (C) 1992-1999 Troll Tech AS.  All rights reserved.
    **
    ** This file is part of Qt Free Edition, version 1.45.
    **
    ** See the file LICENSE included in the distribution for the usage
    ** and distribution terms, or http://www.troll.no/free-license.html.
    **
    ** IMPORTANT NOTE: You may NOT copy this file or any part of it into
    ** your own programs or libraries.
    **
    ** Please see http://www.troll.no/pricing.html for information about
    ** Qt Professional Edition, which is this same library but with a
    ** license which allows creation of commercial/proprietary software.
    **
    *****************************************************************************/

    #ifndef QWINDOWDEFS_H
    #define QWINDOWDEFS_H

    #ifndef QT_H
    #include "qobjectdefs.h"
    #endif // QT_H

    // Class forward definitions

    class QApplication;
    class QPaintDevice;
    class QPaintDeviceMetrics;
    class QWidget;
    class QWidgetMapper;
    class QWindow;
    class QDialog;
    class QColor;
    class QColorGroup;
    class QPalette;
    class QCursor;
    class QPoint;
    class QSize;
    class QRect;
    class QPointArray;
    class QPainter;
    class QRegion;
    class QFont;
    class QFontMetrics;
    class QFontInfo;
    class QPen;
    class QBrush;
    class QWMatrix;
    class QPixmap;
    class QBitmap;
    class QMovie;
    class QImage;
    class QImageIO;
    class QPicture;
    class QPrinter;
    class QAccel;
    class QTimer;
    class QClipboard;

    // Widget list (defined in qwidgetlist.h)

    #if defined(Q_TEMPLATEDLL)
    class QWidgetList;
    #else
    class QListM_QWidget;
    #define QWidgetList QListM_QWidget
    #endif

    // Window system setting

    #if defined(_OS_MAC_)
    #define _WS_MAC_
    #elif defined(_OS_MSDOS_)
    #define _WS_WIN16_
    #error "Qt requires Win32 and does not work with Windows 3.x"
    #elif defined(_WIN32_X11_)
    #define _WS_X11_
    #elif defined(_OS_WIN32_)
    #define _WS_WIN32_
    #elif defined(_OS_OS2_)
    #define _WS_PM_
    #elif defined(UNIX)
    #define _WS_X11_
    #endif

    #if defined(_WS_WIN16_) || defined(_WS_WIN32_)
    #define _WS_WIN_
    #endif

    // Window system dependent definitions

    #if defined(_WS_MAC_)
    #endif // _WS_MAC_

    #if defined(_WS_WIN_)

    #if defined(_CC_BOR_) || defined(_CC_WAT_)
    #define NEEDS_QMAIN
    #endif

    #define NO_STRICT

    typedef void *HANDLE;
    typedef void *HDC;
    typedef void *HWND;
    typedef HWND  WId;

    typedef struct tagMSG MSG;

    Q_EXPORT HANDLE qWinAppInst();
    Q_EXPORT HANDLE qWinAppPrevInst();
    Q_EXPORT int    qWinAppCmdShow();
    Q_EXPORT HANDLE qt_display_dc();

    enum WindowsVersion { WV_NT, WV_95, WV_98, WV_32s };

    #if defined(QT_DLL) || defined(QT_MAKEDLL)
    #define QT_BASEAPP
    class QBaseApplication;
    #define QApplication QBaseApplication
    #endif

    #endif // _WS_WIN16_ or _WS_WIN32_

    #if defined(_WS_PM_)

    typedef ulong HANDLE;
    typedef ulong WId;
    typedef ulong HAB;
    typedef ulong HPS;
    typedef ulong HDC;

    typedef struct _QMSG   QMSG;
    typedef struct _POINTL POINTL;
    typedef struct _RECTL  RECTL;

    HAB qPMAppInst();

    #endif // _WS_PM_

    #if defined(_WS_X11_)

    typedef unsigned int  WId;
    typedef unsigned int  HANDLE;
    typedef struct _XDisplay Display;
    typedef union  _XEvent XEvent;
    typedef struct _XGC *GC;
    typedef struct _XRegion *Region;

    Q_EXPORT Display *qt_xdisplay();
    Q_EXPORT int     qt_xscreen();
    Q_EXPORT WId     qt_xrootwin();
    Q_EXPORT GC      qt_xget_readonly_gc( bool monochrome=FALSE );
    Q_EXPORT GC      qt_xget_temp_gc( bool monochrome=FALSE );

    #endif // _WS_X11_

    #if defined(NEEDS_QMAIN)
    #define main qMain
    #endif

    // Global platform-independent types and functions

    typedef short QCOORD;                           // coordinate type
    const int QCOORD_MIN = -32768;
    const int QCOORD_MAX =  32767;

    typedef unsigned int QRgb;                      // RGB triplet

    Q_EXPORT char *qAppName();                      // get application name

    // Misc functions

    typedef void (*CleanUpFunction)();
    Q_EXPORT void qAddPostRoutine( CleanUpFunction );

    Q_EXPORT void *qt_find_obj_child( QObject *, const char *, const char * );
    #define CHILD(parent,type,name) \
            ((type*)qt_find_obj_child(parent,#type,name))

    // GUI styles

    enum GUIStyle {
        MacStyle, // OBSOLETE
        WindowsStyle,
        Win3Style, // OBSOLETE
        PMStyle, // OBSOLETE
        MotifStyle
    };

    // Widget flags

    typedef uint WFlags;

    const uint WState_Created       = 0x00000001;   // widget state flags
    const uint WState_Disabled      = 0x00000002;
    const uint WState_Visible       = 0x00000004;
    const uint WState_DoHide        = 0x00000008;
    const uint WState_ClickToFocus  = 0x00000010;
    const uint WState_TrackMouse    = 0x00000020;
    const uint WState_BlockUpdates  = 0x00000040;
    const uint WState_PaintEvent    = 0x00000080;

    const uint WType_TopLevel       = 0x00000100;   // widget type flags
    const uint WType_Modal          = 0x00000200;
    const uint WType_Popup          = 0x00000400;
    const uint WType_Desktop        = 0x00000800;

    const uint WStyle_Customize     = 0x00001000;   // window style flags
    const uint WStyle_NormalBorder  = 0x00002000;
    const uint WStyle_DialogBorder  = 0x00004000;
    const uint WStyle_NoBorder      = 0x00000000;
    const uint WStyle_Title         = 0x00008000;
    const uint WStyle_SysMenu       = 0x00010000;
    const uint WStyle_Minimize      = 0x00020000;
    const uint WStyle_Maximize      = 0x00040000;
    const uint WStyle_MinMax        = WStyle_Minimize | WStyle_Maximize;
    const uint WStyle_Tool          = 0x00080000;
    const uint WStyle_Mask          = 0x000ff000;

    const uint WCursorSet           = 0x00100000;   // misc widget flags
    const uint WDestructiveClose    = 0x00200000;
    const uint WPaintDesktop        = 0x00400000;
    const uint WPaintUnclipped      = 0x00800000;
    const uint WPaintClever         = 0x01000000;
    const uint WConfigPending       = 0x02000000;
    const uint WResizeNoErase       = 0x04000000;
    const uint WRecreated           = 0x08000000;
    const uint WExportFontMetrics   = 0x10000000;
    const uint WExportFontInfo      = 0x20000000;
    const uint WFocusSet            = 0x40000000;   // not used any more
    const uint WState_TabToFocus    = 0x80000000;

    class QFocusData;
    #if defined(_WS_WIN_)
    class QOleDropTarget;
    #endif

    // Extra QWidget data
    //  - to minimize memory usage for members that are seldom used.

    struct QWExtra {
        GUIStyle guistyle;                          // GUI Style
        short    minw, minh;                        // minimum size
        short    maxw, maxh;                        // maximum size
        short    incw, inch;                        // size increments
        char    *caption;                           // widget caption
        char    *iconText;                          // widget icon text
        QPixmap *icon;                              // widget icon
    #if defined(_WS_WIN_)
        HANDLE   winIcon;                           // internal Windows icon
        QOleDropTarget *dropTarget;                 // drop target
    #endif
        QPixmap *bg_pix;                            // background pixmap
        QFocusData *focusData;                      // focus data (for TLW)
    #if defined(_WS_X11_)
        void * xic;
    #endif
        char     bg_mode;                           // background mode

    #if defined(_WS_X11_)
        uint dnd : 1;                               // drop enable
    #endif
        uint sizegrip : 1;                          // size grip
        uint propagateFont: 2;
        uint propagatePalette: 2;
    };

    // Raster operations

    enum RasterOp                                   // raster op/transfer mode
        { CopyROP, OrROP, XorROP, EraseROP,
          NotCopyROP, NotOrROP, NotXorROP, NotEraseROP, NotROP };

    // Text formatting flags for QPainter::drawText and QLabel

    const int AlignLeft     = 0x0001;               // text alignment
    const int AlignRight    = 0x0002;
    const int AlignHCenter  = 0x0004;
    const int AlignTop      = 0x0008;
    const int AlignBottom   = 0x0010;
    const int AlignVCenter  = 0x0020;
    const int AlignCenter   = AlignVCenter | AlignHCenter;

    const int SingleLine    = 0x0040;               // misc. flags
    const int DontClip      = 0x0080;
    const int ExpandTabs    = 0x0100;
    const int ShowPrefix    = 0x0200;
    const int WordBreak     = 0x0400;
    const int GrayText      = 0x0800;
    const int DontPrint     = 0x1000;               // internal

    // Image conversion flags

    // The unusual ordering is caused by compatibility and default requirements.

    const int ColorMode_Mask         = 0x00000003;
    const int AutoColor              = 0x00000000;
    const int ColorOnly              = 0x00000003;
    const int MonoOnly               = 0x00000002;
    //        Reserved               = 0x00000001;
    const int AlphaDither_Mask       = 0x0000000c;
    const int ThresholdAlphaDither   = 0x00000000;
    const int OrderedAlphaDither     = 0x00000004;
    const int DiffuseAlphaDither     = 0x00000008;
    //        ReservedAlphaDither    = 0x0000000c;
    const int Dither_Mask            = 0x00000030;
    const int DiffuseDither          = 0x00000000;
    const int OrderedDither          = 0x00000010;
    const int ThresholdDither        = 0x00000020;
    //        ReservedDither         = 0x00000030;
    const int DitherMode_Mask        = 0x000000c0;
    const int AutoDither             = 0x00000000;
    const int PreferDither           = 0x00000040;
    const int AvoidDither            = 0x00000080;

    #endif // QWINDOWDEFS_H