42 files changed, 7123 insertions, 0 deletions
diff --git a/qmake/include/private/qapplication_p.h b/qmake/include/private/qapplication_p.h new file mode 100644 index 0000000..6fab6b3 --- a/dev/null +++ b/qmake/include/private/qapplication_p.h @@ -0,0 +1,87 @@ +/**************************************************************************** +** $Id$ +** +** Definition of some Qt private functions. +** +** Created : 000228 +** +** Copyright (C) 2000-2002 Trolltech AS. All rights reserved. +** +** This file is part of the kernel module of the Qt GUI Toolkit. +** +** This file may be distributed under the terms of the Q Public License +** as defined by Trolltech AS of Norway and appearing in the file +** LICENSE.QPL included in the packaging of this file. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition +** licenses may use this file in accordance with the Qt Commercial License +** Agreement provided with the Software. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for +** information about Qt Commercial License Agreements. +** See http://www.trolltech.com/qpl/ for QPL licensing information. +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#ifndef QAPPLICATION_P_H +#define QAPPLICATION_P_H + + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of qapplication_*.cpp, qwidget*.cpp, qcolor_x11.cpp, qfiledialog.cpp +// and many other. This header file may change from version to version +// without notice, or even be removed. +// +// We mean it. +// +// + +#ifndef QT_H +#endif // QT_H + +class QWidget; +class QObject; +class QClipboard; +class QKeyEvent; +class QMouseEvent; +class QWheelEvent; + +extern Q_EXPORT bool qt_modal_state(); +extern Q_EXPORT void qt_enter_modal( QWidget* ); +extern Q_EXPORT void qt_leave_modal( QWidget* ); + +extern bool qt_is_gui_used; +#ifndef QT_NO_CLIPBOARD +extern QClipboard *qt_clipboard; +#endif + +#if defined (Q_OS_WIN32) || defined (Q_OS_CYGWIN) +extern Qt::WindowsVersion qt_winver; +#endif + +#if defined (Q_WS_X11) +extern int qt_ncols_option; +#endif + + +extern void qt_dispatchEnterLeave( QWidget*, QWidget* ); + + + +#endif diff --git a/qmake/include/private/qcolor_p.h b/qmake/include/private/qcolor_p.h new file mode 100644 index 0000000..942a803 --- a/dev/null +++ b/qmake/include/private/qcolor_p.h @@ -0,0 +1,63 @@ +/**************************************************************************** +** $Id$ +** +** Named color support for non-X platforms. +** The color names have been borrowed from X. +** +** Created : 000228 +** +** Copyright (C) 2000 Trolltech AS. All rights reserved. +** +** This file is part of the kernel module of the Qt GUI Toolkit. +** +** This file may be distributed under the terms of the Q Public License +** as defined by Trolltech AS of Norway and appearing in the file +** LICENSE.QPL included in the packaging of this file. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition +** licenses may use this file in accordance with the Qt Commercial License +** Agreement provided with the Software. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for +** information about Qt Commercial License Agreements. +** See http://www.trolltech.com/qpl/ for QPL licensing information. +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#ifndef QCOLOR_P_H +#define QCOLOR_P_H + + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of qmenudata.cpp, qmenubar.cpp, qmenubar.cpp, qpopupmenu.cpp, +// qmotifstyle.cpp and qwindowssstyle.cpp. This header file may change +// from version to version without notice, or even be removed. +// +// We mean it. +// +// + +#ifndef QT_H +#endif // QT_H + +extern uint qt_get_rgb_val( const char *name ); +extern bool qt_get_named_rgb( const char *, QRgb* ); +extern void qt_reset_color_avail(); + +#endif diff --git a/qmake/include/private/qcom_p.h b/qmake/include/private/qcom_p.h new file mode 100644 index 0000000..6e7e1c8 --- a/dev/null +++ b/qmake/include/private/qcom_p.h @@ -0,0 +1,337 @@ +/**************************************************************************** +** $Id$ +** +** ... +** +** Copyright (C) 2001-2002 Trolltech AS. All rights reserved. +** +** This file is part of the tools module of the Qt GUI Toolkit. +** +** This file may be distributed under the terms of the Q Public License +** as defined by Trolltech AS of Norway and appearing in the file +** LICENSE.QPL included in the packaging of this file. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition +** licenses may use this file in accordance with the Qt Commercial License +** Agreement provided with the Software. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for +** information about Qt Commercial License Agreements. +** See http://www.trolltech.com/qpl/ for QPL licensing information. +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#ifndef QCOM_H +#define QCOM_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of a number of Qt sources files. This header file may change from +// version to version without notice, or even be removed. +// +// We mean it. +// +// + +#ifndef QT_H +#include "qstringlist.h" +#include "quuid.h" +#endif // QT_H + +#ifndef QT_NO_COMPONENT + +class QObject; +struct QUInterfaceDescription; +struct QUObject; + +#define QRESULT unsigned long +#define QS_OK (QRESULT)0x00000000 +#define QS_FALSE (QRESULT)0x00000001 + +#define QE_NOTIMPL (QRESULT)0x80000001 +#define QE_OUTOFMEMORY (QRESULT)0x80000002 +#define QE_INVALIDARG (QRESULT)0x80000003 +#define QE_NOINTERFACE (QRESULT)0x80000004 +#define QE_NOCOMPONENT (QRESULT)0x80000005 + + +// {1D8518CD-E8F5-4366-99E8-879FD7E482DE} +#ifndef IID_QUnknown +#define IID_QUnknown QUuid(0x1d8518cd, 0xe8f5, 0x4366, 0x99, 0xe8, 0x87, 0x9f, 0xd7, 0xe4, 0x82, 0xde) +#endif + +struct Q_EXPORT QUnknownInterface +{ + virtual QRESULT queryInterface( const QUuid&, QUnknownInterface** ) = 0; + virtual ulong addRef() = 0; + virtual ulong release() = 0; +}; + +// {FBAC965E-A441-413F-935E-CDF582573FAB} +#ifndef IID_QDispatch +#define IID_QDispatch QUuid( 0xfbac965e, 0xa441, 0x413f, 0x93, 0x5e, 0xcd, 0xf5, 0x82, 0x57, 0x3f, 0xab) +#endif + +// the dispatch interface that inherits the unknown interface.. It is +// used to explore interfaces during runtime and to do dynamic calls. +struct Q_EXPORT QDispatchInterface : public QUnknownInterface +{ + // returns the interface description of this dispatch interface. + virtual const QUInterfaceDescription* interfaceDescription() const = 0; + + // returns the event description of this dispatch interface. + virtual const QUInterfaceDescription* eventsDescription() const = 0; + + // invokes method id with parameters V*. Returns some sort of + // exception code. + virtual QRESULT invoke( int id, QUObject* o ) = 0; + + // installs listener as event listener + virtual void installListener( QDispatchInterface* listener ) = 0; + + // remove listener as event listener + virtual void removeListener( QDispatchInterface* listener ) = 0; +}; + +template <class T> +class QInterfacePtr +{ +public: + QInterfacePtr():iface(0){} + + QInterfacePtr( T* i) { + if ( (iface = i) ) + iface->addRef(); + } + + QInterfacePtr(const QInterfacePtr<T> &p) { + if ( (iface = p.iface) ) + iface->addRef(); + } + + ~QInterfacePtr() { + if ( iface ) + iface->release(); + } + + QInterfacePtr<T> &operator=(const QInterfacePtr<T> &p) { + if ( iface != p.iface ) { + if ( iface ) + iface->release(); + if ( (iface = p.iface) ) + iface->addRef(); + } + return *this; + } + + QInterfacePtr<T> &operator=(T* i) { + if (iface != i ) { + if ( iface ) + iface->release(); + if ( (iface = i) ) + iface->addRef(); + } + return *this; + } + + bool operator==( const QInterfacePtr<T> &p ) const { return iface == p.iface; } + + bool operator!= ( const QInterfacePtr<T>& p ) const { return !( *this == p ); } + + bool isNull() const { return !iface; } + + T* operator->() const { return iface; } + + T& operator*() const { return *iface; } + + operator T*() const { return iface; } + + QUnknownInterface** operator &() const { + if( iface ) + iface->release(); + return (QUnknownInterface**)&iface; + } + + T** operator &() { + if ( iface ) + iface->release(); + return &iface; + } + +private: + T* iface; +}; + +// {10A1501B-4C5F-4914-95DD-C400486CF900} +#ifndef IID_QObject +#define IID_QObject QUuid( 0x10a1501b, 0x4c5f, 0x4914, 0x95, 0xdd, 0xc4, 0x00, 0x48, 0x6c, 0xf9, 0x00) +#endif + +struct Q_EXPORT QObjectInterface +{ + virtual QObject* qObject() = 0; +}; + +// {5F3968A5-F451-45b1-96FB-061AD98F926E} +#ifndef IID_QComponentInformation +#define IID_QComponentInformation QUuid(0x5f3968a5, 0xf451, 0x45b1, 0x96, 0xfb, 0x6, 0x1a, 0xd9, 0x8f, 0x92, 0x6e) +#endif + +struct Q_EXPORT QComponentInformationInterface : public QUnknownInterface +{ + virtual QString name() const = 0; + virtual QString description() const = 0; + virtual QString author() const = 0; + virtual QString version() const = 0; +}; + +// {6CAA771B-17BB-4988-9E78-BA5CDDAAC31E} +#ifndef IID_QComponentFactory +#define IID_QComponentFactory QUuid( 0x6caa771b, 0x17bb, 0x4988, 0x9e, 0x78, 0xba, 0x5c, 0xdd, 0xaa, 0xc3, 0x1e) +#endif + +struct Q_EXPORT QComponentFactoryInterface : public QUnknownInterface +{ + virtual QRESULT createInstance( const QUuid &cid, const QUuid &iid, QUnknownInterface** instance, QUnknownInterface *outer ) = 0; +}; + +// {D16111D4-E1E7-4C47-8599-24483DAE2E07} +#ifndef IID_QLibrary +#define IID_QLibrary QUuid( 0xd16111d4, 0xe1e7, 0x4c47, 0x85, 0x99, 0x24, 0x48, 0x3d, 0xae, 0x2e, 0x07) +#endif + +struct Q_EXPORT QLibraryInterface : public QUnknownInterface +{ + virtual bool init() = 0; + virtual void cleanup() = 0; + virtual bool canUnload() const = 0; +}; + +// {3F8FDC44-3015-4f3e-B6D6-E4AAAABDEAAD} +#ifndef IID_QFeatureList +#define IID_QFeatureList QUuid(0x3f8fdc44, 0x3015, 0x4f3e, 0xb6, 0xd6, 0xe4, 0xaa, 0xaa, 0xbd, 0xea, 0xad) +#endif + +struct Q_EXPORT QFeatureListInterface : public QUnknownInterface +{ + virtual QStringList featureList() const = 0; +}; + +// {B5FEB5DE-E0CD-4E37-B0EB-8A812499A0C1} +#ifndef IID_QComponentRegistration +#define IID_QComponentRegistration QUuid( 0xb5feb5de, 0xe0cd, 0x4e37, 0xb0, 0xeb, 0x8a, 0x81, 0x24, 0x99, 0xa0, 0xc1) +#endif + +struct Q_EXPORT QComponentRegistrationInterface : public QUnknownInterface +{ + virtual bool registerComponents( const QString &filepath ) const = 0; + virtual bool unregisterComponents() const = 0; +}; + +// internal class that wraps an initialized ulong +struct Q_EXPORT QtULong +{ + QtULong() : ref( 0 ) { } + operator unsigned long () const { return ref; } + unsigned long& operator++() { return ++ref; } + unsigned long operator++( int ) { return ref++; } + unsigned long& operator--() { return --ref; } + unsigned long operator--( int ) { return ref--; } + + unsigned long ref; +}; +// default implementation of ref counting. A variable "ulong ref" has to be a member + + +#define Q_REFCOUNT \ +private: \ + QtULong qtrefcount; \ +public: \ + ulong addRef() {return qtrefcount++;} \ + ulong release() {if(!--qtrefcount){delete this;return 0;}return qtrefcount;} + +#ifndef Q_EXPORT_COMPONENT +#if defined(QT_THREAD_SUPPORT) +#define QT_THREADED_BUILD 1 +#define Q_UCM_FLAGS_STRING "11" +#else +#define QT_THREADED_BUILD 0 +#define Q_UCM_FLAGS_STRING "01" +#endif + +#ifndef Q_EXTERN_C +#ifdef __cplusplus +#define Q_EXTERN_C extern "C" +#else +#define Q_EXTERN_C extern +#endif +#endif + +// this is duplicated at Q_PLUGIN_VERIFICATION_DATA in qgplugin.h +// NOTE: if you change pattern, you MUST change the pattern in +// qcomlibrary.cpp as well. changing the pattern will break all +// backwards compatibility as well (no old plugins will be loaded). +#ifndef Q_UCM_VERIFICATION_DATA +# define Q_UCM_VERIFICATION_DATA \ + static const char *qt_ucm_verification_data = \ + "pattern=""QT_UCM_VERIFICATION_DATA""\n" \ + "version="QT_VERSION_STR"\n" \ + "flags="Q_UCM_FLAGS_STRING"\n" \ + "buildkey="QT_BUILD_KEY"\0"; +#endif // Q_UCM_VERIFICATION_DATA + +// This macro expands to the default implementation of ucm_instantiate. +#ifndef Q_CREATE_INSTANCE +# define Q_CREATE_INSTANCE( IMPLEMENTATION ) \ + IMPLEMENTATION *i = new IMPLEMENTATION; \ + QUnknownInterface* iface = 0; \ + i->queryInterface( IID_QUnknown, &iface ); \ + return iface; +#endif // Q_CREATE_INSTANCE + +# ifdef Q_WS_WIN +# ifdef Q_CC_BOR +# define Q_EXPORT_COMPONENT() \ + Q_UCM_VERIFICATION_DATA \ + Q_EXTERN_C __declspec(dllexport) \ + const char * __stdcall qt_ucm_query_verification_data() \ + { return qt_ucm_verification_data; } \ + Q_EXTERN_C __declspec(dllexport) QUnknownInterface* \ + __stdcall ucm_instantiate() +# else +# define Q_EXPORT_COMPONENT() \ + Q_UCM_VERIFICATION_DATA \ + Q_EXTERN_C __declspec(dllexport) \ + const char *qt_ucm_query_verification_data() \ + { return qt_ucm_verification_data; } \ + Q_EXTERN_C __declspec(dllexport) QUnknownInterface* ucm_instantiate() +# endif +# else +# define Q_EXPORT_COMPONENT() \ + Q_UCM_VERIFICATION_DATA \ + Q_EXTERN_C \ + const char *qt_ucm_query_verification_data() \ + { return qt_ucm_verification_data; } \ + Q_EXTERN_C QUnknownInterface* ucm_instantiate() +# endif +# define Q_EXPORT_INTERFACE() Q_EXPORT_COMPONENT() +#endif + +#endif //QT_NO_COMPONENT + +#endif //QCOM_H diff --git a/qmake/include/private/qcomlibrary_p.h b/qmake/include/private/qcomlibrary_p.h new file mode 100644 index 0000000..f52f679 --- a/dev/null +++ b/qmake/include/private/qcomlibrary_p.h @@ -0,0 +1,79 @@ +/**************************************************************************** +** $Id$ +** +** Definition of QComLibrary class +** +** Copyright (C) 2001-2002 Trolltech AS. All rights reserved. +** +** This file is part of the tools module of the Qt GUI Toolkit. +** +** This file may be distributed under the terms of the Q Public License +** as defined by Trolltech AS of Norway and appearing in the file +** LICENSE.QPL included in the packaging of this file. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition +** licenses may use this file in accordance with the Qt Commercial License +** Agreement provided with the Software. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for +** information about Qt Commercial License Agreements. +** See http://www.trolltech.com/qpl/ for QPL licensing information. +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#ifndef QUCOMLIBRARY_H +#define QUCOMLIBRARY_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of a number of Qt sources files. This header file may change from +// version to version without notice, or even be removed. +// +// We mean it. +// +// + +#ifndef QT_H +#include "qcom_p.h" +#include "qlibrary.h" +#endif // QT_H + +#ifndef QT_NO_COMPONENT + +class Q_EXPORT QComLibrary : public QLibrary +{ +public: + QComLibrary( const QString &filename ); + ~QComLibrary(); + + bool unload(); + QRESULT queryInterface( const QUuid &iid, QUnknownInterface **iface ); + uint qtVersion(); + +private: + void createInstanceInternal(); + + QUnknownInterface *entry; + QLibraryInterface *libiface; + uint qt_version; + +}; + +#endif //QT_NO_COMPONENT + +#endif // QUCOMLIBRARY_H diff --git a/qmake/include/private/qcomplextext_p.h b/qmake/include/private/qcomplextext_p.h new file mode 100644 index 0000000..2132522 --- a/dev/null +++ b/qmake/include/private/qcomplextext_p.h @@ -0,0 +1,123 @@ +/**************************************************************************** +** $Id$ +** +** Internal header file. +** +** Created : +** +** Copyright (C) 2001 Trolltech AS. All rights reserved. +** +** This file is part of the kernel module of the Qt GUI Toolkit. +** +** This file may be distributed under the terms of the Q Public License +** as defined by Trolltech AS of Norway and appearing in the file +** LICENSE.QPL included in the packaging of this file. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition +** licenses may use this file in accordance with the Qt Commercial License +** Agreement provided with the Software. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for +** information about Qt Commercial License Agreements. +** See http://www.trolltech.com/qpl/ for QPL licensing information. +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#ifndef QCOMPLEXTEXT_H +#define QCOMPLEXTEXT_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of Qt Remote Control. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// +// + +#ifndef QT_H +#include <qstring.h> +#include <qpointarray.h> +#include <qfont.h> +#include <qpainter.h> +#include <qptrlist.h> +#include <qshared.h> +#endif // QT_H + +#ifndef QT_NO_COMPLEXTEXT + +// bidi helper classes. Internal to Qt +struct Q_EXPORT QBidiStatus { + QBidiStatus() { + eor = QChar::DirON; + lastStrong = QChar::DirON; + last = QChar:: DirON; + } + QChar::Direction eor; + QChar::Direction lastStrong; + QChar::Direction last; +}; + +struct Q_EXPORT QBidiContext : public QShared { + // ### ref and deref parent? + QBidiContext( uchar level, QChar::Direction embedding, QBidiContext *parent = 0, bool override = FALSE ); + ~QBidiContext(); + + unsigned char level; + bool override : 1; + QChar::Direction dir : 5; + + QBidiContext *parent; +}; + +struct Q_EXPORT QBidiControl { + QBidiControl() { context = 0; } + QBidiControl( QBidiContext *c, QBidiStatus s) + { context = c; if( context ) context->ref(); status = s; } + ~QBidiControl() { if ( context && context->deref() ) delete context; } + void setContext( QBidiContext *c ) { if ( context == c ) return; if ( context && context->deref() ) delete context; context = c; context->ref(); } + QBidiContext *context; + QBidiStatus status; +}; + +struct Q_EXPORT QTextRun { + QTextRun(int _start, int _stop, QBidiContext *context, QChar::Direction dir); + + int start; + int stop; + // explicit + implicit levels here + uchar level; +}; + +class Q_EXPORT QComplexText { +public: + static QString shapedString( const QString &str, int from = 0, int len = -1, QPainter::TextDirection dir = QPainter::Auto, const QFontMetrics *fm = 0); + static QChar shapedCharacter(const QString &str, int pos, const QFontMetrics *fm = 0); + + // positions non spacing marks relative to the base character at position pos. + static QPointArray positionMarks( QFontPrivate *f, const QString &str, int pos, QRect *boundingRect = 0 ); + + static QPtrList<QTextRun> *bidiReorderLine( QBidiControl *control, const QString &str, int start, int len, + QChar::Direction basicDir = QChar::DirON ); + static QString bidiReorderString( const QString &str, QChar::Direction basicDir = QChar::DirON ); +}; + + +#endif //QT_NO_COMPLEXTEXT + +#endif diff --git a/qmake/include/private/qcomponentfactory_p.h b/qmake/include/private/qcomponentfactory_p.h new file mode 100644 index 0000000..1ac973f --- a/dev/null +++ b/qmake/include/private/qcomponentfactory_p.h @@ -0,0 +1,73 @@ +/**************************************************************************** +** $Id$ +** +** Definition of the QComponentFactory class +** +** Created : 990101 +** +** Copyright (C) 1992-2002 Trolltech AS. All rights reserved. +** +** This file is part of the tools module of the Qt GUI Toolkit. +** +** This file may be distributed under the terms of the Q Public License +** as defined by Trolltech AS of Norway and appearing in the file +** LICENSE.QPL included in the packaging of this file. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition +** licenses may use this file in accordance with the Qt Commercial License +** Agreement provided with the Software. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for +** information about Qt Commercial License Agreements. +** See http://www.trolltech.com/qpl/ for QPL licensing information. +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#ifndef QCOMPONENTFACTORY_H +#define QCOMPONENTFACTORY_H + +#ifndef QT_H +#include "qcom_p.h" +#endif // QT_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of a number of Qt sources files. This header file may change from +// version to version without notice, or even be removed. +// +// We mean it. +// +// + +#ifndef QT_NO_COMPONENT + +class Q_EXPORT QComponentFactory +{ +public: + static QRESULT createInstance( const QString &cid, const QUuid &iid, QUnknownInterface** instance, QUnknownInterface *outer = 0 ); + static QRESULT registerServer( const QString &filename ); + static QRESULT unregisterServer( const QString &filename ); + + static bool registerComponent( const QUuid &cid, const QString &filename, const QString &name = QString::null, + int version = 0, const QString &description = QString::null ); + static bool unregisterComponent( const QUuid &cid ); +}; + +#endif // QT_NO_COMPONENT + +#endif // QCOMPONENTFACTORY_H diff --git a/qmake/include/private/qcriticalsection_p.h b/qmake/include/private/qcriticalsection_p.h new file mode 100644 index 0000000..7d9feca --- a/dev/null +++ b/qmake/include/private/qcriticalsection_p.h @@ -0,0 +1,80 @@ +/**************************************************************************** +** $Id$ +** +** Definition of QCriticalSection class +** +** Copyright (C) 2001-2002 Trolltech AS. All rights reserved. +** +** This file is part of the Qt GUI Toolkit. +** +** This file may be distributed under the terms of the Q Public License +** as defined by Trolltech AS of Norway and appearing in the file +** LICENSE.QPL included in the packaging of this file. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition +** licenses may use this file in accordance with the Qt Commercial License +** Agreement provided with the Software. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for +** information about Qt Commercial License Agreements. +** See http://www.trolltech.com/qpl/ for QPL licensing information. +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#ifndef QCRITICALSECTION_H +#define QCRITICALSECTION_H + +#ifndef QT_H +#endif // QT_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of Qt Remote Control. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// +// + +#if defined(QT_THREAD_SUPPORT) + +#if defined(Q_WS_WIN) + +/* + QCriticalSection +*/ + +class QCriticalSectionPrivate; + +class QCriticalSection +{ +public: + QCriticalSection(); + ~QCriticalSection(); + void enter(); + void leave(); + +private: + QCriticalSectionPrivate *d; +}; + +#endif + +#endif + +#endif diff --git a/qmake/include/private/qdir_p.h b/qmake/include/private/qdir_p.h new file mode 100644 index 0000000..35dba28 --- a/dev/null +++ b/qmake/include/private/qdir_p.h @@ -0,0 +1,78 @@ +/**************************************************************************** +** $Id$ +** +** Definition of some private QDir functions. +** +** Created : 2000.11.06 +** +** Copyright (C) 2000 Trolltech AS. All rights reserved. +** +** This file is part of the tools module of the Qt GUI Toolkit. +** +** This file may be distributed under the terms of the Q Public License +** as defined by Trolltech AS of Norway and appearing in the file +** LICENSE.QPL included in the packaging of this file. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition +** licenses may use this file in accordance with the Qt Commercial License +** Agreement provided with the Software. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for +** information about Qt Commercial License Agreements. +** See http://www.trolltech.com/qpl/ for QPL licensing information. +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#ifndef QDIR_P_H +#define QDIR_P_H + + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of qdir.cpp and qdir_*.cpp. +// This header file may change from version to version without notice, +// or even be removed. +// +// We mean it. +// +// + +#ifndef QT_H +#endif // QT_H + +extern QStringList qt_makeFilterList( const QString & ); + + +extern int qt_cmp_si_sortSpec; + +#if defined(Q_C_CALLBACKS) +extern "C" { +#endif + +#ifdef Q_OS_TEMP +extern int __cdecl qt_cmp_si( const void *, const void * ); +#else +extern int qt_cmp_si( const void *, const void * ); +#endif + +#if defined(Q_C_CALLBACKS) +} +#endif + + +#endif // QDIR_P_H diff --git a/qmake/include/private/qeffects_p.h b/qmake/include/private/qeffects_p.h new file mode 100644 index 0000000..4178b6f --- a/dev/null +++ b/qmake/include/private/qeffects_p.h @@ -0,0 +1,78 @@ +/**************************************************************************** +** $Id$ +** +** Definition of QEffects functions +** +** Created : 2000.06.21 +** +** Copyright (C) 2000 Trolltech AS. All rights reserved. +** +** This file is part of the widgets module of the Qt GUI Toolkit. +** +** This file may be distributed under the terms of the Q Public License +** as defined by Trolltech AS of Norway and appearing in the file +** LICENSE.QPL included in the packaging of this file. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition +** licenses may use this file in accordance with the Qt Commercial License +** Agreement provided with the Software. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for +** information about Qt Commercial License Agreements. +** See http://www.trolltech.com/qpl/ for QPL licensing information. +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#ifndef QEFFECTS_P_H +#define QEFFECTS_P_H + + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of qeffects.cpp, qcombobox.cpp, qpopupmenu.cpp and qtooltip.cpp. +// This header file may change from version to version without notice, +// or even be removed. +// +// We mean it. +// +// + +#ifndef QT_H +#include "qnamespace.h" +#endif // QT_H + +#ifndef QT_NO_EFFECTS +class QWidget; + +struct QEffects +{ + enum Direction { + LeftScroll = 0x0001, + RightScroll = 0x0002, + UpScroll = 0x0004, + DownScroll = 0x0008 + }; + + typedef uint DirFlags; +}; + +extern void Q_EXPORT qScrollEffect( QWidget*, QEffects::DirFlags dir = QEffects::DownScroll, int time = -1 ); +extern void Q_EXPORT qFadeEffect( QWidget*, int time = -1 ); +#endif // QT_NO_EFFECTS + +#endif // QEFFECTS_P_H diff --git a/qmake/include/private/qeventloop_p.h b/qmake/include/private/qeventloop_p.h new file mode 100644 index 0000000..b64d0df --- a/dev/null +++ b/qmake/include/private/qeventloop_p.h @@ -0,0 +1,74 @@ +#ifndef QEVENTLOOP_P_H +#define QEVENTLOOP_P_H + +#include "qplatformdefs.h" +#include "qwindowdefs.h" + +class QSocketNotifier; + +#if defined(Q_OS_UNIX) +#include <qptrlist.h> + +struct QSockNot +{ + QSocketNotifier *obj; + int fd; + fd_set *queue; +}; + +class QSockNotType +{ +public: + QSockNotType(); + ~QSockNotType(); + + QPtrList<QSockNot> *list; + fd_set select_fds; + fd_set enabled_fds; + fd_set pending_fds; + +}; +#endif // Q_OS_UNIX + + +class QEventLoopPrivate +{ +public: + QEventLoopPrivate() + { + reset(); + } + + void reset() { + looplevel = 0; + quitcode = 0; + quitnow = FALSE; + exitloop = FALSE; + } + + int looplevel; + int quitcode; + bool quitnow; + bool exitloop; + +#if defined(Q_WS_MAC) + EventLoopTimerRef select_timer; +#endif + +#if defined(Q_WS_X11) + int xfd; +#endif // Q_WS_X11 + +#if defined(Q_OS_UNIX) + int thread_pipe[2]; + + // pending socket notifiers list + QPtrList<QSockNot> sn_pending_list; + // highest fd for all socket notifiers + int sn_highest; + // 3 socket notifier types - read, write and exception + QSockNotType sn_vec[3]; +#endif +}; + +#endif // QEVENTLOOP_P_H diff --git a/qmake/include/private/qfiledefs_p.h b/qmake/include/private/qfiledefs_p.h new file mode 100644 index 0000000..627717f --- a/dev/null +++ b/qmake/include/private/qfiledefs_p.h @@ -0,0 +1,64 @@ +/**************************************************************************** +** $Id$ +** +** Common macros and system include files for QFile, QFileInfo and QDir. +** +** Created : 930812 +** +** Copyright (C) 1992-2001 Trolltech AS. All rights reserved. +** +** This file is part of the tools module of the Qt GUI Toolkit. +** +** This file may be distributed under the terms of the Q Public License +** as defined by Trolltech AS of Norway and appearing in the file +** LICENSE.QPL included in the packaging of this file. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition +** licenses may use this file in accordance with the Qt Commercial License +** Agreement provided with the Software. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for +** information about Qt Commercial License Agreements. +** See http://www.trolltech.com/qpl/ for QPL licensing information. +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#ifndef QFILEDEFS_P_H +#define QFILEDEFS_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of qfileinfo*.cpp. This header file may change from version to version +// without notice, or even be removed. +// +// We mean it. +// +// + +// Be sure to include qplatformdefs.h first! +struct QFileInfoCache +{ +#if defined(Q_WS_WIN) + QT_STATBUF st; +#else + struct stat st; +#endif +}; + + +#endif diff --git a/qmake/include/private/qfontcodecs_p.h b/qmake/include/private/qfontcodecs_p.h new file mode 100644 index 0000000..8222f98 --- a/dev/null +++ b/qmake/include/private/qfontcodecs_p.h @@ -0,0 +1,368 @@ +/**************************************************************************** +** $Id$ +** +** Font utilities for X11 +** +** Created : 20001101 +** +** Copyright (C) 1992-2002 Trolltech AS. All rights reserved. +** +** This file is part of the tools module of the Qt GUI Toolkit. +** +** This file may be distributed under the terms of the Q Public License +** as defined by Trolltech AS of Norway and appearing in the file +** LICENSE.QPL included in the packaging of this file. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition +** licenses may use this file in accordance with the Qt Commercial License +** Agreement provided with the Software. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for +** information about Qt Commercial License Agreements. +** See http://www.trolltech.com/qpl/ for QPL licensing information. +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#ifndef QFONTCODECS_P_H +#define QFONTCODECS_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of qfontencodings_x11.cpp and qfont_x11.cpp. This header file may +// change from version to version without notice, or even be removed. +// +// We mean it. +// +// + +#ifndef QT_H +#include <qglobal.h> +#include <qtextcodec.h> +#endif // QT_H + + +#ifndef QT_NO_CODECS +#ifndef QT_NO_BIG_CODECS + + +class QJpUnicodeConv; + + +class QFontJis0201Codec : public QTextCodec +{ +public: + QFontJis0201Codec(); + + const char *name() const; + + int mibEnum() const; + +#if !defined(Q_NO_USING_KEYWORD) + using QTextCodec::fromUnicode; +#endif + QCString fromUnicode(const QString& uc, int& lenInOut ) const; + + int heuristicContentMatch(const char *, int) const; + int heuristicNameMatch(const char* hint) const; + +#if !defined(Q_NO_USING_KEYWORD) + using QTextCodec::canEncode; +#endif + bool canEncode( QChar ) const; +}; + + +class QFontJis0208Codec : public QTextCodec +{ +public: + QFontJis0208Codec(); + ~QFontJis0208Codec(); + + // Return the official name for the encoding. + const char* name() const ; + + // Return the MIB enum for the encoding if it is listed in the + // IANA character-sets encoding file. + int mibEnum() const ; + + // Converts len characters from chars to Unicode. + QString toUnicode(const char* chars, int len) const ; + + // Converts lenInOut characters (of type QChar) from the start of + // the string uc, returning a QCString result, and also returning + // the length of the result in lenInOut. +#if !defined(Q_NO_USING_KEYWORD) + using QTextCodec::fromUnicode; +#endif + QCString fromUnicode(const QString& uc, int& lenInOut ) const; + + int heuristicContentMatch(const char *, int) const; + int heuristicNameMatch(const char* hint) const; + +#if !defined(Q_NO_USING_KEYWORD) + using QTextCodec::canEncode; +#endif + bool canEncode( QChar ) const; + +private: + QJpUnicodeConv *convJP; +}; + + + + +class QFontKsc5601Codec : public QTextCodec +{ +public: + QFontKsc5601Codec(); + + // Return the official name for the encoding. + const char* name() const ; + + // Return the MIB enum for the encoding if it is listed in the + // IANA character-sets encoding file. + int mibEnum() const ; + + // Converts len characters from chars to Unicode. + QString toUnicode(const char* chars, int len) const ; + + // Converts lenInOut characters (of type QChar) from the start of + // the string uc, returning a QCString result, and also returning + // the length of the result in lenInOut. +#if !defined(Q_NO_USING_KEYWORD) + using QTextCodec::fromUnicode; +#endif + QCString fromUnicode(const QString& uc, int& lenInOut ) const; + + int heuristicContentMatch(const char *, int) const; +#if !defined(Q_NO_USING_KEYWORD) + using QTextCodec::canEncode; +#endif + bool canEncode( QChar ) const; +}; + + + + +class QFontGb2312Codec : public QTextCodec +{ +public: + QFontGb2312Codec(); + + // Return the official name for the encoding. + const char* name() const ; + + // Return the MIB enum for the encoding if it is listed in the + // IANA character-sets encoding file. + int mibEnum() const ; + + // Converts len characters from chars to Unicode. + QString toUnicode(const char* chars, int len) const ; + + // Converts lenInOut characters (of type QChar) from the start of + // the string uc, returning a QCString result, and also returning + // the length of the result in lenInOut. + QCString fromUnicode(const QString& uc, int& lenInOut ) const; + + int heuristicContentMatch(const char *, int) const; + bool canEncode( QChar ) const; +}; + + + + +class QFontGbkCodec : public QTextCodec +{ +public: + QFontGbkCodec(); + + // Return the official name for the encoding. + const char* name() const ; + + // Return the MIB enum for the encoding if it is listed in the + // IANA character-sets encoding file. + int mibEnum() const ; + + // Converts len characters from chars to Unicode. + QString toUnicode(const char* chars, int len) const ; + + // Converts lenInOut characters (of type QChar) from the start of + // the string uc, returning a QCString result, and also returning + // the length of the result in lenInOut. + QCString fromUnicode(const QString& uc, int& lenInOut ) const; + + int heuristicContentMatch(const char *, int) const; + int heuristicNameMatch(const char* hint) const; + bool canEncode( QChar ) const; +}; + + + + +class QFontGb18030_0Codec : public QTextCodec +{ +public: + QFontGb18030_0Codec(); + + // Return the official name for the encoding. + const char* name() const ; + + // Return the MIB enum for the encoding if it is listed in the + // IANA character-sets encoding file. + int mibEnum() const ; + + // Converts len characters from chars to Unicode. + QString toUnicode(const char* chars, int len) const ; + + // Converts lenInOut characters (of type QChar) from the start of + // the string uc, returning a QCString result, and also returning + // the length of the result in lenInOut. +#if !defined(Q_NO_USING_KEYWORD) + using QTextCodec::fromUnicode; +#endif + QCString fromUnicode(const QString& uc, int& lenInOut ) const; + + int heuristicContentMatch(const char *, int) const; +#if !defined(Q_NO_USING_KEYWORD) + using QTextCodec::canEncode; +#endif + bool canEncode( QChar ) const; +}; + + + + +class QFontBig5Codec : public QTextCodec +{ +public: + QFontBig5Codec(); + + // Return the official name for the encoding. + const char* name() const ; + + // Return the MIB enum for the encoding if it is listed in the + // IANA character-sets encoding file. + int mibEnum() const ; + + // Converts len characters from chars to Unicode. + QString toUnicode(const char* chars, int len) const ; + + // Converts lenInOut characters (of type QChar) from the start of + // the string uc, returning a QCString result, and also returning + // the length of the result in lenInOut. +#if !defined(Q_NO_USING_KEYWORD) + using QTextCodec::fromUnicode; +#endif + QCString fromUnicode(const QString& uc, int& lenInOut ) const; + + int heuristicContentMatch(const char *, int) const; +#if !defined(Q_NO_USING_KEYWORD) + using QTextCodec::canEncode; +#endif + int heuristicNameMatch(const char* hint) const; + bool canEncode( QChar ) const; +}; + + + +class QFontBig5hkscsCodec : public QTextCodec +{ +public: + QFontBig5hkscsCodec(); + + // Return the official name for the encoding. + const char* name() const ; + + // Return the MIB enum for the encoding if it is listed in the + // IANA character-sets encoding file. + int mibEnum() const ; + + // Converts len characters from chars to Unicode. + QString toUnicode(const char* chars, int len) const ; + + // Converts lenInOut characters (of type QChar) from the start of + // the string uc, returning a QCString result, and also returning + // the length of the result in lenInOut. + QCString fromUnicode(const QString& uc, int& lenInOut ) const; + + int heuristicContentMatch(const char *, int) const; + int heuristicNameMatch(const char* hint) const; +#if !defined(Q_NO_USING_KEYWORD) + using QTextCodec::canEncode; +#endif + bool canEncode( QChar ) const; +}; + + + + +// ------------------------------------------------------------------ +// the shaping codec for iso8859-6.8x fonts (see www.langbox.com) + +class QFontArabic68Codec : public QTextCodec +{ +public: + QFontArabic68Codec(); + + // Return the official name for the encoding. + const char* name() const ; + + // Return the MIB enum for the encoding if it is listed in the + // IANA character-sets encoding file. + int mibEnum() const ; + + // Converts len characters from chars to Unicode. + QString toUnicode(const char* chars, int len) const ; + + // Converts lenInOut characters (of type QChar) from the start of + // the string uc, returning a QCString result, and also returning + // the length of the result in lenInOut. + QCString fromUnicode(const QString& uc, int& lenInOut ) const; + + int heuristicContentMatch(const char *, int) const; + QByteArray fromUnicode( const QString &str, int from, int len ) const; + unsigned short characterFromUnicode(const QString &str, int pos) const; +}; + + +class QFontLaoCodec : public QTextCodec +{ +public: + QFontLaoCodec(); + + const char *name() const; + + int mibEnum() const; + +#if !defined(Q_NO_USING_KEYWORD) + using QTextCodec::fromUnicode; +#endif + QCString fromUnicode(const QString& uc, int& lenInOut ) const; + + int heuristicContentMatch(const char *, int) const; + +#if !defined(Q_NO_USING_KEYWORD) + using QTextCodec::canEncode; +#endif + bool canEncode( QChar ) const; +}; + +#endif // QT_NO_BIG_CODECS +#endif // QT_NO_CODECS + +#endif // QFONTCODECS_P_H diff --git a/qmake/include/private/qfontdata_p.h b/qmake/include/private/qfontdata_p.h new file mode 100644 index 0000000..917d14f --- a/dev/null +++ b/qmake/include/private/qfontdata_p.h @@ -0,0 +1,479 @@ +/**************************************************************************** +** $Id$ +** +** Definition of internal QFontData struct +** +** Created : 941229 +** +** Copyright (C) 1992-2002 Trolltech AS. All rights reserved. +** +** This file is part of the kernel module of the Qt GUI Toolkit. +** +** This file may be distributed under the terms of the Q Public License +** as defined by Trolltech AS of Norway and appearing in the file +** LICENSE.QPL included in the packaging of this file. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition +** licenses may use this file in accordance with the Qt Commercial License +** Agreement provided with the Software. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for +** information about Qt Commercial License Agreements. +** See http://www.trolltech.com/qpl/ for QPL licensing information. +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#ifndef QFONTDATA_P_H +#define QFONTDATA_P_H + +#ifndef QT_H +#include <qcache.h> +#include <qobject.h> +#include <qpaintdevice.h> +#endif // QT_H +#include <limits.h> + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of internal files. This header file may change from version to version +// without notice, or even be removed. +// +// We mean it. +// +// + +class QPaintDevice; + +#ifdef Q_WS_WIN +#include <qt_windows.h> +#endif + +#ifdef Q_WS_X11 +#include <qt_x11.h> + +class QCharStruct; +#endif + +// font description +struct QFontDef { + QFontDef() + : pixelSize(0), pointSize(0), lbearing(SHRT_MIN), rbearing(SHRT_MIN), + styleStrategy(QFont::PreferDefault), styleHint(QFont::AnyStyle), + weight(0), italic(FALSE), underline(FALSE), strikeOut(FALSE), + fixedPitch(FALSE), hintSetByUser(FALSE), rawMode(FALSE), dirty(TRUE) + { ; } + + QString family; + QString addStyle; + + int pixelSize; + int pointSize; + short lbearing; + short rbearing; + + ushort styleStrategy; + uchar styleHint; + uchar weight; + + bool italic; + bool underline; + bool strikeOut; + bool fixedPitch; + bool hintSetByUser; + bool rawMode; + + bool dirty; +}; + + +class QTextCodec; + +#ifdef Q_WS_X11 + +// this is a shared wrapper for XFontStruct (to prevent a font being freed by +// the cache while it's being used) +class QFontStruct : public QShared +{ +public: + QFontStruct(Qt::HANDLE h, Qt::HANDLE xfth, Qt::HANDLE xftp, + QCString n, QTextCodec *c, int a) : + QShared(), handle(h), xfthandle(xfth), xftpattern(xftp), + name(n), codec(c), cache_cost(a), scale( 1. ) + { ; } + + ~QFontStruct(); + + Qt::HANDLE handle, xfthandle, xftpattern; + QCString name; + QTextCodec *codec; + int cache_cost; + float scale; // needed for printing, to correctly scale font metrics for bitmap fonts +}; + +enum { widthCacheSize = 0x500 }; + +class QFontX11Data // used as a QFontPrivate member +{ +public: + // X fontstruct handles for each character set + QFontStruct *fontstruct[QFont::LastPrivateScript]; + + uchar widthCache[widthCacheSize]; + + QFontX11Data(); + ~QFontX11Data(); +}; + +#endif // Q_WS_X11 + + +#ifdef Q_WS_WIN + +class QFontStruct : public QShared +{ +public: + QFontStruct( const QString &key ); + ~QFontStruct() { reset(); } + bool dirty() const { return hfont == 0; } + HDC dc() const; + HFONT font() const { return hfont; } + const TEXTMETRICA *textMetricA() const { return &tm.a; } + const TEXTMETRICW *textMetricW() const { return &tm.w; } + QString key() const { return k; } + void reset(); + + QString k; + HDC hdc; + HFONT hfont; + uint stockFont:1; + uint paintDevice:1; + union { + TEXTMETRICW w; + TEXTMETRICA a; + } tm; + int lw; + int cache_cost; +// friend void QFont::initFontInfo() const; +}; + +#endif // Q_WS_WIN + +#if defined( Q_WS_MAC ) + +#if defined( Q_WS_MACX ) +# define QMAC_FONT_ATSUI +#endif +#include "qt_mac.h" +class QMacFontInfo; + +class QFontStruct : public QShared +{ +public: + inline QFontStruct() : QShared(), info(NULL), fnum(-1), cache_cost(0), internal_fi(NULL) { } +#if defined( QMAC_FONT_ATSUI ) && 0 + ATSFontMetrics *info; + int maxWidth() const { return (int)info->maxAdvanceWidth; } +#else + FontInfo *info; + int maxWidth() const { return info->widMax; } +#endif + int ascent() const { return (int)info->ascent; } + int descent() const { return (int)info->descent; } + int leading() const { return (int)info->leading; } + int minLeftBearing() const { return 0; } + int minRightBearing() const { return 0; } + + short fnum; + int psize, cache_cost; + QMacFontInfo *internal_fi; +}; + +#endif + +#ifdef Q_WS_QWS +class QFontStruct; +class QGfx; +#endif + +typedef QCacheIterator<QFontStruct> QFontCacheIterator; +class QFontCache : public QObject, public QCache<QFontStruct> +{ +public: + QFontCache(); + ~QFontCache(); + + bool insert(const QString &, const QFontStruct *, int c); +#ifndef Q_WS_MAC + void deleteItem(Item d); +#endif + void timerEvent(QTimerEvent *); + + +protected: + + +private: + int timer_id; + bool fast; +}; + + +// QFontPrivate - holds all data on which a font operates +class QFontPrivate : public QShared +{ +public: + static QFontCache *fontCache; + + +public: + + QFontPrivate(); + QFontPrivate(const QFontPrivate &fp); + QFontPrivate( const QFontPrivate &fp, QPaintDevice *pd ); + ~QFontPrivate(); + + // requested font + QFontDef request; + // actual font + QFontDef actual; + + bool exactMatch; + int lineWidth; + + // common functions + QString defaultFamily() const; + QString lastResortFamily() const; + QString lastResortFont() const; + QString key() const; + + static int getFontWeight(const QCString &, bool = FALSE); + QRect boundingRect( const QChar &ch ); + + struct TextRun { + TextRun() + { + xoff = 0; + yoff = 0; + x2off = 0; + script = QFont::NoScript; + string = 0; + length = 0; + next = 0; + } + + ~TextRun() + { + if ( next ) + delete next; + } + + void setParams( int x, int y, int x2, const QChar *s, int len, + QFont::Script sc = QFont::NoScript ) { + xoff = x; + yoff = y; + x2off = x2; + string = s; + length = len; + script = sc; + } + int xoff; + int yoff; + int x2off; + QFont::Script script; + const QChar *string; + int length; + TextRun *next; +#ifdef Q_WS_X11 + QByteArray mapped; +#endif + }; + + // some replacement functions for native calls. This is needed, because shaping and + // non spacing marks can change the extents of a string to draw. At the same time + // drawing needs to take care to correctly position non spacing marks. + int textWidth( const QString &str, int pos, int len ); + + // returns the script a certain character is in. Needed to separate the string + // into runs of different scripts as required for X11 and opentype. + QFont::Script scriptForChar(const QChar &c); + +#ifdef Q_WS_X11 + QFont::Script hanHack( const QChar & c ); + static char **getXFontNames(const char *, int *); + static bool fontExists(const QString &); + static bool parseXFontName(char *, char **); + static QCString fixXLFD( const QCString & ); + static bool fillFontDef(XFontStruct *, QFontDef *, int); + static bool fillFontDef(const QCString &, QFontDef *, int); + + static inline bool isZero(char *x) + { + return (x[0] == '0' && x[1] == 0); + } + + static inline bool isScalable( char **tokens ) + { + return (isZero(tokens[PixelSize]) && + isZero(tokens[PointSize]) && + isZero(tokens[AverageWidth])); + } + + static inline bool isSmoothlyScalable( char **tokens ) + { + return (isZero(tokens[ResolutionX]) && isZero(tokens[ResolutionY])); + } + + static inline bool isFixedPitch( char **tokens ) + { + return (tokens[Spacing][0] == 'm' || + tokens[Spacing][0] == 'c' || + tokens[Spacing][0] == 'M' || + tokens[Spacing][0] == 'C'); + } + + // XLFD fields + enum FontFieldNames { + Foundry, + Family, + Weight, + Slant, + Width, + AddStyle, + PixelSize, + PointSize, + ResolutionX, + ResolutionY, + Spacing, + AverageWidth, + CharsetRegistry, + CharsetEncoding, + NFontFields + }; + +#ifndef QT_NO_XFTFREETYPE + XftPattern *findXftFont(const QChar &, bool *, double *scale) const; + XftPattern *bestXftPattern(const QString &, const QString &, const QChar &, double *scale) const; +#endif // QT_NO_XFTFREETYPE + QCString findFont(QFont::Script, bool *, double *) const; + QCString bestFamilyMember(QFont::Script, const QString &, const QString &, + const QString &, int *, double *) const; + QCString bestMatch(const char *, int *, QFont::Script, double *) const; + int fontMatchScore(const char *, QCString &, float *, int *, bool *, + bool *, QFont::Script, double *) const; + void initFontInfo(QFont::Script, double scale); + void load(QFont::Script = QFont::NoScript, bool = TRUE); + bool loadUnicode(QFont::Script, const QChar &); + void computeLineWidth(); + + int textWidth( const QString &str, int pos, int len, TextRun *cache ); + void textExtents( const QString &str, int pos, int len, QCharStruct *overall ); + void drawText( Display *dpy, int screen, Qt::HANDLE hd, Qt::HANDLE rendhd, + GC gc, const QColor &pen, Qt::BGMode, const QColor &bgcolor, + int x, int y, const TextRun *cache, int pdWidth ); + bool inFont( const QChar &ch ); + + QFontX11Data x11data; + static QFont::Script defaultScript; + int x11Screen; +#endif // Q_WS_X11 + + QPaintDevice *paintdevice; + +#ifdef Q_WS_WIN + void load(); + void initFontInfo(); + HFONT create( bool *stockFont, HDC hdc = 0, bool compatMode = FALSE ); + QFontStruct *fin; + + void buildCache( HDC hdc, const QString &str, int pos, int len, TextRun *cache ); + void drawText( HDC hdc, int x, int y, TextRun *cache ); +#endif // Q_WS_WIN + +#ifdef Q_WS_QWS + void load(); + QFontStruct *fin; + int textWidth( const QString &str, int pos, int len, TextRun *cache ); + void drawText( QGfx *gfx, int x, int y, const TextRun *cache ); +#endif + +#if defined( Q_WS_MAC ) + void macSetFont(QPaintDevice *); + void drawText(int x, int y, QString s, int len, QPaintDevice *dev, const QRegion *rgn); + void computeLineWidth(); + void load(); + QFontStruct *fin; +#endif + +}; + +inline QFontPrivate::QFontPrivate() + : QShared(), exactMatch(FALSE), lineWidth(1) +{ + +#if defined(Q_WS_WIN) || defined(Q_WS_QWS) || defined(Q_WS_MAC) + fin = 0; +#endif // Q_WS_WIN || Q_WS_QWS +#if defined(Q_WS_X11) + x11Screen = QPaintDevice::x11AppScreen(); +#endif // Q_WS_X11 + paintdevice = 0; +} + +inline QFontPrivate::QFontPrivate(const QFontPrivate &fp) + : QShared(), request(fp.request), actual(fp.actual), +exactMatch(fp.exactMatch), lineWidth(1) +{ + Q_ASSERT(!fp.paintdevice); +#if defined(Q_WS_WIN) || defined(Q_WS_QWS) || defined(Q_WS_MAC) + fin = 0; +#endif // Q_WS_WIN || Q_WS_QWS +#if defined(Q_WS_X11) + x11Screen = fp.x11Screen; +#endif // Q_WS_X11 + paintdevice = 0; +} + +inline QFontPrivate::QFontPrivate( const QFontPrivate &fp, QPaintDevice *pd ) + : QShared(), request(fp.request), actual(fp.actual), +exactMatch(fp.exactMatch), lineWidth(1) +{ + +#if defined(Q_WS_WIN) || defined(Q_WS_QWS) || defined(Q_WS_MAC) + fin = 0; +#endif // Q_WS_WIN || Q_WS_QWS +#if defined(Q_WS_X11) + x11Screen = pd->x11Screen(); +#endif // Q_WS_X11 + paintdevice = pd; +} + +#ifndef Q_WS_QWS +inline QFontPrivate::~QFontPrivate() +{ +#if defined(Q_WS_WIN) + if( fin ) + fin->deref(); +#endif +#if defined(Q_WS_MAC) + if( fin && fin->deref() ) + delete fin; +#endif +} +#endif + +#endif // QFONTDATA_P_H diff --git a/qmake/include/private/qgfxdriverinterface_p.h b/qmake/include/private/qgfxdriverinterface_p.h new file mode 100644 index 0000000..1782ed4 --- a/dev/null +++ b/qmake/include/private/qgfxdriverinterface_p.h @@ -0,0 +1,56 @@ +/**************************************************************************** +** $Id$ +** +** Definition of Qt/Embedded Graphics Driver Interface +** +** Created : 20020211 +** +** Copyright (C) 1992-2002 Trolltech AS. All rights reserved. +** +** This file is part of the kernel module of the Qt GUI Toolkit. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition +** licenses for Qt/Embedded may use this file in accordance with the +** Qt Embedded Commercial License Agreement provided with the Software. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for +** information about Qt Commercial License Agreements. +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#ifndef QGFXDRIVERINTERFACE_H +#define QGFXDRIVERINTERFACE_H + +#ifndef QT_H +#include <private/qcom_p.h> +#endif // QT_H + +#ifndef QT_NO_COMPONENT + +// {449EC6C6-DF3E-43E3-9E57-354A3D05AB34} +#ifndef IID_QGfxDriver +#define IID_QGfxDriver QUuid( 0x449ec6c6, 0xdf3e, 0x43e3, 0x9e, 0x57, 0x35, 0x4a, 0x3d, 0x05, 0xab, 0x34) +#endif + +class QScreen; + +struct Q_EXPORT QGfxDriverInterface : public QFeatureListInterface +{ + virtual QScreen* create( const QString& driver, int displayId ) = 0; +}; + +#endif // QT_NO_COMPONENT + +#endif // QGFXDRIVERINTERFACE_H diff --git a/qmake/include/private/qgpluginmanager_p.h b/qmake/include/private/qgpluginmanager_p.h new file mode 100644 index 0000000..e0c0e78 --- a/dev/null +++ b/qmake/include/private/qgpluginmanager_p.h @@ -0,0 +1,107 @@ +/********************************************************************** +** $Id$ +** +** Definition of QGPluginManager class +** +** Copyright (C) 2000-2001 Trolltech AS. All rights reserved. +** +** This file is part of the tools module of the Qt GUI Toolkit. +** +** This file may be distributed under the terms of the Q Public License +** as defined by Trolltech AS of Norway and appearing in the file +** LICENSE.QPL included in the packaging of this file. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition +** licenses may use this file in accordance with the Qt Commercial License +** Agreement provided with the Software. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for +** information about Qt Commercial License Agreements. +** See http://www.trolltech.com/qpl/ for QPL licensing information. +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#ifndef QGPLUGINMANAGER_H +#define QGPLUGINMANAGER_H + +#ifndef QT_H +#include "qdict.h" +#include "qlibrary.h" +#include "quuid.h" +#include "qstringlist.h" +#include "qcom_p.h" +#endif // QT_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of a number of Qt sources files. This header file may change from +// version to version without notice, or even be removed. +// +// We mean it. +// +// + +#ifndef QT_NO_COMPONENT + +#if defined(Q_TEMPLATEDLL) +// MOC_SKIP_BEGIN +Q_TEMPLATE_EXTERN template class Q_EXPORT QDict<QLibrary>; +// MOC_SKIP_END +#endif + +class Q_EXPORT QGPluginManager +{ +public: + QGPluginManager( const QUuid& id, const QStringList& paths = QString::null, const QString &suffix = QString::null, bool cs = TRUE ); + ~QGPluginManager(); + + void addLibraryPath( const QString& path ); + const QLibrary* library( const QString& feature ) const; + QStringList featureList() const; + + bool autoUnload() const; + void setAutoUnload( bool ); + +protected: + bool enabled() const; + bool addLibrary( QLibrary* plugin ); + + QRESULT queryUnknownInterface(const QString& feature, QUnknownInterface** iface) const; + + QUuid interfaceId; + QDict<QLibrary> plugDict; // Dict to match feature with library + QDict<QLibrary> libDict; // Dict to match library file with library + QStringList libList; + + uint casesens : 1; + uint autounload : 1; +}; + +inline void QGPluginManager::setAutoUnload( bool unload ) +{ + autounload = unload; +} + +inline bool QGPluginManager::autoUnload() const +{ + return autounload; +} + +#endif + +#endif //QGPLUGINMANAGER_H diff --git a/qmake/include/private/qimageformatinterface_p.h b/qmake/include/private/qimageformatinterface_p.h new file mode 100644 index 0000000..5f7601c --- a/dev/null +++ b/qmake/include/private/qimageformatinterface_p.h @@ -0,0 +1,75 @@ +/**************************************************************************** +** $Id$ +** +** Definition of ??? +** +** Copyright (C) 1992-2002 Trolltech AS. All rights reserved. +** +** This file is part of the kernel module of the Qt GUI Toolkit. +** +** This file may be distributed under the terms of the Q Public License +** as defined by Trolltech AS of Norway and appearing in the file +** LICENSE.QPL included in the packaging of this file. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition +** licenses may use this file in accordance with the Qt Commercial License +** Agreement provided with the Software. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for +** information about Qt Commercial License Agreements. +** See http://www.trolltech.com/qpl/ for QPL licensing information. +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#ifndef QIMAGEFORMATINTERFACE_H +#define QIMAGEFORMATINTERFACE_H + +#ifndef QT_H +#include <private/qcom_p.h> +#endif // QT_H + + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of internal files. This header file may change from version to version +// without notice, or even be removed. +// +// We mean it. +// +// + +#ifndef QT_NO_COMPONENT + +// {04903F05-54B1-4726-A849-FB5CB097CA87} +#ifndef IID_QImageFormat +#define IID_QImageFormat QUuid( 0x04903f05, 0x54b1, 0x4726, 0xa8, 0x49, 0xfb, 0x5c, 0xb0, 0x97, 0xca, 0x87 ) +#endif + +class QImage; + +struct Q_EXPORT QImageFormatInterface : public QFeatureListInterface +{ + virtual QRESULT loadImage( const QString &format, const QString &filename, QImage * ) = 0; + virtual QRESULT saveImage( const QString &format, const QString &filename, const QImage & ) = 0; + + virtual QRESULT installIOHandler( const QString & ) = 0; +}; + +#endif // QT_NO_COMPONENT + +#endif // QIMAGEFORMATINTERFACE_H diff --git a/qmake/include/private/qinputcontext_p.h b/qmake/include/private/qinputcontext_p.h new file mode 100644 index 0000000..9ac0d2b --- a/dev/null +++ b/qmake/include/private/qinputcontext_p.h @@ -0,0 +1,121 @@ +/**************************************************************************** +** $Id$ +** +** Definition of ??? +** +** Copyright (C) 1992-2002 Trolltech AS. All rights reserved. +** +** This file is part of the kernel module of the Qt GUI Toolkit. +** +** This file may be distributed under the terms of the Q Public License +** as defined by Trolltech AS of Norway and appearing in the file +** LICENSE.QPL included in the packaging of this file. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition +** licenses may use this file in accordance with the Qt Commercial License +** Agreement provided with the Software. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for +** information about Qt Commercial License Agreements. +** See http://www.trolltech.com/qpl/ for QPL licensing information. +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#ifndef QINPUTCONTEXT_P_H +#define QINPUTCONTEXT_P_H + + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of internal files. This header file may change from version to version +// without notice, or even be removed. +// +// We mean it. +// +// + +#include <qglobal.h> + +class QKeyEvent; +class QWidget; +class QFont; +class QString; + + +#ifdef Q_WS_X11 +#include "qarray.h" +#include "qwindowdefs.h" +#include "qt_x11.h" +#endif + +#ifdef Q_WS_WIN +#include <qt_windows.h> +#endif + +#ifdef Q_WS_QWS +class QWSIMEvent; +#endif + +class QInputContext +{ +public: +#ifdef Q_WS_X11 + QInputContext(QWidget *); // should be a toplevel widget + ~QInputContext(); + + void setFocus(); + void setComposePosition(int, int); + void setComposeArea(int, int, int, int); + void reset(); + + int lookupString(XKeyEvent *, QCString &, KeySym *, Status *) const; + void setXFontSet(const QFont &); + + void *ic; + QString text, lastcompose; + QWidget *focusWidget; + bool composing; + QFont font; + XFontSet fontset; + QMemArray<bool> selectedChars; +#endif // Q_WS_X11 + +#ifdef Q_WS_QWS + static void translateIMEvent( QWSIMEvent *, QWidget * ); + static void reset(); +private: + static QWidget* focusWidget; + static QString* composition; +#endif //Q_WS_QWS + +#ifdef Q_WS_WIN + static void init(); + static void shutdown(); + + static void TranslateMessage( const MSG *msg); + static LRESULT DefWindowProc( HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam ); + + static void setFont( const QWidget *w, const QFont & ); + static void setFocusHint( int x, int y, int w, int h, const QWidget *widget ); + static bool startComposition(); + static bool endComposition( QWidget *fw = 0 ); + static bool composition( LPARAM lparam ); +#endif +}; + +#endif // QINPUTCONTEXT_P_H diff --git a/qmake/include/private/qinternal_p.h b/qmake/include/private/qinternal_p.h new file mode 100644 index 0000000..ae38695 --- a/dev/null +++ b/qmake/include/private/qinternal_p.h @@ -0,0 +1,157 @@ +/**************************************************************************** +** $Id$ +** +** Definition of some shared interal classes +** +** Created : 010427 +** +** Copyright (C) 1992-2000 Trolltech AS. All rights reserved. +** +** This file is part of the kernel module of the Qt GUI Toolkit. +** +** This file may be distributed under the terms of the Q Public License +** as defined by Trolltech AS of Norway and appearing in the file +** LICENSE.QPL included in the packaging of this file. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition +** licenses may use this file in accordance with the Qt Commercial License +** Agreement provided with the Software. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for +** information about Qt Commercial License Agreements. +** See http://www.trolltech.com/qpl/ for QPL licensing information. +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#ifndef QINTERNAL_P_H +#define QINTERNAL_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of a number of Qt sources files. This header file may change from +// version to version without notice, or even be removed. +// +// We mean it. +// +// +#ifndef QT_H +#include <qnamespace.h> +#include <qrect.h> +#endif // QT_H + +class QWidget; +class QPainter; +class QPixmap; + +class Q_EXPORT QSharedDoubleBuffer +{ +public: + enum DoubleBufferFlags { + NoFlags = 0x00, + InitBG = 0x01, + Force = 0x02, + Default = InitBG | Force + }; + typedef uint DBFlags; + + QSharedDoubleBuffer( DBFlags f = Default ); + QSharedDoubleBuffer( QWidget* widget, + int x = 0, int y = 0, int w = -1, int h = -1, + DBFlags f = Default ); + QSharedDoubleBuffer( QPainter* painter, + int x = 0, int y = 0, int w = -1, int h = -1, + DBFlags f = Default ); + QSharedDoubleBuffer( QWidget *widget, const QRect &r, DBFlags f = Default ); + QSharedDoubleBuffer( QPainter *painter, const QRect &r, DBFlags f = Default ); + ~QSharedDoubleBuffer(); + + bool begin( QWidget* widget, int x = 0, int y = 0, int w = -1, int h = -1 ); + bool begin( QPainter* painter, int x = 0, int y = 0, int w = -1, int h = -1); + bool begin( QWidget* widget, const QRect &r ); + bool begin( QPainter* painter, const QRect &r ); + bool end(); + + QPainter* painter() const; + + bool isActive() const; + bool isBuffered() const; + void flush(); + + static bool isDisabled() { return !dblbufr; } + static void setDisabled( bool off ) { dblbufr = !off; } + + static void cleanup(); + +private: + enum DoubleBufferState { + Active = 0x0100, + BufferActive = 0x0200, + ExternalPainter = 0x0400 + }; + typedef uint DBState; + + QPixmap *getPixmap(); + void releasePixmap(); + + QWidget *wid; + int rx, ry, rw, rh; + DBFlags flags; + DBState state; + + QPainter *p, *external_p; + QPixmap *pix; + + static bool dblbufr; +}; + +inline bool QSharedDoubleBuffer::begin( QWidget* widget, const QRect &r ) +{ return begin( widget, r.x(), r.y(), r.width(), r.height() ); } + +inline bool QSharedDoubleBuffer::begin( QPainter *painter, const QRect &r ) +{ return begin( painter, r.x(), r.y(), r.width(), r.height() ); } + +inline QPainter* QSharedDoubleBuffer::painter() const +{ return p; } + +inline bool QSharedDoubleBuffer::isActive() const +{ return ( state & Active ); } + +inline bool QSharedDoubleBuffer::isBuffered() const +{ return ( state & BufferActive ); } + + +class QVirtualDestructor { +public: + virtual ~QVirtualDestructor() {} +}; + +template <class T> +class QAutoDeleter : public QVirtualDestructor { +public: + QAutoDeleter( T* p ) : ptr( p ) {} + ~QAutoDeleter() { delete ptr; } +private: + T* ptr; +}; + +template <class T> +QAutoDeleter<T>* qAutoDeleter( T* p ) +{ + return new QAutoDeleter<T>( p ); +} +#endif // QINTERNAL_P_H diff --git a/qmake/include/private/qkbddriverinterface_p.h b/qmake/include/private/qkbddriverinterface_p.h new file mode 100644 index 0000000..efc7ded --- a/dev/null +++ b/qmake/include/private/qkbddriverinterface_p.h @@ -0,0 +1,56 @@ +/**************************************************************************** +** $Id$ +** +** Definition of Qt/Embedded Keyboard Driver Interface +** +** Created : 20020218 +** +** Copyright (C) 1992-2002 Trolltech AS. All rights reserved. +** +** This file is part of the kernel module of the Qt GUI Toolkit. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition +** licenses for Qt/Embedded may use this file in accordance with the +** Qt Embedded Commercial License Agreement provided with the Software. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for +** information about Qt Commercial License Agreements. +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#ifndef QKBDDRIVERINTERFACE_H +#define QKBDDRIVERINTERFACE_H + +#ifndef QT_H +#include <private/qcom_p.h> +#endif // QT_H + +#ifndef QT_NO_COMPONENT + +// {C7C838EA-FC3E-4905-92AD-F479E81F1D02} +#ifndef IID_QKbdDriver +#define IID_QKbdDriver QUuid( 0xc7c838ea, 0xfc3e, 0x4905, 0x92, 0xad, 0xf4, 0x79, 0xe8, 0x1f, 0x1d, 0x02) +#endif + +class QWSKeyboardHandler; + +struct Q_EXPORT QKbdDriverInterface : public QFeatureListInterface +{ + virtual QWSKeyboardHandler* create( const QString& driver, const QString& device ) = 0; +}; + +#endif // QT_NO_COMPONENT + +#endif // QKBDDRIVERINTERFACE_H diff --git a/qmake/include/private/qlayoutengine_p.h b/qmake/include/private/qlayoutengine_p.h new file mode 100644 index 0000000..4d88afe --- a/dev/null +++ b/qmake/include/private/qlayoutengine_p.h @@ -0,0 +1,128 @@ +/**************************************************************************** +** $Id$ +** +** Internal header file. +** +** Created : 981027 +** +** Copyright (C) 1998-99 by Trolltech AS. All rights reserved. +** +** This file is part of the kernel module of the Qt GUI Toolkit. +** +** This file may be distributed under the terms of the Q Public License +** as defined by Trolltech AS of Norway and appearing in the file +** LICENSE.QPL included in the packaging of this file. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition +** licenses may use this file in accordance with the Qt Commercial License +** Agreement provided with the Software. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for +** information about Qt Commercial License Agreements. +** See http://www.trolltech.com/qpl/ for QPL licensing information. +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#ifndef QLAYOUTENGINE_P_H +#define QLAYOUTENGINE_P_H + + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of qlayout.cpp, qlayoutengine.cpp, qmainwindow.cpp and qsplitter.cpp. +// This header file may change from version to version without notice, +// or even be removed. +// +// We mean it. +// +// + + +#ifndef QT_H +#include "qabstractlayout.h" +#endif // QT_H + +#ifndef QT_NO_LAYOUT + +struct QLayoutStruct +{ + void initParameters() { + minimumSize = sizeHint = 0; + maximumSize = QLAYOUTSIZE_MAX; + expansive = FALSE; + empty = TRUE; + } + void init() { + stretch = 0; + initParameters(); + } + + QCOORD smartSizeHint() { + return ( stretch > 0 ) ? minimumSize : sizeHint; + } + + // permanent storage + int stretch; + + // parameters + QCOORD sizeHint; + QCOORD maximumSize; + QCOORD minimumSize; + bool expansive; + bool empty; + + // temporary storage + bool done; + + // result + int pos; + int size; +}; + + +Q_EXPORT void qGeomCalc( QMemArray<QLayoutStruct> &chain, int start, int count, + int pos, int space, int spacer ); +Q_EXPORT QSize qSmartMinSize( const QWidgetItem *i ); +Q_EXPORT QSize qSmartMinSize( QWidget *w ); +Q_EXPORT QSize qSmartMaxSize( const QWidgetItem *i, int align = 0 ); +Q_EXPORT QSize qSmartMaxSize( QWidget *w, int align = 0 ); + + +/* + Modify total maximum (max) and total expansion (exp) + when adding boxmax/boxexp. + + Expansive boxes win over non-expansive boxes. +*/ +static inline void qMaxExpCalc( QCOORD & max, bool &exp, + QCOORD boxmax, bool boxexp ) +{ + if ( exp ) { + if ( boxexp ) + max = QMAX( max, boxmax ); + } else { + if ( boxexp ) + max = boxmax; + else + max = QMIN( max, boxmax ); + } + exp = exp || boxexp; +} + +#endif //QT_NO_LAYOUT +#endif diff --git a/qmake/include/private/qlibrary_p.h b/qmake/include/private/qlibrary_p.h new file mode 100644 index 0000000..c4dd565 --- a/dev/null +++ b/qmake/include/private/qlibrary_p.h @@ -0,0 +1,84 @@ +/**************************************************************************** +** $Id$ +** +** Definition of an internal QLibrary class +** +** Created : 2000-01-01 +** +** Copyright (C) 2000-2002 Trolltech AS. All rights reserved. +** +** This file is part of the tools module of the Qt GUI Toolkit. +** +** This file may be distributed under the terms of the Q Public License +** as defined by Trolltech AS of Norway and appearing in the file +** LICENSE.QPL included in the packaging of this file. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition +** licenses may use this file in accordance with the Qt Commercial License +** Agreement provided with the Software. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for +** information about Qt Commercial License Agreements. +** See http://www.trolltech.com/qpl/ for QPL licensing information. +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#ifndef QLIBRARY_P_H +#define QLIBRARY_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of the QLibrary class. This header file may change from +// version to version without notice, or even be removed. +// +// We mean it. +// +// + +#include "qlibrary.h" + +#ifndef QT_NO_LIBRARY + +#ifndef QT_H +#if defined(Q_CC_GNU) +#warning "avoid including header file \"qwindowdefs.h\" in directory 'tools'" +#endif +#include "qwindowdefs.h" +#endif // QT_H + +class QLibraryPrivate +{ +public: + QLibraryPrivate( QLibrary *lib ); + +#ifdef Q_WS_WIN + HINSTANCE pHnd; +#else + void *pHnd; +#endif + + bool loadLibrary(); + bool freeLibrary(); + void *resolveSymbol( const char * ); + +private: + QLibrary *library; +}; + +#endif // QT_NO_LIBRARY +#endif // QLIBRARY_P_H diff --git a/qmake/include/private/qmousedriverinterface_p.h b/qmake/include/private/qmousedriverinterface_p.h new file mode 100644 index 0000000..fd76308 --- a/dev/null +++ b/qmake/include/private/qmousedriverinterface_p.h @@ -0,0 +1,56 @@ +/**************************************************************************** +** $Id$ +** +** Definition of Qt/Embedded Mouse Driver Interface +** +** Created : 20020220 +** +** Copyright (C) 1992-2002 Trolltech AS. All rights reserved. +** +** This file is part of the kernel module of the Qt GUI Toolkit. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition +** licenses for Qt/Embedded may use this file in accordance with the +** Qt Embedded Commercial License Agreement provided with the Software. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for +** information about Qt Commercial License Agreements. +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#ifndef QMOUSEDRIVERINTERFACE_H +#define QMOUSEDRIVERINTERFACE_H + +#ifndef QT_H +#include <private/qcom_p.h> +#endif // QT_H + +#ifndef QT_NO_COMPONENT + +// {4367CF5A-F7CE-407B-8BB6-DF19AEDA2EBB} +#ifndef IID_QMouseDriver +#define IID_QMouseDriver QUuid( 0x4367cf5a, 0xf7ce, 0x407b, 0x8b, 0xb6, 0xdf, 0x19, 0xae, 0xda, 0x2e, 0xbb) +#endif + +class QWSMouseHandler; + +struct Q_EXPORT QMouseDriverInterface : public QFeatureListInterface +{ + virtual QWSMouseHandler* create( const QString& driver, const QString &device ) = 0; +}; + +#endif // QT_NO_COMPONENT + +#endif // QMOUSEDRIVERINTERFACE_H diff --git a/qmake/include/private/qmutex_p.h b/qmake/include/private/qmutex_p.h new file mode 100644 index 0000000..d4ce97a --- a/dev/null +++ b/qmake/include/private/qmutex_p.h @@ -0,0 +1,70 @@ +/**************************************************************************** +** $Id$ +** +** QMutex private class declarations +** +** Created : 20012507 +** +** Copyright (C) 1992-2002 Trolltech AS. All rights reserved. +** +** This file is part of the tools module of the Qt GUI Toolkit. +** +** This file may be distributed under the terms of the Q Public License +** as defined by Trolltech AS of Norway and appearing in the file +** LICENSE.QPL included in the packaging of this file. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition +** licenses may use this file in accordance with the Qt Commercial License +** Agreement provided with the Software. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for +** information about Qt Commercial License Agreements. +** See http://www.trolltech.com/qpl/ for QPL licensing information. +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#ifndef QMUTEX_P_H +#define QMUTEX_P_H + +#ifndef QT_H +#endif // QT_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of qmutex_unix.cpp and qmutex_win.cpp. This header file may change +// from version to version without notice, or even be removed. +// +// We mean it. +// + +class QMutexPrivate { +public: + // Q_MUTEX_T is defined in the various *.cpp files + Q_MUTEX_T handle; + + virtual ~QMutexPrivate(); + + virtual void lock() = 0; + virtual void unlock() = 0; + virtual bool locked() = 0; + virtual bool trylock() = 0; + virtual int type() const = 0; +}; + + +#endif // QMUTEX_P_H diff --git a/qmake/include/private/qmutexpool_p.h b/qmake/include/private/qmutexpool_p.h new file mode 100644 index 0000000..3d9fef7 --- a/dev/null +++ b/qmake/include/private/qmutexpool_p.h @@ -0,0 +1,39 @@ +#ifndef QMUTEXPOOL_H +#define QMUTEXPOOL_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of QSettings. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// +// + +#ifdef QT_THREAD_SUPPORT + +#include "qmutex.h" +#include "qmemarray.h" + +class QMutexPool +{ +public: + QMutexPool( bool recursive = FALSE, int size = 17 ); + ~QMutexPool(); + + QMutex *get( void *address ); + +private: + QMutex mutex; + QMemArray<QMutex*> mutexes; + bool recurs; +}; + +extern QMutexPool *qt_global_mutexpool; + +#endif // QT_THREAD_SUPPORT + +#endif // QMUTEXPOOL_H diff --git a/qmake/include/private/qpainter_p.h b/qmake/include/private/qpainter_p.h new file mode 100644 index 0000000..43f454e --- a/dev/null +++ b/qmake/include/private/qpainter_p.h @@ -0,0 +1,63 @@ +/**************************************************************************** +** $Id$ +** +** Definition of some Qt private functions. +** +** Created : 000909 +** +** Copyright (C) 2000 Trolltech AS. All rights reserved. +** +** This file is part of the kernel module of the Qt GUI Toolkit. +** +** This file may be distributed under the terms of the Q Public License +** as defined by Trolltech AS of Norway and appearing in the file +** LICENSE.QPL included in the packaging of this file. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition +** licenses may use this file in accordance with the Qt Commercial License +** Agreement provided with the Software. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for +** information about Qt Commercial License Agreements. +** See http://www.trolltech.com/qpl/ for QPL licensing information. +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#ifndef QPAINTER_P_H +#define QPAINTER_P_H + + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of qpainter.cpp and qfont.cpp. This header file may change +// from version to version without notice, or even be removed. +// +// We mean it. +// +// + +#ifndef QT_H +#endif // QT_H + +extern void qt_format_text( const QFont& f, const QRect &r, + int tf, const QString& str, int len, QRect *brect, + int tabstops, int* tabarray, int tabarraylen, + QTextParag **internal, QPainter* painter ); + + +#endif diff --git a/qmake/include/private/qpluginmanager_p.h b/qmake/include/private/qpluginmanager_p.h new file mode 100644 index 0000000..4b64ba0 --- a/dev/null +++ b/qmake/include/private/qpluginmanager_p.h @@ -0,0 +1,73 @@ +/**************************************************************************** +** $Id$ +** +** Definition of QPluginManager class +** +** Created : 2000-01-01 +** +** Copyright (C) 2000-2002 Trolltech AS. All rights reserved. +** +** This file is part of the tools module of the Qt GUI Toolkit. +** +** This file may be distributed under the terms of the Q Public License +** as defined by Trolltech AS of Norway and appearing in the file +** LICENSE.QPL included in the packaging of this file. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition +** licenses may use this file in accordance with the Qt Commercial License +** Agreement provided with the Software. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for +** information about Qt Commercial License Agreements. +** See http://www.trolltech.com/qpl/ for QPL licensing information. +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#ifndef QPLUGINMANAGER_H +#define QPLUGINMANAGER_H + +#ifndef QT_H +#include "qgpluginmanager_p.h" +#endif // QT_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of a number of Qt sources files. This header file may change from +// version to version without notice, or even be removed. +// +// We mean it. +// +// + +#ifndef QT_NO_COMPONENT + +template<class Type> +class QPluginManager : public QGPluginManager +{ +public: + QPluginManager( const QUuid& id, const QStringList& paths = QString::null, const QString &suffix = QString::null, bool cs = TRUE ) + : QGPluginManager( id, paths, suffix, cs ) {} + QRESULT queryInterface(const QString& feature, Type** iface) const + { + return queryUnknownInterface( feature, (QUnknownInterface**)iface ); + } +}; + +#endif //QT_NO_COMPONENT + +#endif //QPLUGINMANAGER_H diff --git a/qmake/include/private/qpsprinter_p.h b/qmake/include/private/qpsprinter_p.h new file mode 100644 index 0000000..27a4968 --- a/dev/null +++ b/qmake/include/private/qpsprinter_p.h @@ -0,0 +1,89 @@ +/********************************************************************** +** $Id$ +** +** Definition of internal QPSPrinter class. +** QPSPrinter implements PostScript (tm) output via QPrinter. +** +** Created : 940927 +** +** Copyright (C) 1992-2000 Trolltech AS. All rights reserved. +** +** This file is part of the kernel module of the Qt GUI Toolkit. +** +** This file may be distributed under the terms of the Q Public License +** as defined by Trolltech AS of Norway and appearing in the file +** LICENSE.QPL included in the packaging of this file. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition +** licenses may use this file in accordance with the Qt Commercial License +** Agreement provided with the Software. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for +** information about Qt Commercial License Agreements. +** See http://www.trolltech.com/qpl/ for QPL licensing information. +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#ifndef QPSPRINTER_P_H +#define QPSPRINTER_P_H + + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of qpsprinter.cpp and qprinter_x11.cpp. +// This header file may change from version to version without notice, +// or even be removed. +// +// We mean it. +// +// + + +#ifndef QT_H +#include "qprinter.h" +#include "qtextstream.h" +#endif // QT_H + +#ifndef QT_NO_PRINTER + +struct QPSPrinterPrivate; + +class Q_EXPORT QPSPrinter : public QPaintDevice +{ +private: + // QPrinter uses these + QPSPrinter( QPrinter *, int ); + ~QPSPrinter(); + + bool cmd ( int, QPainter *, QPDevCmdParam * ); + + enum { NewPage = 100, AbortPrinting }; + + friend class QPrinter; +private: + // not used by QPrinter + QPSPrinterPrivate *d; + + // Disabled copy constructor and operator= + QPSPrinter( const QPSPrinter & ); + QPSPrinter &operator=( const QPSPrinter & ); +}; + +#endif // QT_NO_PRINTER + +#endif // QPSPRINTER_P_H diff --git a/qmake/include/private/qrichtext_p.h b/qmake/include/private/qrichtext_p.h new file mode 100644 index 0000000..8e29804 --- a/dev/null +++ b/qmake/include/private/qrichtext_p.h @@ -0,0 +1,2133 @@ +/**************************************************************************** +** $Id$ +** +** Definition of internal rich text classes +** +** Created : 990124 +** +** Copyright (C) 1999-2002 Trolltech AS. All rights reserved. +** +** This file is part of the kernel module of the Qt GUI Toolkit. +** +** This file may be distributed under the terms of the Q Public License +** as defined by Trolltech AS of Norway and appearing in the file +** LICENSE.QPL included in the packaging of this file. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition +** licenses may use this file in accordance with the Qt Commercial License +** Agreement provided with the Software. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for +** information about Qt Commercial License Agreements. +** See http://www.trolltech.com/qpl/ for QPL licensing information. +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#ifndef QRICHTEXT_P_H +#define QRICHTEXT_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of a number of Qt sources files. This header file may change from +// version to version without notice, or even be removed. +// +// We mean it. +// +// + +#ifndef QT_H +#include "qstring.h" +#include "qptrlist.h" +#include "qrect.h" +#include "qfontmetrics.h" +#include "qintdict.h" +#include "qmap.h" +#include "qstringlist.h" +#include "qfont.h" +#include "qcolor.h" +#include "qsize.h" +#include "qvaluelist.h" +#include "qvaluestack.h" +#include "qobject.h" +#include "qdict.h" +#include "qpixmap.h" +#include "qstylesheet.h" +#include "qptrvector.h" +#include "qpainter.h" +#include "qlayout.h" +#include "qobject.h" +#include "private/qcomplextext_p.h" +#include "qapplication.h" +#endif // QT_H + +#ifndef QT_NO_RICHTEXT + +class QTextDocument; +class QTextString; +class QTextPreProcessor; +class QTextFormat; +class QTextCursor; +class QTextParagraph; +class QTextFormatter; +class QTextIndent; +class QTextFormatCollection; +class QStyleSheetItem; +#ifndef QT_NO_TEXTCUSTOMITEM +class QTextCustomItem; +#endif +class QTextFlow; +struct QBidiContext; + +// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + +class Q_EXPORT QTextStringChar +{ + friend class QTextString; + +public: + // this is never called, initialize variables in QTextString::insert()!!! + QTextStringChar() : lineStart( 0 ), type( Regular ), startOfRun( 0 ) {d.format=0;} + ~QTextStringChar(); + + QChar c; + enum Type { Regular=0, Custom=1, Anchor=2, CustomAnchor=3 }; + uint lineStart : 1; + uint rightToLeft : 1; + uint hasCursor : 1; + uint canBreak : 1; + Type type : 2; + uint startOfRun : 1; + + int x; + int height() const; + int ascent() const; + int descent() const; + bool isCustom() const { return (type & Custom) != 0; } + QTextFormat *format() const; +#ifndef QT_NO_TEXTCUSTOMITEM + QTextCustomItem *customItem() const; +#endif + void setFormat( QTextFormat *f ); +#ifndef QT_NO_TEXTCUSTOMITEM + void setCustomItem( QTextCustomItem *i ); +#endif + struct CustomData + { + QTextFormat *format; +#ifndef QT_NO_TEXTCUSTOMITEM + QTextCustomItem *custom; +#endif + QString anchorName; + QString anchorHref; + }; + +#ifndef QT_NO_TEXTCUSTOMITEM + void loseCustomItem(); +#endif + + union { + QTextFormat* format; + CustomData* custom; + } d; + + bool isAnchor() const { return ( type & Anchor) != 0; } + bool isLink() const { return isAnchor() && !!d.custom->anchorHref; } + QString anchorName() const; + QString anchorHref() const; + void setAnchor( const QString& name, const QString& href ); + +private: + QTextStringChar &operator=( const QTextStringChar & ) { + //abort(); + return *this; + } + friend class QComplexText; + friend class QTextParagraph; +}; + +#if defined(Q_TEMPLATEDLL) +// MOC_SKIP_BEGIN +Q_TEMPLATE_EXTERN template class Q_EXPORT QMemArray<QTextStringChar>; +// MOC_SKIP_END +#endif + +class Q_EXPORT QTextString +{ +public: + + QTextString(); + QTextString( const QTextString &s ); + virtual ~QTextString(); + + static QString toString( const QMemArray<QTextStringChar> &data ); + QString toString() const; + + QTextStringChar &at( int i ) const; +#if defined(Q_STRICT_INLINING_RULES) + // This is for the IRIX MIPSpro o32 ABI - it fails, claiming the + // implementation to be a redefinition. + inline int length() const; +#else + int length() const; +#endif + + int width( int idx ) const; + + void insert( int index, const QString &s, QTextFormat *f ); + void insert( int index, const QChar *unicode, int len, QTextFormat *f ); + void insert( int index, QTextStringChar *c, bool doAddRefFormat = FALSE ); + void truncate( int index ); + void remove( int index, int len ); + void clear(); + + void setFormat( int index, QTextFormat *f, bool useCollection ); + + void setBidi( bool b ) { bidi = b; } + bool isBidi() const; + bool isRightToLeft() const; + QChar::Direction direction() const; + void setDirection( QChar::Direction d ) { dir = d; bidiDirty = TRUE; } + + QMemArray<QTextStringChar> subString( int start = 0, int len = 0xFFFFFF ) const; + QMemArray<QTextStringChar> rawData() const { return data.copy(); } + + void operator=( const QString &s ) { clear(); insert( 0, s, 0 ); } + void operator+=( const QString &s ) { insert( length(), s, 0 ); } + void prepend( const QString &s ) { insert( 0, s, 0 ); } + +private: + void checkBidi() const; + + QMemArray<QTextStringChar> data; + uint bidiDirty : 1; + uint bidi : 1; // true when the paragraph has right to left characters + uint rightToLeft : 1; + uint dir : 5; +}; + +inline bool QTextString::isBidi() const +{ + if ( bidiDirty ) + checkBidi(); + return bidi; +} + +inline bool QTextString::isRightToLeft() const +{ + if ( bidiDirty ) + checkBidi(); + return rightToLeft; +} + +inline QChar::Direction QTextString::direction() const +{ + return (QChar::Direction) dir; +} + +// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + +#if defined(Q_TEMPLATEDLL) +// MOC_SKIP_BEGIN +Q_TEMPLATE_EXTERN template class Q_EXPORT QValueStack<int>; +Q_TEMPLATE_EXTERN template class Q_EXPORT QValueStack<QTextParagraph*>; +Q_TEMPLATE_EXTERN template class Q_EXPORT QValueStack<bool>; +// MOC_SKIP_END +#endif + +class Q_EXPORT QTextCursor +{ +public: + QTextCursor( QTextDocument *d = 0 ); + QTextCursor( const QTextCursor &c ); + QTextCursor &operator=( const QTextCursor &c ); + virtual ~QTextCursor() {} + + bool operator==( const QTextCursor &c ) const; + bool operator!=( const QTextCursor &c ) const { return !(*this == c); } + +#if defined(Q_STRICT_INLINING_RULES) + // This is for the IRIX MIPSpro o32 ABI - it fails, claiming the + // implementation to be a redefinition. + inline QTextParagraph *paragraph() const; +#else + QTextParagraph *paragraph() const; +#endif + + void setParagraph( QTextParagraph*p ) { gotoPosition(p, 0 ); } + QTextDocument *document() const; + int index() const; + void setIndex( int index ) { gotoPosition(paragraph(), index ); } + + void gotoPosition( QTextParagraph* p, int index = 0); + void gotoLeft(); + void gotoRight(); + void gotoNextLetter(); + void gotoPreviousLetter(); + void gotoUp(); + void gotoDown(); + void gotoLineEnd(); + void gotoLineStart(); + void gotoHome(); + void gotoEnd(); + void gotoPageUp( int visibleHeight ); + void gotoPageDown( int visibleHeight ); + void gotoNextWord(); + void gotoPreviousWord(); + void gotoWordLeft(); + void gotoWordRight(); + + void insert( const QString &s, bool checkNewLine, QMemArray<QTextStringChar> *formatting = 0 ); + void splitAndInsertEmptyParagraph( bool ind = TRUE, bool updateIds = TRUE ); + bool remove(); + void indent(); + + bool atParagStart(); + bool atParagEnd(); + + int x() const; // x in current paragraph + int y() const; // y in current paragraph + + int globalX() const; + int globalY() const; + + QTextParagraph *topParagraph() const { return paras.isEmpty() ? para : paras.first(); } + int offsetX() const { return ox; } // inner document offset + int offsetY() const { return oy; } // inner document offset + int totalOffsetX() const; // total document offset + int totalOffsetY() const; // total document offset + + bool place( const QPoint &pos, QTextParagraph *s ) { return place( pos, s, FALSE ); } + bool place( const QPoint &pos, QTextParagraph *s, bool link ); + void restoreState(); + + + int nestedDepth() const { return (int)indices.count(); } //### size_t/int cast + void oneUp() { if ( !indices.isEmpty() ) pop(); } + void setValid( bool b ) { valid = b; } + bool isValid() const { return valid; } + +private: + enum Operation { EnterBegin, EnterEnd, Next, Prev, Up, Down }; + + void push(); + void pop(); + void processNesting( Operation op ); + void invalidateNested(); + void gotoIntoNested( const QPoint &globalPos ); + + QTextParagraph *para; + int idx, tmpIndex; + int ox, oy; + QValueStack<int> indices; + QValueStack<QTextParagraph*> paras; + QValueStack<int> xOffsets; + QValueStack<int> yOffsets; + uint valid : 1; + +}; + +// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + +class Q_EXPORT QTextCommand +{ +public: + enum Commands { Invalid, Insert, Delete, Format, Style }; + + QTextCommand( QTextDocument *d ) : doc( d ), cursor( d ) {} + virtual ~QTextCommand(); + + virtual Commands type() const; + + virtual QTextCursor *execute( QTextCursor *c ) = 0; + virtual QTextCursor *unexecute( QTextCursor *c ) = 0; + +protected: + QTextDocument *doc; + QTextCursor cursor; + +}; + +#if defined(Q_TEMPLATEDLL) +// MOC_SKIP_BEGIN +Q_TEMPLATE_EXTERN template class Q_EXPORT QPtrList<QTextCommand>; +// MOC_SKIP_END +#endif + +class Q_EXPORT QTextCommandHistory +{ +public: + QTextCommandHistory( int s ) : current( -1 ), steps( s ) { history.setAutoDelete( TRUE ); } + virtual ~QTextCommandHistory(); + + void clear() { history.clear(); current = -1; } + + void addCommand( QTextCommand *cmd ); + QTextCursor *undo( QTextCursor *c ); + QTextCursor *redo( QTextCursor *c ); + + bool isUndoAvailable(); + bool isRedoAvailable(); + + void setUndoDepth( int d ) { steps = d; } + int undoDepth() const { return steps; } + + int historySize() const { return history.count(); } + int currentPosition() const { return current; } + +private: + QPtrList<QTextCommand> history; + int current, steps; + +}; + +inline QTextCommandHistory::~QTextCommandHistory() +{ + clear(); +} + +// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + +#ifndef QT_NO_TEXTCUSTOMITEM +class Q_EXPORT QTextCustomItem +{ +public: + QTextCustomItem( QTextDocument *p ) + : xpos(0), ypos(-1), width(-1), height(0), parent( p ) + {} + virtual ~QTextCustomItem(); + virtual void draw(QPainter* p, int x, int y, int cx, int cy, int cw, int ch, const QColorGroup& cg, bool selected ) = 0; + + virtual void adjustToPainter( QPainter* ); + + enum Placement { PlaceInline = 0, PlaceLeft, PlaceRight }; + virtual Placement placement() const; + bool placeInline() { return placement() == PlaceInline; } + + virtual bool ownLine() const; + virtual void resize( int nwidth ); + virtual void invalidate(); + virtual int ascent() const { return height; } + + virtual bool isNested() const; + virtual int minimumWidth() const; + + virtual QString richText() const; + + int xpos; // used for floating items + int ypos; // used for floating items + int width; + int height; + + QRect geometry() const { return QRect( xpos, ypos, width, height ); } + + virtual bool enter( QTextCursor *, QTextDocument *&doc, QTextParagraph *¶g, int &idx, int &ox, int &oy, bool atEnd = FALSE ); + virtual bool enterAt( QTextCursor *, QTextDocument *&doc, QTextParagraph *¶g, int &idx, int &ox, int &oy, const QPoint & ); + virtual bool next( QTextCursor *, QTextDocument *&doc, QTextParagraph *¶g, int &idx, int &ox, int &oy ); + virtual bool prev( QTextCursor *, QTextDocument *&doc, QTextParagraph *¶g, int &idx, int &ox, int &oy ); + virtual bool down( QTextCursor *, QTextDocument *&doc, QTextParagraph *¶g, int &idx, int &ox, int &oy ); + virtual bool up( QTextCursor *, QTextDocument *&doc, QTextParagraph *¶g, int &idx, int &ox, int &oy ); + + void setParagraph( QTextParagraph *p ) { parag = p; } + QTextParagraph *paragraph() const { return parag; } + + QTextDocument *parent; + QTextParagraph *parag; + + virtual void pageBreak( int y, QTextFlow* flow ); +}; +#endif + +#if defined(Q_TEMPLATEDLL) +// MOC_SKIP_BEGIN +Q_TEMPLATE_EXTERN template class Q_EXPORT QMap<QString, QString>; +// MOC_SKIP_END +#endif + +#ifndef QT_NO_TEXTCUSTOMITEM +class Q_EXPORT QTextImage : public QTextCustomItem +{ +public: + QTextImage( QTextDocument *p, const QMap<QString, QString> &attr, const QString& context, + QMimeSourceFactory &factory ); + virtual ~QTextImage(); + + Placement placement() const { return place; } + void adjustToPainter( QPainter* ); + int minimumWidth() const { return width; } + + QString richText() const; + + void draw( QPainter* p, int x, int y, int cx, int cy, int cw, int ch, const QColorGroup& cg, bool selected ); + +private: + QRegion* reg; + QPixmap pm; + Placement place; + int tmpwidth, tmpheight; + QMap<QString, QString> attributes; + QString imgId; + +}; +#endif + +#ifndef QT_NO_TEXTCUSTOMITEM +class Q_EXPORT QTextHorizontalLine : public QTextCustomItem +{ +public: + QTextHorizontalLine( QTextDocument *p, const QMap<QString, QString> &attr, const QString& context, + QMimeSourceFactory &factory ); + virtual ~QTextHorizontalLine(); + + void adjustToPainter( QPainter* ); + void draw(QPainter* p, int x, int y, int cx, int cy, int cw, int ch, const QColorGroup& cg, bool selected ); + QString richText() const; + + bool ownLine() const { return TRUE; } + +private: + int tmpheight; + QColor color; + bool shade; + +}; +#endif + +#ifndef QT_NO_TEXTCUSTOMITEM +#if defined(Q_TEMPLATEDLL) +// MOC_SKIP_BEGIN +Q_TEMPLATE_EXTERN template class Q_EXPORT QPtrList<QTextCustomItem>; +// MOC_SKIP_END +#endif +#endif + +class Q_EXPORT QTextFlow +{ + friend class QTextDocument; +#ifndef QT_NO_TEXTCUSTOMITEM + friend class QTextTableCell; +#endif + +public: + QTextFlow(); + virtual ~QTextFlow(); + + virtual void setWidth( int width ); + int width() const; + + virtual void setPageSize( int ps ); + int pageSize() const { return pagesize; } + + virtual int adjustLMargin( int yp, int h, int margin, int space ); + virtual int adjustRMargin( int yp, int h, int margin, int space ); + +#ifndef QT_NO_TEXTCUSTOMITEM + virtual void registerFloatingItem( QTextCustomItem* item ); + virtual void unregisterFloatingItem( QTextCustomItem* item ); +#endif + virtual QRect boundingRect() const; + virtual void drawFloatingItems(QPainter* p, int cx, int cy, int cw, int ch, const QColorGroup& cg, bool selected ); + + virtual int adjustFlow( int y, int w, int h ); // adjusts y according to the defined pagesize. Returns the shift. + + virtual bool isEmpty(); + + void clear(); + +private: + int w; + int pagesize; + +#ifndef QT_NO_TEXTCUSTOMITEM + QPtrList<QTextCustomItem> leftItems; + QPtrList<QTextCustomItem> rightItems; +#endif +}; + +inline int QTextFlow::width() const { return w; } + +#ifndef QT_NO_TEXTCUSTOMITEM +class QTextTable; + +class Q_EXPORT QTextTableCell : public QLayoutItem +{ + friend class QTextTable; + +public: + QTextTableCell( QTextTable* table, + int row, int column, + const QMap<QString, QString> &attr, + const QStyleSheetItem* style, + const QTextFormat& fmt, const QString& context, + QMimeSourceFactory &factory, QStyleSheet *sheet, const QString& doc ); + virtual ~QTextTableCell(); + + QSize sizeHint() const ; + QSize minimumSize() const ; + QSize maximumSize() const ; + QSizePolicy::ExpandData expanding() const; + bool isEmpty() const; + void setGeometry( const QRect& ) ; + QRect geometry() const; + + bool hasHeightForWidth() const; + int heightForWidth( int ) const; + + void adjustToPainter( QPainter* ); + + int row() const { return row_; } + int column() const { return col_; } + int rowspan() const { return rowspan_; } + int colspan() const { return colspan_; } + int stretch() const { return stretch_; } + + QTextDocument* richText() const { return richtext; } + QTextTable* table() const { return parent; } + + void draw( QPainter* p, int x, int y, int cx, int cy, int cw, int ch, const QColorGroup& cg, bool selected ); + + QBrush *backGround() const { return background; } + virtual void invalidate(); + + int verticalAlignmentOffset() const; + int horizontalAlignmentOffset() const; + +private: + QRect geom; + QTextTable* parent; + QTextDocument* richtext; + int row_; + int col_; + int rowspan_; + int colspan_; + int stretch_; + int maxw; + int minw; + bool hasFixedWidth; + QBrush *background; + int cached_width; + int cached_sizehint; + QMap<QString, QString> attributes; + int align; +}; +#endif + +#if defined(Q_TEMPLATEDLL) +// MOC_SKIP_BEGIN +Q_TEMPLATE_EXTERN template class Q_EXPORT QPtrList<QTextTableCell>; +Q_TEMPLATE_EXTERN template class Q_EXPORT QMap<QTextCursor*, int>; +// MOC_SKIP_END +#endif + +#ifndef QT_NO_TEXTCUSTOMITEM +class Q_EXPORT QTextTable: public QTextCustomItem +{ + friend class QTextTableCell; + +public: + QTextTable( QTextDocument *p, const QMap<QString, QString> &attr ); + virtual ~QTextTable(); + + void adjustToPainter( QPainter *p ); + void pageBreak( int y, QTextFlow* flow ); + void draw( QPainter* p, int x, int y, int cx, int cy, int cw, int ch, + const QColorGroup& cg, bool selected ); + + bool noErase() const { return TRUE; } + bool ownLine() const { return TRUE; } + Placement placement() const { return place; } + bool isNested() const { return TRUE; } + void resize( int nwidth ); + virtual void invalidate(); + + virtual bool enter( QTextCursor *c, QTextDocument *&doc, QTextParagraph *¶g, int &idx, int &ox, int &oy, bool atEnd = FALSE ); + virtual bool enterAt( QTextCursor *c, QTextDocument *&doc, QTextParagraph *¶g, int &idx, int &ox, int &oy, const QPoint &pos ); + virtual bool next( QTextCursor *c, QTextDocument *&doc, QTextParagraph *¶g, int &idx, int &ox, int &oy ); + virtual bool prev( QTextCursor *c, QTextDocument *&doc, QTextParagraph *¶g, int &idx, int &ox, int &oy ); + virtual bool down( QTextCursor *c, QTextDocument *&doc, QTextParagraph *¶g, int &idx, int &ox, int &oy ); + virtual bool up( QTextCursor *c, QTextDocument *&doc, QTextParagraph *¶g, int &idx, int &ox, int &oy ); + + QString richText() const; + + int minimumWidth() const; + + QPtrList<QTextTableCell> tableCells() const { return cells; } + + bool isStretching() const { return stretch; } + +private: + void format( int w ); + void addCell( QTextTableCell* cell ); + +private: + QGridLayout* layout; + QPtrList<QTextTableCell> cells; + int cachewidth; + int fixwidth; + int cellpadding; + int cellspacing; + int border; + int outerborder; + int stretch; + int innerborder; + int us_cp, us_ib, us_b, us_ob, us_cs; + QMap<QString, QString> attributes; + QMap<QTextCursor*, int> currCell; + Placement place; + void adjustCells( int y , int shift ); + int pageBreakFor; +}; +#endif +// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + +#ifndef QT_NO_TEXTCUSTOMITEM +class QTextTableCell; +class QTextParagraph; +#endif + +struct Q_EXPORT QTextDocumentSelection +{ + QTextCursor startCursor, endCursor; + bool swapped; +}; + +#if defined(Q_TEMPLATEDLL) +// MOC_SKIP_BEGIN +Q_TEMPLATE_EXTERN template class Q_EXPORT QMap<int, QColor>; +Q_TEMPLATE_EXTERN template class Q_EXPORT QMap<int, bool>; +Q_TEMPLATE_EXTERN template class Q_EXPORT QMap<int, QTextDocumentSelection>; +Q_TEMPLATE_EXTERN template class Q_EXPORT QPtrList<QTextDocument>; +// MOC_SKIP_END +#endif + +class Q_EXPORT QTextDocument : public QObject +{ + Q_OBJECT + +#ifndef QT_NO_TEXTCUSTOMITEM + friend class QTextTableCell; +#endif + friend class QTextCursor; + friend class QTextEdit; + friend class QTextParagraph; + +public: + enum SelectionIds { + Standard = 0, + IMSelectionText = 31998, + IMCompositionText = 31999, // this must be higher! + Temp = 32000 // This selection must not be drawn, it's used e.g. by undo/redo to + // remove multiple lines with removeSelectedText() + }; + + QTextDocument( QTextDocument *p ); + QTextDocument( QTextDocument *d, QTextFormatCollection *f ); + virtual ~QTextDocument(); + + QTextDocument *parent() const { return par; } + QTextParagraph *parentParagraph() const { return parentPar; } + + void setText( const QString &text, const QString &context ); + QMap<QString, QString> attributes() const { return attribs; } + void setAttributes( const QMap<QString, QString> &attr ) { attribs = attr; } + + QString text() const; + QString text( int parag ) const; + QString originalText() const; + + int x() const; + int y() const; + int width() const; + int widthUsed() const; + int visibleWidth() const; + int height() const; + void setWidth( int w ); + int minimumWidth() const; + bool setMinimumWidth( int needed, int used = -1, QTextParagraph *parag = 0 ); + + void setY( int y ); + int leftMargin() const; + void setLeftMargin( int lm ); + int rightMargin() const; + void setRightMargin( int rm ); + + QTextParagraph *firstParagraph() const; + QTextParagraph *lastParagraph() const; + void setFirstParagraph( QTextParagraph *p ); + void setLastParagraph( QTextParagraph *p ); + + void invalidate(); + + void setPreProcessor( QTextPreProcessor *sh ); + QTextPreProcessor *preProcessor() const; + + void setFormatter( QTextFormatter *f ); + QTextFormatter *formatter() const; + + void setIndent( QTextIndent *i ); + QTextIndent *indent() const; + + QColor selectionColor( int id ) const; + bool invertSelectionText( int id ) const; + void setSelectionColor( int id, const QColor &c ); + void setInvertSelectionText( int id, bool b ); + bool hasSelection( int id, bool visible = FALSE ) const; + void setSelectionStart( int id, const QTextCursor &cursor ); + bool setSelectionEnd( int id, const QTextCursor &cursor ); + void selectAll( int id ); + bool removeSelection( int id ); + void selectionStart( int id, int ¶gId, int &index ); + QTextCursor selectionStartCursor( int id ); + QTextCursor selectionEndCursor( int id ); + void selectionEnd( int id, int ¶gId, int &index ); + void setFormat( int id, QTextFormat *f, int flags ); + int numSelections() const { return nSelections; } + void addSelection( int id ); + + QString selectedText( int id, bool asRichText = FALSE ) const; + void removeSelectedText( int id, QTextCursor *cursor ); + void indentSelection( int id ); + + QTextParagraph *paragAt( int i ) const; + + void addCommand( QTextCommand *cmd ); + QTextCursor *undo( QTextCursor *c = 0 ); + QTextCursor *redo( QTextCursor *c = 0 ); + QTextCommandHistory *commands() const { return commandHistory; } + + QTextFormatCollection *formatCollection() const; + + bool find( QTextCursor &cursor, const QString &expr, bool cs, bool wo, bool forward); + + void setTextFormat( Qt::TextFormat f ); + Qt::TextFormat textFormat() const; + + bool inSelection( int selId, const QPoint &pos ) const; + + QStyleSheet *styleSheet() const { return sheet_; } +#ifndef QT_NO_MIME + QMimeSourceFactory *mimeSourceFactory() const { return factory_; } +#endif + QString context() const { return contxt; } + + void setStyleSheet( QStyleSheet *s ); + void setDefaultFormat( const QFont &font, const QColor &color ); +#ifndef QT_NO_MIME + void setMimeSourceFactory( QMimeSourceFactory *f ) { if ( f ) factory_ = f; } +#endif + void setContext( const QString &c ) { if ( !c.isEmpty() ) contxt = c; } + + void setUnderlineLinks( bool b ); + bool underlineLinks() const { return underlLinks; } + + void setPaper( QBrush *brush ) { if ( backBrush ) delete backBrush; backBrush = brush; } + QBrush *paper() const { return backBrush; } + + void doLayout( QPainter *p, int w ); + void draw( QPainter *p, const QRect& rect, const QColorGroup &cg, const QBrush *paper = 0 ); + void drawParagraph( QPainter *p, QTextParagraph *parag, int cx, int cy, int cw, int ch, + QPixmap *&doubleBuffer, const QColorGroup &cg, + bool drawCursor, QTextCursor *cursor, bool resetChanged = TRUE ); + QTextParagraph *draw( QPainter *p, int cx, int cy, int cw, int ch, const QColorGroup &cg, + bool onlyChanged = FALSE, bool drawCursor = FALSE, QTextCursor *cursor = 0, + bool resetChanged = TRUE ); + +#ifndef QT_NO_TEXTCUSTOMITEM + void registerCustomItem( QTextCustomItem *i, QTextParagraph *p ); + void unregisterCustomItem( QTextCustomItem *i, QTextParagraph *p ); +#endif + + void setFlow( QTextFlow *f ); + void takeFlow(); + QTextFlow *flow() const { return flow_; } + bool isPageBreakEnabled() const { return pages; } + void setPageBreakEnabled( bool b ) { pages = b; } + + void setUseFormatCollection( bool b ) { useFC = b; } + bool useFormatCollection() const { return useFC; } + +#ifndef QT_NO_TEXTCUSTOMITEM + QTextTableCell *tableCell() const { return tc; } + void setTableCell( QTextTableCell *c ) { tc = c; } +#endif + + void setPlainText( const QString &text ); + void setRichText( const QString &text, const QString &context ); + QString richText() const; + QString plainText() const; + + bool focusNextPrevChild( bool next ); + + int alignment() const; + void setAlignment( int a ); + + int *tabArray() const; + int tabStopWidth() const; + void setTabArray( int *a ); + void setTabStops( int tw ); + + void setUndoDepth( int d ) { commandHistory->setUndoDepth( d ); } + int undoDepth() const { return commandHistory->undoDepth(); } + + int length() const; + void clear( bool createEmptyParag = FALSE ); + + virtual QTextParagraph *createParagraph( QTextDocument *d, QTextParagraph *pr = 0, QTextParagraph *nx = 0, bool updateIds = TRUE ); + void insertChild( QObject *o ) { QObject::insertChild( o ); } + void removeChild( QObject *o ) { QObject::removeChild( o ); } + void insertChild( QTextDocument *d ) { childList.append( d ); } + void removeChild( QTextDocument *d ) { childList.removeRef( d ); } + QPtrList<QTextDocument> children() const { return childList; } + + bool hasFocusParagraph() const; + QString focusHref() const; + QString focusName() const; + + void invalidateOriginalText() { oTextValid = FALSE; oText = ""; } + +signals: + void minimumWidthChanged( int ); + +private: + void init(); + QPixmap *bufferPixmap( const QSize &s ); + // HTML parser + bool hasPrefix(const QChar* doc, int length, int pos, QChar c); + bool hasPrefix(const QChar* doc, int length, int pos, const QString& s); +#ifndef QT_NO_TEXTCUSTOMITEM + QTextCustomItem* parseTable( const QMap<QString, QString> &attr, const QTextFormat &fmt, + const QChar* doc, int length, int& pos, QTextParagraph *curpar ); +#endif + bool eatSpace(const QChar* doc, int length, int& pos, bool includeNbsp = FALSE ); + bool eat(const QChar* doc, int length, int& pos, QChar c); + QString parseOpenTag(const QChar* doc, int length, int& pos, QMap<QString, QString> &attr, bool& emptyTag); + QString parseCloseTag( const QChar* doc, int length, int& pos ); + QChar parseHTMLSpecialChar(const QChar* doc, int length, int& pos); + QString parseWord(const QChar* doc, int length, int& pos, bool lower = TRUE); + QChar parseChar(const QChar* doc, int length, int& pos, QStyleSheetItem::WhiteSpaceMode wsm ); + void setRichTextInternal( const QString &text, QTextCursor* cursor = 0 ); + void setRichTextMarginsInternal( QPtrList< QPtrVector<QStyleSheetItem> >& styles, QTextParagraph* stylesPar ); + +private: + struct Q_EXPORT Focus { + QTextParagraph *parag; + int start, len; + QString href; + QString name; + }; + + int cx, cy, cw, vw; + QTextParagraph *fParag, *lParag; + QTextPreProcessor *pProcessor; + QMap<int, QColor> selectionColors; + QMap<int, QTextDocumentSelection> selections; + QMap<int, bool> selectionText; + QTextCommandHistory *commandHistory; + QTextFormatter *pFormatter; + QTextIndent *indenter; + QTextFormatCollection *fCollection; + Qt::TextFormat txtFormat; + uint preferRichText : 1; + uint pages : 1; + uint useFC : 1; + uint withoutDoubleBuffer : 1; + uint underlLinks : 1; + uint nextDoubleBuffered : 1; + uint oTextValid : 1; + uint mightHaveCustomItems : 1; + int align; + int nSelections; + QTextFlow *flow_; + QTextDocument *par; + QTextParagraph *parentPar; +#ifndef QT_NO_TEXTCUSTOMITEM + QTextTableCell *tc; +#endif + QBrush *backBrush; + QPixmap *buf_pixmap; + Focus focusIndicator; + int minw; + int wused; + int leftmargin; + int rightmargin; + QTextParagraph *minwParag, *curParag; + QStyleSheet* sheet_; +#ifndef QT_NO_MIME + QMimeSourceFactory* factory_; +#endif + QString contxt; + QMap<QString, QString> attribs; + int *tArray; + int tStopWidth; + int uDepth; + QString oText; + QPtrList<QTextDocument> childList; + QColor linkColor; + double scaleFontsFactor; + + short list_tm,list_bm, list_lm, li_tm, li_bm, par_tm, par_bm; +#if defined(Q_DISABLE_COPY) // Disabled copy constructor and operator= + QTextDocument( const QTextDocument & ); + QTextDocument &operator=( const QTextDocument & ); +#endif +}; + +// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + + +class Q_EXPORT QTextDeleteCommand : public QTextCommand +{ +public: + QTextDeleteCommand( QTextDocument *d, int i, int idx, const QMemArray<QTextStringChar> &str, + const QByteArray& oldStyle ); + QTextDeleteCommand( QTextParagraph *p, int idx, const QMemArray<QTextStringChar> &str ); + virtual ~QTextDeleteCommand(); + + Commands type() const { return Delete; } + QTextCursor *execute( QTextCursor *c ); + QTextCursor *unexecute( QTextCursor *c ); + +protected: + int id, index; + QTextParagraph *parag; + QMemArray<QTextStringChar> text; + QByteArray styleInformation; + +}; + +class Q_EXPORT QTextInsertCommand : public QTextDeleteCommand +{ +public: + QTextInsertCommand( QTextDocument *d, int i, int idx, const QMemArray<QTextStringChar> &str, + const QByteArray& oldStyleInfo ) + : QTextDeleteCommand( d, i, idx, str, oldStyleInfo ) {} + QTextInsertCommand( QTextParagraph *p, int idx, const QMemArray<QTextStringChar> &str ) + : QTextDeleteCommand( p, idx, str ) {} + virtual ~QTextInsertCommand() {} + + Commands type() const { return Insert; } + QTextCursor *execute( QTextCursor *c ) { return QTextDeleteCommand::unexecute( c ); } + QTextCursor *unexecute( QTextCursor *c ) { return QTextDeleteCommand::execute( c ); } + +}; + +class Q_EXPORT QTextFormatCommand : public QTextCommand +{ +public: + QTextFormatCommand( QTextDocument *d, int sid, int sidx, int eid, int eidx, const QMemArray<QTextStringChar> &old, QTextFormat *f, int fl ); + virtual ~QTextFormatCommand(); + + Commands type() const { return Format; } + QTextCursor *execute( QTextCursor *c ); + QTextCursor *unexecute( QTextCursor *c ); + +protected: + int startId, startIndex, endId, endIndex; + QTextFormat *format; + QMemArray<QTextStringChar> oldFormats; + int flags; + +}; + +class Q_EXPORT QTextStyleCommand : public QTextCommand +{ +public: + QTextStyleCommand( QTextDocument *d, int fParag, int lParag, const QByteArray& beforeChange ); + virtual ~QTextStyleCommand() {} + + Commands type() const { return Style; } + QTextCursor *execute( QTextCursor *c ); + QTextCursor *unexecute( QTextCursor *c ); + + static QByteArray readStyleInformation( QTextDocument* d, int fParag, int lParag ); + static void writeStyleInformation( QTextDocument* d, int fParag, const QByteArray& style ); + +private: + int firstParag, lastParag; + QByteArray before; + QByteArray after; +}; + +// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + +struct Q_EXPORT QTextParagraphSelection +{ + int start, end; +}; + +struct Q_EXPORT QTextLineStart +{ + QTextLineStart() : y( 0 ), baseLine( 0 ), h( 0 ) +#ifndef QT_NO_COMPLEXTEXT + , bidicontext( 0 ) +#endif + { } + QTextLineStart( ushort y_, ushort bl, ushort h_ ) : y( y_ ), baseLine( bl ), h( h_ ), + w( 0 ) +#ifndef QT_NO_COMPLEXTEXT + , bidicontext( 0 ) +#endif + { } +#ifndef QT_NO_COMPLEXTEXT + QTextLineStart( QBidiContext *c, QBidiStatus s ) : y(0), baseLine(0), h(0), + status( s ), bidicontext( c ) { if ( bidicontext ) bidicontext->ref(); } +#endif + + virtual ~QTextLineStart() + { +#ifndef QT_NO_COMPLEXTEXT + if ( bidicontext && bidicontext->deref() ) + delete bidicontext; +#endif + } + +#ifndef QT_NO_COMPLEXTEXT + void setContext( QBidiContext *c ) { + if ( c == bidicontext ) + return; + if ( bidicontext && bidicontext->deref() ) + delete bidicontext; + bidicontext = c; + if ( bidicontext ) + bidicontext->ref(); + } + QBidiContext *context() const { return bidicontext; } +#endif + +public: + ushort y, baseLine, h; +#ifndef QT_NO_COMPLEXTEXT + QBidiStatus status; +#endif + int w; + +private: +#ifndef QT_NO_COMPLEXTEXT + QBidiContext *bidicontext; +#endif +}; + +#if defined(Q_TEMPLATEDLL) +// MOC_SKIP_BEGIN +Q_TEMPLATE_EXTERN template class Q_EXPORT QMap<int, QTextParagraphSelection>; +Q_TEMPLATE_EXTERN template class Q_EXPORT QMap<int, QTextLineStart*>; +// MOC_SKIP_END +#endif + +class Q_EXPORT QTextParagraphData +{ +public: + QTextParagraphData() {} + virtual ~QTextParagraphData(); + virtual void join( QTextParagraphData * ); +}; + +class Q_EXPORT QTextParagraphPseudoDocument +{ +public: + QTextParagraphPseudoDocument(); + ~QTextParagraphPseudoDocument(); + QRect docRect; + QTextFormatter *pFormatter; + QTextCommandHistory *commandHistory; + int minw; + int wused; +}; + +//nase +class Q_EXPORT QTextParagraph +{ + friend class QTextDocument; + friend class QTextCursor; + +public: + QTextParagraph( QTextDocument *d, QTextParagraph *pr = 0, QTextParagraph *nx = 0, bool updateIds = TRUE ); + virtual ~QTextParagraph(); + + QTextString *string() const; + QTextStringChar *at( int i ) const; // maybe remove later + int leftGap() const; + int length() const; // maybe remove later + + void setListStyle( QStyleSheetItem::ListStyle ls ) { lstyle = ls; changed = TRUE; } + QStyleSheetItem::ListStyle listStyle() const { return lstyle; } + void setListItem( bool li ); + bool isListItem() const { return litem; } + void setListValue( int v ) { list_val = v; } + int listValue() const { return list_val > 0 ? list_val : -1; } + + void setListDepth( int depth ); + int listDepth() const { return ldepth; } + +// void setFormat( QTextFormat *fm ); +// QTextFormat *paragFormat() const; + + QTextDocument *document() const; + QTextParagraphPseudoDocument *pseudoDocument() const; + + QRect rect() const; + void setHeight( int h ) { r.setHeight( h ); } + void show(); + void hide(); + bool isVisible() const { return visible; } + + QTextParagraph *prev() const; + QTextParagraph *next() const; + void setPrev( QTextParagraph *s ); + void setNext( QTextParagraph *s ); + + void insert( int index, const QString &s ); + void insert( int index, const QChar *unicode, int len ); + void append( const QString &s, bool reallyAtEnd = FALSE ); + void truncate( int index ); + void remove( int index, int len ); + void join( QTextParagraph *s ); + + void invalidate( int chr ); + + void move( int &dy ); + void format( int start = -1, bool doMove = TRUE ); + + bool isValid() const; + bool hasChanged() const; + void setChanged( bool b, bool recursive = FALSE ); + + int lineHeightOfChar( int i, int *bl = 0, int *y = 0 ) const; + QTextStringChar *lineStartOfChar( int i, int *index = 0, int *line = 0 ) const; + int lines() const; + QTextStringChar *lineStartOfLine( int line, int *index = 0 ) const; + int lineY( int l ) const; + int lineBaseLine( int l ) const; + int lineHeight( int l ) const; + void lineInfo( int l, int &y, int &h, int &bl ) const; + + void setSelection( int id, int start, int end ); + void removeSelection( int id ); + int selectionStart( int id ) const; + int selectionEnd( int id ) const; + bool hasSelection( int id ) const; + bool hasAnySelection() const; + bool fullSelected( int id ) const; + + void setEndState( int s ); + int endState() const; + + void setParagId( int i ); + int paragId() const; + + bool firstPreProcess() const; + void setFirstPreProcess( bool b ); + + void indent( int *oldIndent = 0, int *newIndent = 0 ); + + void setExtraData( QTextParagraphData *data ); + QTextParagraphData *extraData() const; + + QMap<int, QTextLineStart*> &lineStartList(); + + void setFormat( int index, int len, QTextFormat *f, bool useCollection = TRUE, int flags = -1 ); + + void setAlignment( int a ); + int alignment() const; + + virtual void paint( QPainter &painter, const QColorGroup &cg, QTextCursor *cursor = 0, bool drawSelections = FALSE, + int clipx = -1, int clipy = -1, int clipw = -1, int cliph = -1 ); + + virtual int topMargin() const; + virtual int bottomMargin() const; + virtual int leftMargin() const; + virtual int firstLineMargin() const; + virtual int rightMargin() const; + virtual int lineSpacing() const; + +#ifndef QT_NO_TEXTCUSTOMITEM + void registerFloatingItem( QTextCustomItem *i ); + void unregisterFloatingItem( QTextCustomItem *i ); +#endif + + void setFullWidth( bool b ) { fullWidth = b; } + bool isFullWidth() const { return fullWidth; } + +#ifndef QT_NO_TEXTCUSTOMITEM + QTextTableCell *tableCell() const; +#endif + + QBrush *background() const; + + int documentWidth() const; + int documentVisibleWidth() const; + int documentX() const; + int documentY() const; + QTextFormatCollection *formatCollection() const; + QTextFormatter *formatter() const; + + virtual int nextTab( int i, int x ); + int *tabArray() const; + void setTabArray( int *a ); + void setTabStops( int tw ); + + void adjustToPainter( QPainter *p ); + + void setNewLinesAllowed( bool b ); + bool isNewLinesAllowed() const; + + QString richText() const; + + void addCommand( QTextCommand *cmd ); + QTextCursor *undo( QTextCursor *c = 0 ); + QTextCursor *redo( QTextCursor *c = 0 ); + QTextCommandHistory *commands() const; + virtual void copyParagData( QTextParagraph *parag ); + + void setBreakable( bool b ) { breakable = b; } + bool isBreakable() const { return breakable; } + + void setBackgroundColor( const QColor &c ); + QColor *backgroundColor() const { return bgcol; } + void clearBackgroundColor(); + + void setMovedDown( bool b ) { movedDown = b; } + bool wasMovedDown() const { return movedDown; } + + void setDirection( QChar::Direction d ); + QChar::Direction direction() const; + void setPaintDevice( QPaintDevice *pd ) { paintdevice = pd; } + + void readStyleInformation( QDataStream& stream ); + void writeStyleInformation( QDataStream& stream ) const; + +protected: + virtual void setColorForSelection( QColor &c, QPainter &p, const QColorGroup& cg, int selection ); + virtual void drawLabel( QPainter* p, int x, int y, int w, int h, int base, const QColorGroup& cg ); + virtual void drawString( QPainter &painter, const QString &str, int start, int len, int xstart, + int y, int baseLine, int w, int h, int selection, + QTextStringChar *formatChar, const QColorGroup& cg, + bool rightToLeft ); + +private: + QMap<int, QTextParagraphSelection> &selections() const; +#ifndef QT_NO_TEXTCUSTOMITEM + QPtrList<QTextCustomItem> &floatingItems() const; +#endif + QBrush backgroundBrush( const QColorGroup&cg ) { if ( bgcol ) return *bgcol; return cg.brush( QColorGroup::Base ); } + void invalidateStyleCache(); + + QMap<int, QTextLineStart*> lineStarts; + int invalid; + QRect r; + QTextParagraph *p, *n; + void *docOrPseudo; + uint changed : 1; + uint firstFormat : 1; + uint firstPProcess : 1; + uint needPreProcess : 1; + uint fullWidth : 1; + uint lastInFrame : 1; + uint visible : 1; + uint breakable : 1; + uint movedDown : 1; + uint mightHaveCustomItems : 1; + uint hasdoc : 1; + uint litem : 1; // whether the paragraph is a list item + uint rtext : 1; // whether the paragraph needs rich text margin + int align : 4; + int state, id; + QTextString *str; + QMap<int, QTextParagraphSelection> *mSelections; +#ifndef QT_NO_TEXTCUSTOMITEM + QPtrList<QTextCustomItem> *mFloatingItems; +#endif + QStyleSheetItem::ListStyle lstyle; + short utm, ubm, ulm, urm, uflm, ulinespacing; + int *tArray; + short tabStopWidth; + QTextParagraphData *eData; + short list_val; + QColor *bgcol; + ushort ldepth; + QPaintDevice *paintdevice; +}; + +// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + +class Q_EXPORT QTextFormatter +{ +public: + QTextFormatter(); + virtual ~QTextFormatter(); + + virtual int format( QTextDocument *doc, QTextParagraph *parag, int start, const QMap<int, QTextLineStart*> &oldLineStarts ) = 0; + virtual int formatVertically( QTextDocument* doc, QTextParagraph* parag ); + + bool isWrapEnabled( QTextParagraph *p ) const { if ( !wrapEnabled ) return FALSE; if ( p && !p->isBreakable() ) return FALSE; return TRUE;} + int wrapAtColumn() const { return wrapColumn;} + virtual void setWrapEnabled( bool b ); + virtual void setWrapAtColumn( int c ); + virtual void setAllowBreakInWords( bool b ) { biw = b; } + bool allowBreakInWords() const { return biw; } + + int minimumWidth() const { return thisminw; } + int widthUsed() const { return thiswused; } + + static bool isBreakable( QTextString *string, int pos ); + +protected: + virtual QTextLineStart *formatLine( QTextParagraph *parag, QTextString *string, QTextLineStart *line, QTextStringChar *start, + QTextStringChar *last, int align = Qt::AlignAuto, int space = 0 ); +#ifndef QT_NO_COMPLEXTEXT + virtual QTextLineStart *bidiReorderLine( QTextParagraph *parag, QTextString *string, QTextLineStart *line, QTextStringChar *start, + QTextStringChar *last, int align, int space ); +#endif + void insertLineStart( QTextParagraph *parag, int index, QTextLineStart *ls ); + + int thisminw; + int thiswused; + +private: + bool wrapEnabled; + int wrapColumn; + bool biw; + +#ifdef HAVE_THAI_BREAKS + static QCString *thaiCache; + static QTextString *cachedString; + static ThBreakIterator *thaiIt; +#endif +}; + +// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + +class Q_EXPORT QTextFormatterBreakInWords : public QTextFormatter +{ +public: + QTextFormatterBreakInWords(); + virtual ~QTextFormatterBreakInWords() {} + + int format( QTextDocument *doc, QTextParagraph *parag, int start, const QMap<int, QTextLineStart*> &oldLineStarts ); + +}; + +// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + +class Q_EXPORT QTextFormatterBreakWords : public QTextFormatter +{ +public: + QTextFormatterBreakWords(); + virtual ~QTextFormatterBreakWords() {} + + int format( QTextDocument *doc, QTextParagraph *parag, int start, const QMap<int, QTextLineStart*> &oldLineStarts ); + +}; + +// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + +class Q_EXPORT QTextIndent +{ +public: + QTextIndent(); + virtual ~QTextIndent() {} + + virtual void indent( QTextDocument *doc, QTextParagraph *parag, int *oldIndent = 0, int *newIndent = 0 ) = 0; + +}; + +// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + +class Q_EXPORT QTextPreProcessor +{ +public: + enum Ids { + Standard = 0 + }; + + QTextPreProcessor(); + virtual ~QTextPreProcessor() {} + + virtual void process( QTextDocument *doc, QTextParagraph *, int, bool = TRUE ) = 0; + virtual QTextFormat *format( int id ) = 0; + +}; + +// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + +class Q_EXPORT QTextFormat +{ + friend class QTextFormatCollection; + friend class QTextDocument; + +public: + enum Flags { + NoFlags, + Bold = 1, + Italic = 2, + Underline = 4, + Family = 8, + Size = 16, + Color = 32, + Misspelled = 64, + VAlign = 128, + StrikeOut= 256, + Font = Bold | Italic | Underline | Family | Size | StrikeOut, + Format = Font | Color | Misspelled | VAlign + }; + + enum VerticalAlignment { AlignNormal, AlignSuperScript, AlignSubScript }; + + QTextFormat(); + virtual ~QTextFormat(); + + QTextFormat( const QStyleSheetItem *s ); + QTextFormat( const QFont &f, const QColor &c, QTextFormatCollection *parent = 0 ); + QTextFormat( const QTextFormat &fm ); + QTextFormat makeTextFormat( const QStyleSheetItem *style, const QMap<QString,QString>& attr, double scaleFontsFactor ) const; + QTextFormat& operator=( const QTextFormat &fm ); + QColor color() const; + QFont font() const; + bool isMisspelled() const; + VerticalAlignment vAlign() const; + int minLeftBearing() const; + int minRightBearing() const; + int width( const QChar &c ) const; + int width( const QString &str, int pos ) const; + int height() const; + int ascent() const; + int descent() const; + int leading() const; + bool useLinkColor() const; + + void setBold( bool b ); + void setItalic( bool b ); + void setUnderline( bool b ); + void setStrikeOut( bool b ); + void setFamily( const QString &f ); + void setPointSize( int s ); + void setFont( const QFont &f ); + void setColor( const QColor &c ); + void setMisspelled( bool b ); + void setVAlign( VerticalAlignment a ); + + bool operator==( const QTextFormat &f ) const; + QTextFormatCollection *parent() const; + const QString &key() const; + + static QString getKey( const QFont &f, const QColor &c, bool misspelled, VerticalAlignment vAlign ); + + void addRef(); + void removeRef(); + + QString makeFormatChangeTags( QTextFormat* defaultFormat, QTextFormat *f, const QString& oldAnchorHref, const QString& anchorHref ) const; + QString makeFormatEndTags( QTextFormat* defaultFormat, const QString& anchorHref ) const; + + static void setPainter( QPainter *p ); + static QPainter* painter(); + + bool fontSizesInPixels() { return usePixelSizes; } + +protected: + virtual void generateKey(); + +private: + void update(); + static void applyFont( const QFont &f ); + +private: + QFont fn; + QColor col; + QFontMetrics fm; + uint missp : 1; + uint linkColor : 1; + uint usePixelSizes : 1; + int leftBearing, rightBearing; + VerticalAlignment ha; + uchar widths[ 256 ]; + int hei, asc, dsc; + QTextFormatCollection *collection; + int ref; + QString k; + int logicalFontSize; + int stdSize; + static QPainter *pntr; + static QFontMetrics *pntr_fm; + static int pntr_asc; + static int pntr_hei; + static int pntr_ldg; + static int pntr_dsc; + +}; + +// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + +#if defined(Q_TEMPLATEDLL) +// MOC_SKIP_BEGIN +Q_TEMPLATE_EXTERN template class Q_EXPORT QDict<QTextFormat>; +// MOC_SKIP_END +#endif + +class Q_EXPORT QTextFormatCollection +{ + friend class QTextDocument; + friend class QTextFormat; + +public: + QTextFormatCollection(); + virtual ~QTextFormatCollection(); + + void setDefaultFormat( QTextFormat *f ); + QTextFormat *defaultFormat() const; + virtual QTextFormat *format( QTextFormat *f ); + virtual QTextFormat *format( QTextFormat *of, QTextFormat *nf, int flags ); + virtual QTextFormat *format( const QFont &f, const QColor &c ); + virtual void remove( QTextFormat *f ); + virtual QTextFormat *createFormat( const QTextFormat &f ) { return new QTextFormat( f ); } + virtual QTextFormat *createFormat( const QFont &f, const QColor &c ) { return new QTextFormat( f, c, this ); } + + void updateDefaultFormat( const QFont &font, const QColor &c, QStyleSheet *sheet ); + QDict<QTextFormat> dict() const { return cKey; } + + QPaintDevice *paintDevice() const { return paintdevice; } + void setPaintDevice( QPaintDevice * ); + +private: + void updateKeys(); + +private: + QTextFormat *defFormat, *lastFormat, *cachedFormat; + QDict<QTextFormat> cKey; + QTextFormat *cres; + QFont cfont; + QColor ccol; + QString kof, knf; + int cflags; + + QPaintDevice *paintdevice; +}; + +// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + +inline int QTextString::length() const +{ + return data.size(); +} + +inline int QTextParagraph::length() const +{ + return str->length(); +} + +inline QRect QTextParagraph::rect() const +{ + return r; +} + +inline QTextParagraph *QTextCursor::paragraph() const +{ + return para; +} + +inline int QTextCursor::index() const +{ + return idx; +} + + +// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + +inline int QTextDocument::x() const +{ + return cx; +} + +inline int QTextDocument::y() const +{ + return cy; +} + +inline int QTextDocument::width() const +{ + return QMAX( cw, flow_->width() ); +} + +inline int QTextDocument::visibleWidth() const +{ + return vw; +} + +inline QTextParagraph *QTextDocument::firstParagraph() const +{ + return fParag; +} + +inline QTextParagraph *QTextDocument::lastParagraph() const +{ + return lParag; +} + +inline void QTextDocument::setFirstParagraph( QTextParagraph *p ) +{ + fParag = p; +} + +inline void QTextDocument::setLastParagraph( QTextParagraph *p ) +{ + lParag = p; +} + +inline void QTextDocument::setWidth( int w ) +{ + cw = QMAX( w, minw ); + flow_->setWidth( cw ); + vw = w; +} + +inline int QTextDocument::minimumWidth() const +{ + return minw; +} + +inline void QTextDocument::setY( int y ) +{ + cy = y; +} + +inline int QTextDocument::leftMargin() const +{ + return leftmargin; +} + +inline void QTextDocument::setLeftMargin( int lm ) +{ + leftmargin = lm; +} + +inline int QTextDocument::rightMargin() const +{ + return rightmargin; +} + +inline void QTextDocument::setRightMargin( int rm ) +{ + rightmargin = rm; +} + +inline QTextPreProcessor *QTextDocument::preProcessor() const +{ + return pProcessor; +} + +inline void QTextDocument::setPreProcessor( QTextPreProcessor * sh ) +{ + pProcessor = sh; +} + +inline void QTextDocument::setFormatter( QTextFormatter *f ) +{ + delete pFormatter; + pFormatter = f; +} + +inline QTextFormatter *QTextDocument::formatter() const +{ + return pFormatter; +} + +inline void QTextDocument::setIndent( QTextIndent *i ) +{ + indenter = i; +} + +inline QTextIndent *QTextDocument::indent() const +{ + return indenter; +} + +inline QColor QTextDocument::selectionColor( int id ) const +{ + return selectionColors[ id ]; +} + +inline bool QTextDocument::invertSelectionText( int id ) const +{ + return selectionText[ id ]; +} + +inline void QTextDocument::setSelectionColor( int id, const QColor &c ) +{ + selectionColors[ id ] = c; +} + +inline void QTextDocument::setInvertSelectionText( int id, bool b ) +{ + selectionText[ id ] = b; +} + +inline QTextFormatCollection *QTextDocument::formatCollection() const +{ + return fCollection; +} + +inline int QTextDocument::alignment() const +{ + return align; +} + +inline void QTextDocument::setAlignment( int a ) +{ + align = a; +} + +inline int *QTextDocument::tabArray() const +{ + return tArray; +} + +inline int QTextDocument::tabStopWidth() const +{ + return tStopWidth; +} + +inline void QTextDocument::setTabArray( int *a ) +{ + tArray = a; +} + +inline void QTextDocument::setTabStops( int tw ) +{ + tStopWidth = tw; +} + +inline QString QTextDocument::originalText() const +{ + if ( oTextValid ) + return oText; + return text(); +} + +inline void QTextDocument::setFlow( QTextFlow *f ) +{ + if ( flow_ ) + delete flow_; + flow_ = f; +} + +inline void QTextDocument::takeFlow() +{ + flow_ = 0; +} + +// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + +inline QColor QTextFormat::color() const +{ + return col; +} + +inline QFont QTextFormat::font() const +{ + return fn; +} + +inline bool QTextFormat::isMisspelled() const +{ + return missp; +} + +inline QTextFormat::VerticalAlignment QTextFormat::vAlign() const +{ + return ha; +} + +inline bool QTextFormat::operator==( const QTextFormat &f ) const +{ + return k == f.k; +} + +inline QTextFormatCollection *QTextFormat::parent() const +{ + return collection; +} + +inline void QTextFormat::addRef() +{ + ref++; +} + +inline void QTextFormat::removeRef() +{ + ref--; + if ( !collection ) + return; + if ( this == collection->defFormat ) + return; + if ( ref == 0 ) + collection->remove( this ); +} + +inline const QString &QTextFormat::key() const +{ + return k; +} + +inline bool QTextFormat::useLinkColor() const +{ + return linkColor; +} + + +// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + +inline QTextStringChar &QTextString::at( int i ) const +{ + return data[ i ]; +} + +// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + +inline QTextStringChar *QTextParagraph::at( int i ) const +{ + return &str->at( i ); +} + +inline bool QTextParagraph::isValid() const +{ + return invalid == -1; +} + +inline bool QTextParagraph::hasChanged() const +{ + return changed; +} + +inline void QTextParagraph::setBackgroundColor( const QColor & c ) +{ + delete bgcol; + bgcol = new QColor( c ); + setChanged( TRUE ); +} + +inline void QTextParagraph::clearBackgroundColor() +{ + delete bgcol; bgcol = 0; setChanged( TRUE ); +} + +inline void QTextParagraph::append( const QString &s, bool reallyAtEnd ) +{ + if ( reallyAtEnd ) + insert( str->length(), s ); + else + insert( QMAX( str->length() - 1, 0 ), s ); +} + +inline QTextParagraph *QTextParagraph::prev() const +{ + return p; +} + +inline QTextParagraph *QTextParagraph::next() const +{ + return n; +} + +inline bool QTextParagraph::hasAnySelection() const +{ + return mSelections ? !selections().isEmpty() : FALSE; +} + +inline void QTextParagraph::setEndState( int s ) +{ + if ( s == state ) + return; + state = s; +} + +inline int QTextParagraph::endState() const +{ + return state; +} + +inline void QTextParagraph::setParagId( int i ) +{ + id = i; +} + +inline int QTextParagraph::paragId() const +{ + if ( id == -1 ) + qWarning( "invalid parag id!!!!!!!! (%p)", (void*)this ); + return id; +} + +inline bool QTextParagraph::firstPreProcess() const +{ + return firstPProcess; +} + +inline void QTextParagraph::setFirstPreProcess( bool b ) +{ + firstPProcess = b; +} + +inline QMap<int, QTextLineStart*> &QTextParagraph::lineStartList() +{ + return lineStarts; +} + +inline QTextString *QTextParagraph::string() const +{ + return str; +} + +inline QTextDocument *QTextParagraph::document() const +{ + if ( hasdoc ) + return (QTextDocument*) docOrPseudo; + return 0; +} + +inline QTextParagraphPseudoDocument *QTextParagraph::pseudoDocument() const +{ + if ( hasdoc ) + return 0; + return (QTextParagraphPseudoDocument*) docOrPseudo; +} + + +#ifndef QT_NO_TEXTCUSTOMITEM +inline QTextTableCell *QTextParagraph::tableCell() const +{ + return hasdoc ? document()->tableCell () : 0; +} +#endif + +inline QTextCommandHistory *QTextParagraph::commands() const +{ + return hasdoc ? document()->commands() : pseudoDocument()->commandHistory; +} + + +inline int QTextParagraph::alignment() const +{ + return align; +} + +#ifndef QT_NO_TEXTCUSTOMITEM +inline void QTextParagraph::registerFloatingItem( QTextCustomItem *i ) +{ + floatingItems().append( i ); +} + +inline void QTextParagraph::unregisterFloatingItem( QTextCustomItem *i ) +{ + floatingItems().removeRef( i ); +} +#endif + +inline QBrush *QTextParagraph::background() const +{ +#ifndef QT_NO_TEXTCUSTOMITEM + return tableCell() ? tableCell()->backGround() : 0; +#else + return 0; +#endif +} + +inline int QTextParagraph::documentWidth() const +{ + return hasdoc ? document()->width() : pseudoDocument()->docRect.width(); +} + +inline int QTextParagraph::documentVisibleWidth() const +{ + return hasdoc ? document()->visibleWidth() : pseudoDocument()->docRect.width(); +} + +inline int QTextParagraph::documentX() const +{ + return hasdoc ? document()->x() : pseudoDocument()->docRect.x(); +} + +inline int QTextParagraph::documentY() const +{ + return hasdoc ? document()->y() : pseudoDocument()->docRect.y(); +} + +inline void QTextParagraph::setExtraData( QTextParagraphData *data ) +{ + eData = data; +} + +inline QTextParagraphData *QTextParagraph::extraData() const +{ + return eData; +} + +// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + +inline void QTextFormatCollection::setDefaultFormat( QTextFormat *f ) +{ + defFormat = f; +} + +inline QTextFormat *QTextFormatCollection::defaultFormat() const +{ + return defFormat; +} + +// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + +inline QTextFormat *QTextStringChar::format() const +{ + return (type == Regular) ? d.format : d.custom->format; +} + + +#ifndef QT_NO_TEXTCUSTOMITEM +inline QTextCustomItem *QTextStringChar::customItem() const +{ + return isCustom() ? d.custom->custom : 0; +} +#endif + +inline int QTextStringChar::height() const +{ +#ifndef QT_NO_TEXTCUSTOMITEM + return !isCustom() ? format()->height() : ( customItem()->placement() == QTextCustomItem::PlaceInline ? customItem()->height : 0 ); +#else + return format()->height(); +#endif +} + +inline int QTextStringChar::ascent() const +{ +#ifndef QT_NO_TEXTCUSTOMITEM + return !isCustom() ? format()->ascent() : ( customItem()->placement() == QTextCustomItem::PlaceInline ? customItem()->ascent() : 0 ); +#else + return format()->ascent(); +#endif +} + +inline int QTextStringChar::descent() const +{ +#ifndef QT_NO_TEXTCUSTOMITEM + return !isCustom() ? format()->descent() : 0; +#else + return format()->descent(); +#endif +} + +#endif //QT_NO_RICHTEXT + +#endif diff --git a/qmake/include/private/qsettings_p.h b/qmake/include/private/qsettings_p.h new file mode 100644 index 0000000..18d118b --- a/dev/null +++ b/qmake/include/private/qsettings_p.h @@ -0,0 +1,133 @@ +/**************************************************************************** +** $Id$ +** +** Definition of QSettings related classes +** +** Copyright (C) 1992-2002 Trolltech AS. All rights reserved. +** +** This file is part of the tools module of the Qt GUI Toolkit. +** +** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition +** licenses for Windows may use this file in accordance with the Qt Commercial +** License Agreement provided with the Software. +** +** This file is not available for use under any other license without +** express written permission from the copyright holder. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for +** information about Qt Commercial License Agreements. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#ifndef QSETTINGS_P_H +#define QSETTINGS_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of QSettings. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// +// + +#ifndef QT_H +#include "qstringlist.h" +#include "qmap.h" +#include "qvaluestack.h" +#endif // QT_H + +class QSettingsSysPrivate; + +// QSettingsGroup is a map of key/value pairs +class QSettingsGroup : public QMap<QString,QString> +{ +public: + QSettingsGroup(); + + bool modified; +}; + +// QSettingsHeading is a map of heading/group pairs +class QSettingsHeading : public QMap<QString,QSettingsGroup> +{ +public: + QSettingsHeading::Iterator git; + void read(const QString &); + void parseLine(QTextStream &); +}; + + +class QSettingsPrivate +{ +public: + QSettingsPrivate( QSettings::Format format ); + ~QSettingsPrivate(); + + QSettingsGroup readGroup(); + void removeGroup(const QString &); + void writeGroup(const QString &, const QString &); + QDateTime modificationTime(); + + QStringList searchPaths; + QMap<QString,QSettingsHeading> headings; + QString group; + QString heading; + + /*### static data brings threading trouble + static QString *defProduct; + static QString *defDomain; + */ + QValueStack<QString> groupStack; + QString groupPrefix; + + bool groupDirty :1; + bool modified :1; + bool globalScope :1; + +#if defined(Q_WS_WIN) || defined(Q_OS_MAC) + // system dependent implementations to use the + // system specific setting database (ie. registry on Windows) + + QSettingsSysPrivate *sysd; + void sysInit(); + void sysClear(); + +#if !defined(Q_NO_BOOL_TYPE) + bool sysWriteEntry( const QString &, bool ); +#endif + bool sysWriteEntry( const QString &, double ); + bool sysWriteEntry( const QString &, int ); + bool sysWriteEntry( const QString &, const QString & ); + bool sysWriteEntry( const QString &, const QStringList & ); + bool sysWriteEntry( const QString &, const QStringList &, const QChar& sep ); + + QStringList sysEntryList(const QString &) const; + QStringList sysSubkeyList(const QString &) const; + + QStringList sysReadListEntry( const QString &, bool * = 0 ) const; + QStringList sysReadListEntry( const QString &, const QChar& sep, bool * = 0 ) const; + QString sysReadEntry( const QString &, const QString &def = QString::null, bool * = 0 ) const; + int sysReadNumEntry( const QString &, int def = 0, bool * = 0 ) const; + double sysReadDoubleEntry( const QString &, double def = 0, bool * = 0 ) const; + bool sysReadBoolEntry( const QString &, bool def = 0, bool * = 0 ) const; + + bool sysRemoveEntry( const QString & ); + + bool sysSync(); + + void sysInsertSearchPath( QSettings::System, const QString & ); + void sysRemoveSearchPath( QSettings::System, const QString & ); +#endif +}; + +#endif // QSETTINGS_P_H diff --git a/qmake/include/private/qsharedmemory_p.h b/qmake/include/private/qsharedmemory_p.h new file mode 100644 index 0000000..4a8339d --- a/dev/null +++ b/qmake/include/private/qsharedmemory_p.h @@ -0,0 +1,84 @@ +/**************************************************************************** +** $Id$ +** +** Includes system files for shared memory +** +** Created : 020124 +** +** Copyright (C) 1992-2000 Trolltech AS. All rights reserved. +** +** This file is part of the kernel module of the Qt GUI Toolkit. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition +** licenses for Qt/Embedded may use this file in accordance with the +** Qt Embedded Commercial License Agreement provided with the Software. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for +** information about Qt Commercial License Agreements. +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of qapplication_qws.cpp and qgfxvnc_qws.cpp. This header file may +// change from version to version without notice, or even be removed. +// +// + +#if !defined(QT_QSHM_H) +#define QT_QSHM_H + +#include <qstring.h> + +#if !defined (QT_QWS_NO_SHM) + +#include <sys/types.h> +#include <sys/ipc.h> + +class QSharedMemory { +public: + QSharedMemory(){}; + QSharedMemory(int, QString, char c = 'Q'); + ~QSharedMemory(){}; + + bool create(); + void destroy(); + + bool attach(); + void detach(); + + void setPermissions(mode_t mode); + int size(); + void * base() { return shmBase; }; + +private: + void *shmBase; + int shmSize; + QString shmFile; + char character; +#if defined(QT_POSIX_QSHM) + int shmFD; +#else + int shmId; + key_t key; + int idInitted; +#endif +}; + +#endif +#endif diff --git a/qmake/include/private/qsqldriverinterface_p.h b/qmake/include/private/qsqldriverinterface_p.h new file mode 100644 index 0000000..8957b86 --- a/dev/null +++ b/qmake/include/private/qsqldriverinterface_p.h @@ -0,0 +1,69 @@ +/**************************************************************************** +** +** Definition of QSqlDriverInterface class +** +** Created : 2000-11-03 +** +** Copyright (C) 2000 Trolltech AS. All rights reserved. +** +** This file is part of the sql module of the Qt GUI Toolkit. +** +** This file may be distributed under the terms of the Q Public License +** as defined by Trolltech AS of Norway and appearing in the file +** LICENSE.QPL included in the packaging of this file. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** Licensees holding valid Qt Enterprise Edition licenses may use this +** file in accordance with the Qt Commercial License Agreement provided +** with the Software. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for +** information about Qt Commercial License Agreements. +** See http://www.trolltech.com/qpl/ for QPL licensing information. +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#ifndef QSQLDRIVERINTERFACE_H +#define QSQLDRIVERINTERFACE_H + +#ifndef QT_H +#include <private/qcom_p.h> +#endif // QT_H + +#if !defined( QT_MODULE_SQL ) || defined( QT_LICENSE_PROFESSIONAL ) +#define QM_EXPORT_SQL +#else +#define QM_EXPORT_SQL Q_EXPORT +#endif + +#ifndef QT_NO_SQL + +#ifndef QT_NO_COMPONENT + +// {EDDD5AD5-DF3C-400c-A711-163B72FE5F61} +#ifndef IID_QSqlDriverFactory +#define IID_QSqlDriverFactory QUuid(0xeddd5ad5, 0xdf3c, 0x400c, 0xa7, 0x11, 0x16, 0x3b, 0x72, 0xfe, 0x5f, 0x61) +#endif + +class QSqlDriver; + +struct QM_EXPORT_SQL QSqlDriverFactoryInterface : public QFeatureListInterface +{ + virtual QSqlDriver* create( const QString& name ) = 0; +}; + +#endif //QT_NO_COMPONENT +#endif // QT_NO_SQL + +#endif // QSQLDRIVERINTERFACE_H diff --git a/qmake/include/private/qsqlextension_p.h b/qmake/include/private/qsqlextension_p.h new file mode 100644 index 0000000..597b266 --- a/dev/null +++ b/qmake/include/private/qsqlextension_p.h @@ -0,0 +1,101 @@ +/**************************************************************************** +** +** Definition of the QSqlExtension class +** +** Created : 2002-06-03 +** +** Copyright (C) 2002 Trolltech AS. All rights reserved. +** +** This file is part of the sql module of the Qt GUI Toolkit. +** +** This file may be distributed under the terms of the Q Public License +** as defined by Trolltech AS of Norway and appearing in the file +** LICENSE.QPL included in the packaging of this file. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** Licensees holding valid Qt Enterprise Edition licenses may use this +** file in accordance with the Qt Commercial License Agreement provided +** with the Software. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for +** information about Qt Commercial License Agreements. +** See http://www.trolltech.com/qpl/ for QPL licensing information. +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#ifndef QSQLEXTENSION_P_H +#define QSQLEXTENSION_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of other Qt classes. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// +// + +#ifndef QT_H +#include "qmap.h" +#include "qstring.h" +#include "qvariant.h" +#endif // QT_H + +#ifndef QT_NO_SQL + +#if !defined( QT_MODULE_SQL ) || defined( QT_LICENSE_PROFESSIONAL ) +#define QM_EXPORT_SQL +#else +#define QM_EXPORT_SQL Q_EXPORT +#endif + +#if defined(Q_TEMPLATEDLL) +Q_TEMPLATE_EXTERN template class QM_EXPORT_SQL QMap<QString,QVariant>; +Q_TEMPLATE_EXTERN template class QM_EXPORT_SQL QMap<int,QString>; +#endif + +class QM_EXPORT_SQL QSqlExtension { +public: + QSqlExtension(); + virtual ~QSqlExtension(); + virtual bool prepare( const QString& query ); + virtual bool exec(); + virtual void bindValue( const QString& holder, const QVariant& value ); + virtual void bindValue( int pos, const QVariant& value ); + virtual void addBindValue( const QVariant& value ); + void clearValues(); + void clearIndex(); + + enum BindMethod { BindByPosition, BindByName }; + BindMethod bindMethod(); + BindMethod bindm; + int bindCount; + + QMap<int, QString> index; + QMap<QString, QVariant> values; +}; + +class QM_EXPORT_SQL QSqlDriverExtension +{ +public: + QSqlDriverExtension(); + virtual ~QSqlDriverExtension(); + virtual bool isOpen() const = 0; +}; + +#endif +#endif diff --git a/qmake/include/private/qsqlmanager_p.h b/qmake/include/private/qsqlmanager_p.h new file mode 100644 index 0000000..e5f45b8 --- a/dev/null +++ b/qmake/include/private/qsqlmanager_p.h @@ -0,0 +1,159 @@ +/**************************************************************************** +** +** Definition of QSqlManager class +** +** Created : 2000-11-03 +** +** Copyright (C) 2000 Trolltech AS. All rights reserved. +** +** This file is part of the sql module of the Qt GUI Toolkit. +** +** This file may be distributed under the terms of the Q Public License +** as defined by Trolltech AS of Norway and appearing in the file +** LICENSE.QPL included in the packaging of this file. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** Licensees holding valid Qt Enterprise Edition licenses may use this +** file in accordance with the Qt Commercial License Agreement provided +** with the Software. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for +** information about Qt Commercial License Agreements. +** See http://www.trolltech.com/qpl/ for QPL licensing information. +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#ifndef QSQLMANAGER_P_H +#define QSQLMANAGER_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of other Qt classes. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// +// + +#ifndef QT_H +#include "qglobal.h" +#include "qstring.h" +#include "qstringlist.h" +#include "qsql.h" +#include "qsqlerror.h" +#include "qsqlindex.h" +#include "qsqlcursor.h" +#endif // QT_H + +#if !defined( QT_MODULE_SQL ) || defined( QT_LICENSE_PROFESSIONAL ) +#define QM_EXPORT_SQL +#else +#define QM_EXPORT_SQL Q_EXPORT +#endif + +#ifndef QT_NO_SQL + +class QSqlCursor; +class QSqlForm; +class QSqlCursorManagerPrivate; + +class QM_EXPORT_SQL QSqlCursorManager +{ +public: + QSqlCursorManager(); + virtual ~QSqlCursorManager(); + + virtual void setSort( const QSqlIndex& sort ); + virtual void setSort( const QStringList& sort ); + QStringList sort() const; + virtual void setFilter( const QString& filter ); + QString filter() const; + virtual void setCursor( QSqlCursor* cursor, bool autoDelete = FALSE ); + QSqlCursor* cursor() const; + + virtual void setAutoDelete( bool enable ); + bool autoDelete() const; + + virtual bool refresh(); + virtual bool findBuffer( const QSqlIndex& idx, int atHint = 0 ); + +private: + QSqlCursorManagerPrivate* d; +}; + +#ifndef QT_NO_SQL_FORM + +class QSqlFormManagerPrivate; + +class QM_EXPORT_SQL QSqlFormManager +{ +public: + QSqlFormManager(); + virtual ~QSqlFormManager(); + + virtual void setForm( QSqlForm* form ); + QSqlForm* form(); + virtual void setRecord( QSqlRecord* record ); + QSqlRecord* record(); + + virtual void clearValues(); + virtual void readFields(); + virtual void writeFields(); + +private: + QSqlFormManagerPrivate* d; +}; + +#endif + +class QWidget; +class QDataManagerPrivate; + +class QM_EXPORT_SQL QDataManager +{ +public: + QDataManager(); + virtual ~QDataManager(); + + virtual void setMode( QSql::Op m ); + QSql::Op mode() const; + virtual void setAutoEdit( bool autoEdit ); + bool autoEdit() const; + + virtual void handleError( QWidget* parent, const QSqlError& error ); + virtual QSql::Confirm confirmEdit( QWidget* parent, QSql::Op m ); + virtual QSql::Confirm confirmCancel( QWidget* parent, QSql::Op m ); + + virtual void setConfirmEdits( bool confirm ); + virtual void setConfirmInsert( bool confirm ); + virtual void setConfirmUpdate( bool confirm ); + virtual void setConfirmDelete( bool confirm ); + virtual void setConfirmCancels( bool confirm ); + + bool confirmEdits() const; + bool confirmInsert() const; + bool confirmUpdate() const; + bool confirmDelete() const; + bool confirmCancels() const; + +private: + QDataManagerPrivate* d; +}; + + +#endif +#endif diff --git a/qmake/include/private/qstyleinterface_p.h b/qmake/include/private/qstyleinterface_p.h new file mode 100644 index 0000000..4aaedc7 --- a/dev/null +++ b/qmake/include/private/qstyleinterface_p.h @@ -0,0 +1,61 @@ +/**************************************************************************** +** $Id$ +** +** ... +** +** Copyright (C) 2000-2002 Trolltech AS. All rights reserved. +** +** This file is part of the widgets module of the Qt GUI Toolkit. +** +** This file may be distributed under the terms of the Q Public License +** as defined by Trolltech AS of Norway and appearing in the file +** LICENSE.QPL included in the packaging of this file. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition +** licenses may use this file in accordance with the Qt Commercial License +** Agreement provided with the Software. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for +** information about Qt Commercial License Agreements. +** See http://www.trolltech.com/qpl/ for QPL licensing information. +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#ifndef QSTYLEINTERFACE_H +#define QSTYLEINTERFACE_H + +#ifndef QT_H +#include <private/qcom_p.h> +#endif // QT_H + +#ifndef QT_NO_STYLE +#ifndef QT_NO_COMPONENT + +class QStyle; + +// {FC1B6EBE-053C-49c1-A483-C377739AB9A5} +#ifndef IID_QStyleFactory +#define IID_QStyleFactory QUuid(0xfc1b6ebe, 0x53c, 0x49c1, 0xa4, 0x83, 0xc3, 0x77, 0x73, 0x9a, 0xb9, 0xa5) +#endif + +struct Q_EXPORT QStyleFactoryInterface : public QFeatureListInterface +{ + virtual QStyle* create( const QString& style ) = 0; +}; + +#endif //QT_NO_COMPONENT +#endif //QT_NO_STYLE + +#endif //QSTYLEINTERFACE_H diff --git a/qmake/include/private/qsvgdevice_p.h b/qmake/include/private/qsvgdevice_p.h new file mode 100644 index 0000000..c1cc389 --- a/dev/null +++ b/qmake/include/private/qsvgdevice_p.h @@ -0,0 +1,134 @@ +/**************************************************************************** +** $Id$ +** +** Definition of the QSvgDevice class +** +** Created : 20001024 +** +** Copyright (C) 2000-2002 Trolltech AS. All rights reserved. +** +** This file is part of the xml module of the Qt GUI Toolkit. +** +** This file may be distributed under the terms of the Q Public License +** as defined by Trolltech AS of Norway and appearing in the file +** LICENSE.QPL included in the packaging of this file. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** Licensees holding valid Qt Enterprise Edition licenses may use this +** file in accordance with the Qt Commercial License Agreement provided +** with the Software. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for +** information about Qt Commercial License Agreements. +** See http://www.trolltech.com/qpl/ for QPL licensing information. +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +*****************************************************************************/ + +#ifndef QSVGDEVICE_H +#define QSVGDEVICE_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of the QPicture class. This header file may change from +// version to version without notice, or even be removed. +// +// We mean it. +// +// + +#ifndef QT_H +#include "qpaintdevice.h" +#include "qrect.h" +#include "qdom.h" +#endif // QT_H + +#if !defined(QT_MODULE_XML) || defined( QT_LICENSE_PROFESSIONAL ) || defined( QT_INTERNAL_XML ) +#define QM_EXPORT_SVG +#else +#define QM_EXPORT_SVG Q_EXPORT +#endif + +#ifndef QT_NO_SVG + +class QPainter; +class QDomNode; +class QDomNamedNodeMap; +struct QSvgDeviceState; +class QSvgDevicePrivate; + +class QM_EXPORT_SVG QSvgDevice : public QPaintDevice +{ +public: + QSvgDevice(); + ~QSvgDevice(); + + bool play( QPainter *p ); + + QString toString() const; + + bool load( QIODevice *dev ); + bool save( QIODevice *dev ); + bool save( const QString &fileName ); + + QRect boundingRect() const; + void setBoundingRect( const QRect &r ); + +protected: + virtual bool cmd ( int, QPainter*, QPDevCmdParam* ); + virtual int metric( int ) const; + +private: + // reading + bool play( const QDomNode &node ); + void saveAttributes(); + void restoreAttributes(); + QColor parseColor( const QString &col ); + double parseLen( const QString &str, bool *ok=0, bool horiz=TRUE ) const; + int lenToInt( const QDomNamedNodeMap &map, const QString &attr, + int def=0 ) const; + void setStyleProperty( const QString &prop, const QString &val, + QPen *pen, QFont *font, int *talign ); + void setStyle( const QString &s ); + void setTransform( const QString &tr ); + void drawPath( const QString &data ); + + // writing + void applyStyle( QDomElement *e, int c ) const; + void applyTransform( QDomElement *e ) const; + + // reading + QRect brect; // bounding rectangle + QDomDocument doc; // document tree + QDomNode current; + QPoint curPt; + QSvgDeviceState *curr; + QPainter *pt; // used by play() et al + + // writing + bool dirtyTransform, dirtyStyle; + + QSvgDevicePrivate *d; +}; + +inline QRect QSvgDevice::boundingRect() const +{ + return brect; +} + +#endif // QT_NO_SVG + +#endif // QSVGDEVICE_H diff --git a/qmake/include/private/qtextcodecinterface_p.h b/qmake/include/private/qtextcodecinterface_p.h new file mode 100644 index 0000000..d2a2cb9 --- a/dev/null +++ b/qmake/include/private/qtextcodecinterface_p.h @@ -0,0 +1,79 @@ +/**************************************************************************** +** $Id$ +** +** Definition of QTextCodecFactoryInterface interface +** +** Copyright (C) 2001-2002 Trolltech AS. All rights reserved. +** +** This file is part of the tools module of the Qt GUI Toolkit. +** +** This file may be distributed under the terms of the Q Public License +** as defined by Trolltech AS of Norway and appearing in the file +** LICENSE.QPL included in the packaging of this file. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition +** licenses may use this file in accordance with the Qt Commercial License +** Agreement provided with the Software. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for +** information about Qt Commercial License Agreements. +** See http://www.trolltech.com/qpl/ for QPL licensing information. +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#ifndef QTEXTCODECINTERFACE_P_H +#define QTEXTCODECINTERFACE_P_H + + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of qpsprinter.cpp and qprinter_x11.cpp. +// This header file may change from version to version without notice, +// or even be removed. +// +// We mean it. +// +// + + +#ifndef QT_H +#include <private/qcom_p.h> +#endif // QT_H + +#ifndef QT_NO_TEXTCODEC +#ifndef QT_NO_COMPONENT + +class QTextCodec; + + +// {F55BFA60-F695-11D4-823E-009027DC0F37} +#ifndef IID_QTextCodecFactory +#define IID_QTextCodecFactory QUuid( 0xf55bfa60, 0xf695, 0x11d4, 0x82, 0x3e, 0x00, 0x90, 0x27, 0xdc, 0x0f, 0x37) +#endif + + +struct Q_EXPORT QTextCodecFactoryInterface : public QFeatureListInterface +{ + virtual QTextCodec *createForMib( int mib ) = 0; + virtual QTextCodec *createForName( const QString &name ) = 0; +}; + +#endif // QT_NO_COMPONENT +#endif // QT_NO_TEXTCODEC + +#endif // QTEXTCODECINTERFACE_P_H diff --git a/qmake/include/private/qtitlebar_p.h b/qmake/include/private/qtitlebar_p.h new file mode 100644 index 0000000..dabb6bf --- a/dev/null +++ b/qmake/include/private/qtitlebar_p.h @@ -0,0 +1,136 @@ +/**************************************************************************** +** $Id$ +** +** Definition of some Qt private functions. +** +** Created : 2000-01-01 +** +** Copyright (C) 2000-2002 Trolltech AS. All rights reserved. +** +** This file is part of the widgets module of the Qt GUI Toolkit. +** +** This file may be distributed under the terms of the Q Public License +** as defined by Trolltech AS of Norway and appearing in the file +** LICENSE.QPL included in the packaging of this file. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition +** licenses may use this file in accordance with the Qt Commercial License +** Agreement provided with the Software. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for +** information about Qt Commercial License Agreements. +** See http://www.trolltech.com/qpl/ for QPL licensing information. +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#ifndef QTITLEBAR_P_H +#define QTITLEBAR_P_H + + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of qworkspace.cpp and qdockwindow.cpp. This header file may change +// from version to version without notice, or even be removed. +// +// We mean it. +// +// + + +#ifndef QT_H +#include "qbutton.h" +#include "qlabel.h" +#endif // QT_H + +#if !defined(QT_NO_TITLEBAR) + +class QToolTip; +class QTitleBarPrivate; +class QPixmap; + +class Q_EXPORT QTitleBar : public QWidget +{ + Q_OBJECT + Q_PROPERTY( bool autoRaise READ autoRaise WRITE setAutoRaise ) + Q_PROPERTY( bool movable READ isMovable WRITE setMovable ) + +public: + QTitleBar (QWidget* w, QWidget* parent, const char* name=0); + ~QTitleBar(); + + bool isActive() const; + bool usesActiveColor() const; + virtual QString visibleText() const; + + bool isMovable() const; + void setMovable(bool); + + bool autoRaise() const; + void setAutoRaise(bool); + + QWidget *window() const; + + QSize sizeHint() const; + +#ifdef QT_NO_WIDGET_TOPEXTRA + // We provide one, since titlebar is useless otherwise. + QString caption() const; +#endif + +public slots: + void setActive( bool ); + void setCaption( const QString& title ); + void setIcon( const QPixmap& icon ); + +signals: + void doActivate(); + void doNormal(); + void doClose(); + void doMaximize(); + void doMinimize(); + void doShade(); + void showOperationMenu(); + void popupOperationMenu( const QPoint& ); + void doubleClicked(); + +protected: + bool event( QEvent *); + void resizeEvent( QResizeEvent *); + void contextMenuEvent( QContextMenuEvent * ); + void mousePressEvent( QMouseEvent * ); + void mouseDoubleClickEvent( QMouseEvent * ); + void mouseReleaseEvent( QMouseEvent * ); + void mouseMoveEvent( QMouseEvent * ); + void enterEvent( QEvent *e ); + void leaveEvent( QEvent *e ); + void paintEvent( QPaintEvent *p ); + + virtual void cutText(); + +private: + void readColors(); + + QTitleBarPrivate *d; +#if defined(Q_DISABLE_COPY) // Disabled copy constructor and operator= + QTitleBar( const QTitleBar & ); + QTitleBar &operator=( const QTitleBar & ); +#endif +}; + +#endif +#endif //QTITLEBAR_P_H diff --git a/qmake/include/private/qucom_p.h b/qmake/include/private/qucom_p.h new file mode 100644 index 0000000..d2ff48e --- a/dev/null +++ b/qmake/include/private/qucom_p.h @@ -0,0 +1,499 @@ +/**************************************************************************** +** $Id$ +** +** Definition of the QUcom interfaces +** +** Created : 990101 +** +** Copyright (C) 1992-2002 Trolltech AS. All rights reserved. +** +** This file is part of the tools module of the Qt GUI Toolkit. +** +** This file may be distributed under the terms of the Q Public License +** as defined by Trolltech AS of Norway and appearing in the file +** LICENSE.QPL included in the packaging of this file. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition +** licenses may use this file in accordance with the Qt Commercial License +** Agreement provided with the Software. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for +** information about Qt Commercial License Agreements. +** See http://www.trolltech.com/qpl/ for QPL licensing information. +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#ifndef QUCOM_H +#define QUCOM_H + +#ifndef QT_H +#include <qstring.h> +#include "quuid.h" +#endif // QT_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of a number of Qt sources files. This header file may change from +// version to version without notice, or even be removed. +// +// We mean it. +// +// + +#ifdef check +#undef check +#endif + +struct QUObject; +struct QUInterfaceDescription; +struct QUnknownInterface; +struct QDispatchInterface; + + +struct Q_EXPORT QUBuffer +{ + virtual long read( char *data, ulong maxlen ) = 0; + virtual long write( const char *data, ulong len ) = 0; +}; + + +// A type for a QUObject +struct Q_EXPORT QUType +{ + virtual const QUuid *uuid() const = 0; + virtual const char *desc() const = 0; + + + virtual bool canConvertFrom( QUObject *, QUType * ) = 0; + // virtual private, only called by canConvertFrom + virtual bool canConvertTo( QUObject *, QUType * ) = 0; + + + virtual bool convertFrom( QUObject *, QUType * ) = 0; + // virtual private, only called by convertFrom + virtual bool convertTo( QUObject *, QUType * ) = 0; + + virtual void clear( QUObject * ) = 0; + + virtual int serializeTo( QUObject *, QUBuffer * ) = 0; + virtual int serializeFrom( QUObject *, QUBuffer * ) = 0; + + static bool isEqual( const QUType *t1, const QUType *t2 ); + static bool check( QUObject* o, QUType* t ); +}; + + +// {DE56510E-4E9F-4b76-A3C2-D1E2EF42F1AC} +extern Q_EXPORT const QUuid TID_QUType_Null; +struct Q_EXPORT QUType_Null : public QUType +{ + const QUuid *uuid() const; + const char *desc() const; + + bool canConvertFrom( QUObject *, QUType * ); + bool canConvertTo( QUObject *, QUType * ); + bool convertFrom( QUObject *, QUType * ); + bool convertTo( QUObject *, QUType * ); + void clear( QUObject * ); + int serializeTo( QUObject *, QUBuffer * ); + int serializeFrom( QUObject *, QUBuffer * ); +}; +extern Q_EXPORT QUType_Null static_QUType_Null; + + +// The magic QUObject +struct Q_EXPORT QUObject +{ +public: // scary MSVC bug makes this necessary + QUObject() : type( &static_QUType_Null ) {} + ~QUObject() { type->clear( this ); } + + QUType *type; + + // the unavoidable union + union + { + bool b; + + char c; + short s; + int i; + long l; + + unsigned char uc; + unsigned short us; + unsigned int ui; + unsigned long ul; + + float f; + double d; + + char byte[16]; + + struct { + char* data; + unsigned long size; + } bytearray; + + void* ptr; + + struct { + void *ptr; + bool owner; + } voidstar; + + struct { + char *ptr; + bool owner; + } charstar; + + struct { + char *ptr; + bool owner; + } utf8; + + struct { + char *ptr; + bool owner; + } local8bit; + + QUnknownInterface* iface; + QDispatchInterface* idisp; + + } payload; + +}; + + +// A parameter description describes one method parameters. A +// parameter has a name, a type and a flag describing whether it's an +// in parameter, an out parameter, or both ways +struct Q_EXPORT QUParameter +{ + const char* name; + QUType *type; + const void* typeExtra; //Usually 0, UEnum* for QUType_enum, const char* for QUType_ptr, int* for QUType_varptr + enum { In = 1, Out = 2, InOut = In | Out }; + int inOut; +}; + +// A method description describes one method. A method has a name and +// an array of parameters. +struct Q_EXPORT QUMethod +{ + const char* name; + int count; + const QUParameter* parameters; +}; + +// A Property description. Not used yet in the example. +struct Q_EXPORT QUProperty +{ + const char* name; + QUType* type; + const void* typeExtra; //type dependend. Usually 0, but UEnum for QUTypeenum or const char* for QUTypeptr + + int set; // -1 undefined + int get; // -1 undefined + + int designable; // -1 FALSE, -2 TRUE, else method + int stored; // -1 FALSE, -2 TRUE, else method +}; + +// An interface description describes one interface, that is all its +// methods and properties. +struct Q_EXPORT QUInterfaceDescription +{ + int methodCount; + const QUMethod* methods; + int propertyCount; + const QUProperty* properties; +}; + + +// A component description describe one component, that is its name, +// vendor, release, info, its component uuid and all its interface +// uuids. +struct Q_EXPORT QUComponentDescription +{ + const char* name; + const char* vendor; + const char* release; + const char* info; + QUuid cid; + int count; + const QUuid* interfaces; +}; + + +// A component server description describe one component server, that +// is its name, vendor, release, info and the descriptions of all +// components it can instantiate. +struct Q_EXPORT QUComponentServerDescription +{ + const char* name; + const char* vendor; + const char* release; + const char* info; + int count; + const QUComponentDescription* components; +}; + + + +struct Q_EXPORT QUEnumItem // - a name/value pair +{ + const char *key; + int value; +}; + +struct Q_EXPORT QUEnum +{ + const char *name; // - enumerator name + unsigned int count; // - number of values + const QUEnumItem *items; // - the name/value pairs + bool set; // whether enum has to be treated as a set +}; + +inline bool QUType::isEqual( const QUType *t1, const QUType *t2 ) { + return t1 == t2 || t1->uuid() == t2->uuid() || + *(t1->uuid()) == *(t2->uuid()); +} + +inline bool QUType::check( QUObject* o, QUType* t ) { + return isEqual( o->type, t ) || t->convertFrom( o, o->type ); +} + + + +// {7EE17B08-5419-47e2-9776-8EEA112DCAEC} +extern Q_EXPORT const QUuid TID_QUType_enum; +struct Q_EXPORT QUType_enum : public QUType +{ + const QUuid *uuid() const; + const char *desc() const; + + void set( QUObject *, int ); + int &get( QUObject * o ) { return o->payload.i; } + bool canConvertFrom( QUObject *, QUType * ); + bool canConvertTo( QUObject *, QUType * ); + bool convertFrom( QUObject *, QUType * ); + bool convertTo( QUObject *, QUType * ); + void clear( QUObject * ) {} + int serializeTo( QUObject *, QUBuffer * ); + int serializeFrom( QUObject *, QUBuffer * ); +}; +extern Q_EXPORT QUType_enum static_QUType_enum; + + +// {8AC26448-5AB4-49eb-968C-8F30AB13D732} +extern Q_EXPORT const QUuid TID_QUType_ptr; +struct Q_EXPORT QUType_ptr : public QUType +{ + const QUuid *uuid() const; + const char *desc() const; + + void set( QUObject *, const void* ); + void* &get( QUObject * o ) { return o->payload.ptr; } + bool canConvertFrom( QUObject *, QUType * ); + bool canConvertTo( QUObject *, QUType * ); + bool convertFrom( QUObject *, QUType * ); + bool convertTo( QUObject *, QUType * ); + void clear( QUObject * ) {} + int serializeTo( QUObject *, QUBuffer * ); + int serializeFrom( QUObject *, QUBuffer * ); +}; +extern Q_EXPORT QUType_ptr static_QUType_ptr; + +// {97A2594D-6496-4402-A11E-55AEF2D4D25C} +extern Q_EXPORT const QUuid TID_QUType_iface; +struct Q_EXPORT QUType_iface : public QUType +{ + const QUuid *uuid() const; + const char *desc() const; + + void set( QUObject *, QUnknownInterface* ); + QUnknownInterface* &get( QUObject *o ){ return o->payload.iface; } + bool canConvertFrom( QUObject *, QUType * ); + bool canConvertTo( QUObject *, QUType * ); + bool convertFrom( QUObject *, QUType * ); + bool convertTo( QUObject *, QUType * ); + void clear( QUObject * ) {} + int serializeTo( QUObject *, QUBuffer * ); + int serializeFrom( QUObject *, QUBuffer * ); +}; +extern Q_EXPORT QUType_iface static_QUType_iface; + +// {2F358164-E28F-4bf4-9FA9-4E0CDCABA50B} +extern Q_EXPORT const QUuid TID_QUType_idisp; +struct Q_EXPORT QUType_idisp : public QUType +{ + const QUuid *uuid() const; + const char *desc() const; + + void set( QUObject *, QDispatchInterface* ); + QDispatchInterface* &get( QUObject *o ){ return o->payload.idisp; } + bool canConvertFrom( QUObject *, QUType * ); + bool canConvertTo( QUObject *, QUType * ); + bool convertFrom( QUObject *, QUType * ); + bool convertTo( QUObject *, QUType * ); + void clear( QUObject * ) {} + int serializeTo( QUObject *, QUBuffer * ); + int serializeFrom( QUObject *, QUBuffer * ); +}; +extern Q_EXPORT QUType_idisp static_QUType_idisp; + +// {CA42115D-13D0-456c-82B5-FC10187F313E} +extern Q_EXPORT const QUuid TID_QUType_bool; +struct Q_EXPORT QUType_bool : public QUType +{ + const QUuid *uuid() const; + const char *desc() const; + + void set( QUObject *, bool ); + bool &get( QUObject *o ) { return o->payload.b; } + bool canConvertFrom( QUObject *, QUType * ); + bool canConvertTo( QUObject *, QUType * ); + bool convertFrom( QUObject *, QUType * ); + bool convertTo( QUObject *, QUType * ); + void clear( QUObject * ) {} + int serializeTo( QUObject *, QUBuffer * ); + int serializeFrom( QUObject *, QUBuffer * ); +}; +extern Q_EXPORT QUType_bool static_QUType_bool; + +// {53C1F3BE-73C3-4c7d-9E05-CCF09EB676B5} +extern Q_EXPORT const QUuid TID_QUType_int; +struct Q_EXPORT QUType_int : public QUType +{ + const QUuid *uuid() const; + const char *desc() const; + + void set( QUObject *, int ); + int &get( QUObject *o ) { return o->payload.i; } + bool canConvertFrom( QUObject *, QUType * ); + bool canConvertTo( QUObject *, QUType * ); + bool convertFrom( QUObject *, QUType * ); + bool convertTo( QUObject *, QUType * ); + void clear( QUObject * ) {} + int serializeTo( QUObject *, QUBuffer * ); + int serializeFrom( QUObject *, QUBuffer * ); +}; +extern Q_EXPORT QUType_int static_QUType_int; + +// {5938712A-C496-11D5-8CB2-00C0F03BC0F3} +extern Q_EXPORT const QUuid TID_QUType_uint; +struct Q_EXPORT QUType_uint : public QUType +{ + const QUuid *uuid() const; + const char *desc() const; + + void set( QUObject *, uint ); + uint &get( QUObject *o ) { return o->payload.ui; } + bool canConvertFrom( QUObject *, QUType * ); + bool canConvertTo( QUObject *, QUType * ); + bool convertFrom( QUObject *, QUType * ); + bool convertTo( QUObject *, QUType * ); + void clear( QUObject * ) {} + int serializeTo( QUObject *, QUBuffer * ); + int serializeFrom( QUObject *, QUBuffer * ); +}; +extern Q_EXPORT QUType_uint static_QUType_uint; + +// {2D0974E5-0BA6-4ec2-8837-C198972CB48C} +extern Q_EXPORT const QUuid TID_QUType_double; +struct Q_EXPORT QUType_double : public QUType +{ + const QUuid *uuid() const; + const char *desc() const; + + void set( QUObject *, double ); + double &get( QUObject *o ) { return o->payload.d; } + bool canConvertFrom( QUObject *, QUType * ); + bool canConvertTo( QUObject *, QUType * ); + bool convertFrom( QUObject *, QUType * ); + bool convertTo( QUObject *, QUType * ); + void clear( QUObject * ) {} + int serializeTo( QUObject *, QUBuffer * ); + int serializeFrom( QUObject *, QUBuffer * ); +}; +extern Q_EXPORT QUType_double static_QUType_double; + +// {544C5175-6993-4486-B04D-CEC4D21BF4B9 } +extern Q_EXPORT const QUuid TID_QUType_float; +struct Q_EXPORT QUType_float : public QUType +{ + const QUuid *uuid() const; + const char *desc() const; + + void set( QUObject *, float ); + float &get( QUObject *o ) { return o->payload.f; } + bool canConvertFrom( QUObject *, QUType * ); + bool canConvertTo( QUObject *, QUType * ); + bool convertFrom( QUObject *, QUType * ); + bool convertTo( QUObject *, QUType * ); + void clear( QUObject * ) {} + int serializeTo( QUObject *, QUBuffer * ); + int serializeFrom( QUObject *, QUBuffer * ); +}; +extern Q_EXPORT QUType_float static_QUType_float; + +// {EFCDD1D4-77A3-4b8e-8D46-DC14B8D393E9} +extern Q_EXPORT const QUuid TID_QUType_charstar; +struct Q_EXPORT QUType_charstar : public QUType +{ + const QUuid *uuid() const; + const char *desc() const; + + void set( QUObject *, const char*, bool take = FALSE ); + char* get( QUObject *o ){ return o->payload.charstar.ptr; } + bool canConvertFrom( QUObject *, QUType * ); + bool canConvertTo( QUObject *, QUType * ); + bool convertFrom( QUObject *, QUType * ); + bool convertTo( QUObject *, QUType * ); + void clear( QUObject * ); + int serializeTo( QUObject *, QUBuffer * ); + int serializeFrom( QUObject *, QUBuffer * ); + +}; +extern Q_EXPORT QUType_charstar static_QUType_charstar; + +// {44C2A547-01E7-4e56-8559-35AF9D2F42B7} +extern const QUuid TID_QUType_QString; + +struct Q_EXPORT QUType_QString : public QUType +{ + const QUuid *uuid() const; + const char *desc() const; + + void set( QUObject *, const QString & ); + QString &get( QUObject * o ) { return *(QString*)o->payload.ptr; } + + bool canConvertFrom( QUObject *, QUType * ); + bool canConvertTo( QUObject *, QUType * ); + bool convertFrom( QUObject *, QUType * ); + bool convertTo( QUObject *, QUType * ); + void clear( QUObject * ); + int serializeTo( QUObject *, QUBuffer * ); + int serializeFrom( QUObject *, QUBuffer * ); + +}; +extern Q_EXPORT QUType_QString static_QUType_QString; + + +#endif // QUCOM_H diff --git a/qmake/include/private/qucomextra_p.h b/qmake/include/private/qucomextra_p.h new file mode 100644 index 0000000..3de6104 --- a/dev/null +++ b/qmake/include/private/qucomextra_p.h @@ -0,0 +1,93 @@ +/**************************************************************************** +** $Id$ +** +** Definition of extra QUcom classes +** +** Created : 990101 +** +** Copyright (C) 1992-2002 Trolltech AS. All rights reserved. +** +** This file is part of the kernel module of the Qt GUI Toolkit. +** +** This file may be distributed under the terms of the Q Public License +** as defined by Trolltech AS of Norway and appearing in the file +** LICENSE.QPL included in the packaging of this file. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition +** licenses may use this file in accordance with the Qt Commercial License +** Agreement provided with the Software. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for +** information about Qt Commercial License Agreements. +** See http://www.trolltech.com/qpl/ for QPL licensing information. +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#ifndef QUCOMEXTRA_H +#define QUCOMEXTRA_H + +#ifndef QT_H +#include <private/qucom_p.h> +#endif // QT_H + + +class QVariant; + +#ifndef QT_NO_VARIANT +// 6dc75d58-a1d9-4417-b591-d45c63a3a4ea +extern const QUuid TID_QUType_QVariant; + +struct Q_EXPORT QUType_QVariant : public QUType +{ + const QUuid *uuid() const; + const char *desc() const; + + void set( QUObject *, const QVariant & ); + QVariant &get( QUObject * o ); + + bool canConvertFrom( QUObject *, QUType * ); + bool canConvertTo( QUObject *, QUType * ); + bool convertFrom( QUObject *, QUType * ); + bool convertTo( QUObject *, QUType * ); + void clear( QUObject * ); + int serializeTo( QUObject *, QUBuffer * ); + int serializeFrom( QUObject *, QUBuffer * ); +}; +extern Q_EXPORT QUType_QVariant static_QUType_QVariant; +#endif //QT_NO_VARIANT + + +// {0x8d48b3a8, 0xbd7f, 0x11d5, 0x8d, 0x74, 0x00, 0xc0, 0xf0, 0x3b, 0xc0, 0xf3 } +extern Q_EXPORT const QUuid TID_QUType_varptr; +struct Q_EXPORT QUType_varptr : public QUType +{ + const QUuid *uuid() const; + const char *desc() const; + + void set( QUObject *, const void* ); + void* &get( QUObject * o ) { return o->payload.ptr; } + bool canConvertFrom( QUObject *, QUType * ); + bool canConvertTo( QUObject *, QUType * ); + bool convertFrom( QUObject *, QUType * ); + bool convertTo( QUObject *, QUType * ); + void clear( QUObject * ) {} + int serializeTo( QUObject *, QUBuffer * ); + int serializeFrom( QUObject *, QUBuffer * ); +}; +extern Q_EXPORT QUType_varptr static_QUType_varptr; + + +#endif // QUCOMEXTRA_H + diff --git a/qmake/include/private/qwidget_p.h b/qmake/include/private/qwidget_p.h new file mode 100644 index 0000000..80368d0 --- a/dev/null +++ b/qmake/include/private/qwidget_p.h @@ -0,0 +1,61 @@ +/**************************************************************************** +** $Id$ +** +** Definition of some Qt private functions. +** +** Created : 000903 +** +** Copyright (C) 2000 Trolltech AS. All rights reserved. +** +** This file is part of the kernel module of the Qt GUI Toolkit. +** +** This file may be distributed under the terms of the Q Public License +** as defined by Trolltech AS of Norway and appearing in the file +** LICENSE.QPL included in the packaging of this file. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition +** licenses may use this file in accordance with the Qt Commercial License +** Agreement provided with the Software. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for +** information about Qt Commercial License Agreements. +** See http://www.trolltech.com/qpl/ for QPL licensing information. +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#ifndef QWIDGET_P_H +#define QWIDGET_P_H + + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of qapplication_*.cpp, qwidget*.cpp and qfiledialog.cpp. This header +// file may change from version to version without notice, or even be removed. +// +// We mean it. +// +// + +#ifndef QT_H +#endif // QT_H + +#if defined (Q_WS_X11) || defined (Q_WS_QWS) +extern int qt_widget_tlw_gravity; +#endif + +#endif diff --git a/qmake/include/private/qwidgetinterface_p.h b/qmake/include/private/qwidgetinterface_p.h new file mode 100644 index 0000000..5b5776b --- a/dev/null +++ b/qmake/include/private/qwidgetinterface_p.h @@ -0,0 +1,111 @@ + /********************************************************************** +** Copyright (C) 2000-2001 Trolltech AS. All rights reserved. +** +** This file is part of Qt Designer. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#ifndef QWIDGETINTERFACE_H +#define QWIDGETINTERFACE_H + + +#ifndef QT_H +#include <private/qcom_p.h> +#include <qiconset.h> +#endif // QT_H + +#ifndef QT_NO_WIDGETPLUGIN + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of a number of Qt sources files. This header file may change from +// version to version without notice, or even be removed. +// +// We mean it. +// +// + +class QWidget; + +// {55184143-f18f-42c0-a8eb-71c01516019a} +#ifndef IID_QWidgetFactory +#define IID_QWidgetFactory QUuid( 0x55184143, 0xf18f, 0x42c0, 0xa8, 0xeb, 0x71, 0xc0, 0x15, 0x16, 0x1, 0x9a ) +#endif + +/*! To add custom widgets to the Qt Designer, implement that interface + in your custom widget plugin. + + You also have to implement the function featureList() (\sa + QFeatureListInterface) and return there all widgets (names of it) + which this interface provides. +*/ + +struct QWidgetFactoryInterface : public QFeatureListInterface +{ +public: + + /*! In the implementation create and return the widget \a widget + here, use \a parent and \a name when creating the widget */ + virtual QWidget* create( const QString &widget, QWidget* parent = 0, const char* name = 0 ) = 0; + + /*! In the implementation return the name of the group of the + widget \a widget */ + virtual QString group( const QString &widget ) const = 0; + + /*! In the implementation return the iconset, which should be used + in the Qt Designer menubar and toolbar to represent the widget + \a widget */ + virtual QIconSet iconSet( const QString &widget ) const = 0; + + /*! In the implementation return the include file which is needed + for the widget \a widget in the generated code which uic + generates. */ + virtual QString includeFile( const QString &widget ) const = 0; + + /*! In the implementation return the text which should be + displayed as tooltip for the widget \a widget */ + virtual QString toolTip( const QString &widget ) const = 0; + + /*! In the implementation return the text which should be used for + what's this help for the widget \a widget. */ + virtual QString whatsThis( const QString &widget ) const = 0; + + /*! In the implementation return TRUE here, of the \a widget + should be able to contain other widget in the Qt Designer, else + FALSE. */ + virtual bool isContainer( const QString &widget ) const = 0; +}; + +#if CONTAINER_CUSTOM_WIDGETS +// {15976628-e3c3-47f4-b525-d124a3caf30e} +#ifndef IID_QWidgetContainer +#define IID_QWidgetContainer QUuid( 0x15976628, 0xe3c3, 0x47f4, 0xb5, 0x25, 0xd1, 0x24, 0xa3, 0xca, 0xf3, 0x0e ) +#endif + +struct QWidgetContainerInterfacePrivate : public QUnknownInterface +{ +public: + virtual QWidget *containerOfWidget( QWidget *widget ) const = 0; + virtual QWidgetList containersOf( QWidget *widget ) const = 0; + virtual bool isPassiveInteractor( QWidget *widget ) const = 0; +}; +#endif + +#endif // QT_NO_WIDGETPLUGIN +#endif // QWIDGETINTERFACE_H diff --git a/qmake/include/private/qwidgetresizehandler_p.h b/qmake/include/private/qwidgetresizehandler_p.h new file mode 100644 index 0000000..ca229db --- a/dev/null +++ b/qmake/include/private/qwidgetresizehandler_p.h @@ -0,0 +1,113 @@ +/**************************************************************************** +** $Id$ +** +** Definition of the QWidgetResizeHandler class +** +** Created : 001010 +** +** Copyright (C) 1992-2000 Trolltech AS. All rights reserved. +** +** This file is part of the workspace module of the Qt GUI Toolkit. +** +** This file may be distributed under the terms of the Q Public License +** as defined by Trolltech AS of Norway and appearing in the file +** LICENSE.QPL included in the packaging of this file. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** Licensees holding valid Qt Enterprise Edition licenses may use this +** file in accordance with the Qt Commercial License Agreement provided +** with the Software. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for +** information about Qt Commercial License Agreements. +** See http://www.trolltech.com/qpl/ for QPL licensing information. +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#ifndef QWIDGETRESIZEHANDLER_H +#define QWIDGETRESIZEHANDLER_H + +#ifndef QT_H +#include "qobject.h" +#endif // QT_H +#ifndef QT_NO_RESIZEHANDLER +class QMouseEvent; +class QKeyEvent; + +class Q_EXPORT QWidgetResizeHandler : public QObject +{ + Q_OBJECT + +public: + QWidgetResizeHandler( QWidget *parent, QWidget *cw = 0, const char *name = 0 ); + void setActive( bool b ) { active = b; if ( !active ) setMouseCursor( Nowhere ); } + bool isActive() const { return active; } + void setMovingEnabled( bool b ) { moving = b; } + bool isMovingEnabled() const { return moving; } + + bool isButtonDown() const { return buttonDown; } + + void setExtraHeight( int h ) { extrahei = h; } + void setSizeProtection( bool b ) { sizeprotect = b; } + + void doResize(); + void doMove(); + +signals: + void activate(); + +protected: + bool eventFilter( QObject *o, QEvent *e ); + void mouseMoveEvent( QMouseEvent *e ); + void keyPressEvent( QKeyEvent *e ); + +private: + enum MousePosition { + Nowhere, + TopLeft, BottomRight, BottomLeft, TopRight, + Top, Bottom, Left, Right, + Center + }; + + QWidget *widget; + QWidget *childWidget; + QPoint moveOffset; + QPoint invertedMoveOffset; + MousePosition mode; + int extrahei; + int range; + uint buttonDown :1; + uint moveResizeMode :1; + uint active :1; + uint sizeprotect :1; + uint moving :1; + + void setMouseCursor( MousePosition m ); + bool isMove() const { + return moveResizeMode && mode == Center; + } + bool isResize() const { + return moveResizeMode && !isMove(); + } + +private: // Disabled copy constructor and operator= +#if defined(Q_DISABLE_COPY) + QWidgetResizeHandler( const QWidgetResizeHandler & ); + QWidgetResizeHandler& operator=( const QWidgetResizeHandler & ); +#endif + +}; + +#endif //QT_NO_RESIZEHANDLER +#endif |