diff options
Diffstat (limited to 'src/activeqt')
-rw-r--r-- | src/activeqt/activeqt.pro | 11 | ||||
-rw-r--r-- | src/activeqt/axshared.prx | 17 | ||||
-rw-r--r-- | src/activeqt/container/container.pro | 31 | ||||
-rw-r--r-- | src/activeqt/control/control.pro | 33 | ||||
-rw-r--r-- | src/activeqt/shared/qaxtypefunctions.cpp | 231 | ||||
-rw-r--r-- | src/activeqt/shared/qaxtypefunctions.h | 96 | ||||
-rw-r--r-- | src/activeqt/shared/qaxtypes.cpp | 185 | ||||
-rw-r--r-- | src/activeqt/shared/qaxtypes.h | 50 |
8 files changed, 387 insertions, 267 deletions
diff --git a/src/activeqt/activeqt.pro b/src/activeqt/activeqt.pro index c826882..b6d45e5 100644 --- a/src/activeqt/activeqt.pro +++ b/src/activeqt/activeqt.pro @@ -1,14 +1,7 @@ TEMPLATE = subdirs CONFIG += ordered -SUBDIRS = container +axshared.file = axshared.prx +SUBDIRS = axshared container !wince*: SUBDIRS += control -TARGET = ActiveQt -VERSION = $$QT_VERSION -MODULE = activeqt -MODULE_DEPENDS = widgets -MODULE_PRI = $$section(PWD, /, 0, -3)/modules/qt_activeqt.pri -load(qt_module_fwdpri) -load(qt_module_headers) -load(qt_installs) diff --git a/src/activeqt/axshared.prx b/src/activeqt/axshared.prx new file mode 100644 index 0000000..7a79216 --- /dev/null +++ b/src/activeqt/axshared.prx @@ -0,0 +1,17 @@ +# This modules provides the header files, installed under "ActiveQt/". +# It also contains shared code that is used by axcontainer and axserver. + +TARGET = ActiveQt +CONFIG += static +QT += gui-private + +HEADERS = \ + shared/qaxtypefunctions.h \ + shared/qaxutils_p.h + +SOURCES = \ + shared/qaxtypefunctions.cpp \ + shared/qaxutils.cpp + +MODULE = axbase +load(qt_module) diff --git a/src/activeqt/container/container.pro b/src/activeqt/container/container.pro index 66d4f87..07b4eb3 100644 --- a/src/activeqt/container/container.pro +++ b/src/activeqt/container/container.pro @@ -1,22 +1,7 @@ -TEMPLATE = lib TARGET = QAxContainer -CONFIG += create_prl -contains(QT_CONFIG, debug_and_release):CONFIG += debug_and_release -contains(QT_CONFIG, build_all):CONFIG += build_all - -!debug_and_release|build_pass { - CONFIG(debug, debug|release) { - TARGET = $$member(TARGET, 0)d - } -} - -INCLUDEPATH *= $$QT.activeqt.includes - -QT += core-private gui gui-private widgets widgets-private - -CONFIG += qt warn_on static -DESTDIR = $$QT.activeqt.libs +QT += core-private gui gui-private widgets widgets-private axbase +CONFIG += static LIBS += -lole32 -loleaut32 !wince*:LIBS += -luser32 -lgdi32 -ladvapi32 @@ -28,8 +13,7 @@ HEADERS = ../control/qaxaggregated.h \ qaxobject.h \ qaxscript.h \ qaxselect.h \ - ../shared/qaxtypes.h \ - ../shared/qaxutils_p.h + ../shared/qaxtypes.h SOURCES = qaxbase.cpp \ qaxdump.cpp \ @@ -38,9 +22,12 @@ SOURCES = qaxbase.cpp \ qaxscript.cpp \ qaxscriptwrapper.cpp \ qaxselect.cpp \ - ../shared/qaxtypes.cpp \ - ../shared/qaxutils.cpp + ../shared/qaxtypes.cpp FORMS = qaxselect.ui -load(qt_installs) +MODULE = axcontainer +MODULE_CONFIG = dumpcpp +CONFIG += no_module_headers +load(qt_module) +DEFINES -= QT_NO_CAST_TO_ASCII QT_USE_QSTRINGBUILDER diff --git a/src/activeqt/control/control.pro b/src/activeqt/control/control.pro index 157a2fa..41373e3 100644 --- a/src/activeqt/control/control.pro +++ b/src/activeqt/control/control.pro @@ -1,21 +1,7 @@ -TEMPLATE = lib TARGET = QAxServer -CONFIG += create_prl -contains(QT_CONFIG, debug_and_release):CONFIG += debug_and_release -contains(QT_CONFIG, build_all):CONFIG += build_all - -!debug_and_release|build_pass { - CONFIG(debug, debug|release) { - TARGET = $$member(TARGET, 0)d - } -} - -INCLUDEPATH *= $$QT.activeqt.includes - -QT += core-private gui-private widgets -CONFIG += qt warn_off static -DESTDIR = $$QT.activeqt.libs +QT += core-private gui-private widgets axbase +CONFIG += static DEFINES += QAX_SERVER win32-g++*:DEFINES += QT_NEEDS_QMAIN @@ -26,8 +12,7 @@ win32-g++*:LIBS += -luuid HEADERS = qaxaggregated.h \ qaxbindable.h \ qaxfactory.h \ - ../shared/qaxtypes.h \ - ../shared/qaxutils_p.h + ../shared/qaxtypes.h SOURCES = qaxserver.cpp \ qaxserverbase.cpp \ @@ -36,7 +21,11 @@ SOURCES = qaxserver.cpp \ qaxservermain.cpp \ qaxserverdll.cpp \ qaxmain.cpp \ - ../shared/qaxtypes.cpp \ - ../shared/qaxutils.cpp - -load(qt_installs) + ../shared/qaxtypes.cpp + +MODULE = axserver +MODULE_DEFINES = QAXSERVER +MODULE_CONFIG = idcidl +CONFIG += no_module_headers +load(qt_module) +DEFINES -= QT_NO_CAST_TO_ASCII QT_USE_QSTRINGBUILDER diff --git a/src/activeqt/shared/qaxtypefunctions.cpp b/src/activeqt/shared/qaxtypefunctions.cpp new file mode 100644 index 0000000..6bba5a0 --- /dev/null +++ b/src/activeqt/shared/qaxtypefunctions.cpp @@ -0,0 +1,231 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the ActiveQt framework of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names +** of its contributors may be used to endorse or promote products derived +** from this software without specific prior written permission. +** +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include <qt_windows.h> +#include "qaxtypefunctions.h" +#include <qcursor.h> +#include <qpixmap.h> +#include <qsize.h> +#include <qrect.h> +#include <qpoint.h> + +QT_BEGIN_NAMESPACE + +QColor OLEColorToQColor(uint col) +{ + return QColor(GetRValue(col),GetGValue(col),GetBValue(col)); +} + +/*! + Copies the data in \a var into \a data. + + Used by + + QAxServerBase: + - QAxServerBase::qt_metacall (update out parameters/return value) + + QAxBase: + - internalProperty(ReadProperty) + - internalInvoke(update out parameters/return value) + +*/ +bool QVariantToVoidStar(const QVariant &var, void *data, const QByteArray &typeName, uint type) +{ + if (!data) + return true; + + if (type == QMetaType::QVariant || type == QVariant::LastType || (type == 0 && typeName == "QVariant")) { + *(QVariant*)data = var; + return true; + } + + switch (var.type()) { + case QVariant::Invalid: + break; + case QVariant::String: + *(QString*)data = var.toString(); + break; + case QVariant::Int: + *(int*)data = var.toInt(); + break; + case QVariant::UInt: + *(uint*)data = var.toUInt(); + break; + case QVariant::Bool: + *(bool*)data = var.toBool(); + break; + case QVariant::Double: + *(double*)data = var.toDouble(); + break; + case QVariant::Color: + *(QColor*)data = qvariant_cast<QColor>(var); + break; + case QVariant::Date: + *(QDate*)data = var.toDate(); + break; + case QVariant::Time: + *(QTime*)data = var.toTime(); + break; + case QVariant::DateTime: + *(QDateTime*)data = var.toDateTime(); + break; + case QVariant::Font: + *(QFont*)data = qvariant_cast<QFont>(var); + break; + case QVariant::Pixmap: + *(QPixmap*)data = qvariant_cast<QPixmap>(var); + break; +#ifndef QT_NO_CURSOR + case QVariant::Cursor: + *(QCursor*)data = qvariant_cast<QCursor>(var); + break; +#endif + case QVariant::List: + *(QList<QVariant>*)data = var.toList(); + break; + case QVariant::StringList: + *(QStringList*)data = var.toStringList(); + break; + case QVariant::ByteArray: + *(QByteArray*)data = var.toByteArray(); + break; + case QVariant::LongLong: + *(qint64*)data = var.toLongLong(); + break; + case QVariant::ULongLong: + *(quint64*)data = var.toULongLong(); + break; + case QVariant::Rect: + *(QRect*)data = var.toRect(); + break; + case QVariant::Size: + *(QSize*)data = var.toSize(); + break; + case QVariant::Point: + *(QPoint*)data = var.toPoint(); + break; + case QVariant::UserType: + *(void**)data = *(void**)var.constData(); +// qVariantGet(var, *(void**)data, typeName); + break; + default: + qWarning("QVariantToVoidStar: Unhandled QVariant type"); + return false; + } + + return true; +} + +void clearVARIANT(VARIANT *var) +{ + if (var->vt & VT_BYREF) { + switch (var->vt) { + case VT_BSTR|VT_BYREF: + SysFreeString(*var->pbstrVal); + delete var->pbstrVal; + break; + case VT_BOOL|VT_BYREF: + delete var->pboolVal; + break; + case VT_I1|VT_BYREF: + delete var->pcVal; + break; + case VT_I2|VT_BYREF: + delete var->piVal; + break; + case VT_I4|VT_BYREF: + delete var->plVal; + break; + case VT_INT|VT_BYREF: + delete var->pintVal; + break; + case VT_UI1|VT_BYREF: + delete var->pbVal; + break; + case VT_UI2|VT_BYREF: + delete var->puiVal; + break; + case VT_UI4|VT_BYREF: + delete var->pulVal; + break; + case VT_UINT|VT_BYREF: + delete var->puintVal; + break; +#if !defined(Q_OS_WINCE) && defined(_MSC_VER) && _MSC_VER >= 1400 + case VT_I8|VT_BYREF: + delete var->pllVal; + break; + case VT_UI8|VT_BYREF: + delete var->pullVal; + break; +#endif + case VT_CY|VT_BYREF: + delete var->pcyVal; + break; + case VT_R4|VT_BYREF: + delete var->pfltVal; + break; + case VT_R8|VT_BYREF: + delete var->pdblVal; + break; + case VT_DATE|VT_BYREF: + delete var->pdate; + break; + case VT_DISPATCH|VT_BYREF: + (*var->ppdispVal)->Release(); + delete var->ppdispVal; + break; + case VT_ARRAY|VT_VARIANT|VT_BYREF: + case VT_ARRAY|VT_UI1|VT_BYREF: + case VT_ARRAY|VT_BSTR|VT_BYREF: + SafeArrayDestroy(*var->pparray); + delete var->pparray; + break; + case VT_VARIANT|VT_BYREF: + delete var->pvarVal; + break; + } + VariantInit(var); + } else { + VariantClear(var); + } +} + +QT_END_NAMESPACE diff --git a/src/activeqt/shared/qaxtypefunctions.h b/src/activeqt/shared/qaxtypefunctions.h new file mode 100644 index 0000000..7bd61c9 --- /dev/null +++ b/src/activeqt/shared/qaxtypefunctions.h @@ -0,0 +1,96 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the ActiveQt framework of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names +** of its contributors may be used to endorse or promote products derived +** from this software without specific prior written permission. +** +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** +** $QT_END_LICENSE$ +** +****************************************************************************/ +#ifndef QAXTYPEFUNCTIONS_P_H +#define QAXTYPEFUNCTIONS_P_H + +#if !defined(_WINDOWS_) && !defined(_WINDOWS_H) && !defined(__WINDOWS__) +#error Must include windows.h first! +#endif + +#include <QtGui/qcolor.h> +#include <QtGui/qfont.h> +#include <QtCore/qdatetime.h> +#include <QtCore/qvariant.h> + +QT_BEGIN_HEADER + +QT_BEGIN_NAMESPACE + +#ifndef QT_NO_WIN_ACTIVEQT + +extern GUID IID_IAxServerBase; +struct IAxServerBase : public IUnknown +{ + virtual IUnknown *clientSite() const = 0; + virtual void emitPropertyChanged(const char*) = 0; + virtual bool emitRequestPropertyChange(const char*) = 0; + virtual QObject *qObject() const = 0; + virtual void reportError(int code, const QString &src, const QString &desc, const QString &context) = 0; +}; + +#define HIMETRIC_PER_INCH 2540 +#define MAP_PIX_TO_LOGHIM(x,ppli) ((HIMETRIC_PER_INCH*(x) + ((ppli)>>1)) / (ppli)) +#define MAP_LOGHIM_TO_PIX(x,ppli) (((ppli)*(x) + HIMETRIC_PER_INCH/2) / HIMETRIC_PER_INCH) +#define QAX_NUM_PARAMS 8 + +static inline BSTR QStringToBSTR(const QString &str) +{ + return SysAllocStringLen((OLECHAR*)str.unicode(), str.length()); +} + +static inline uint QColorToOLEColor(const QColor &col) +{ + return qRgba(col.blue(), col.green(), col.red(), 0x00); +} + +extern QColor OLEColorToQColor(uint col); +extern bool QVariantToVoidStar(const QVariant &var, void *data, const QByteArray &typeName, uint type = 0); +extern void clearVARIANT(VARIANT *var); + +#define QAX_INPROC_SERVER (0x51540001) +#define QAX_OUTPROC_SERVER (0x51540002) + +QT_END_NAMESPACE + +#endif // QT_NO_WIN_ACTIVEQT + +QT_END_HEADER + +#endif // QAXTYPEFUNCTIONS_P_H diff --git a/src/activeqt/shared/qaxtypes.cpp b/src/activeqt/shared/qaxtypes.cpp index 24f048e..bca9430 100644 --- a/src/activeqt/shared/qaxtypes.cpp +++ b/src/activeqt/shared/qaxtypes.cpp @@ -63,6 +63,8 @@ QT_BEGIN_NAMESPACE #ifdef QAX_SERVER +# define QVariantToVARIANT QVariantToVARIANT_server +# define VARIANTToQVariant VARIANTToQVariant_server extern ITypeLib *qAxTypeLibrary; CLSID CLSID_QRect = { 0x34030f30, 0xe359, 0x4fe6, {0xab, 0x82, 0x39, 0x76, 0x6f, 0x5d, 0x91, 0xee } }; @@ -71,6 +73,8 @@ CLSID CLSID_QPoint = { 0x3be838a3, 0x3fac, 0xbfc4, {0x4c, 0x6c, 0x37, 0xc4, 0x4d GUID IID_IAxServerBase = { 0xbd2ec165, 0xdfc9, 0x4319, { 0x8b, 0x9b, 0x60, 0xa5, 0x74, 0x78, 0xe9, 0xe3} }; #else +# define QVariantToVARIANT QVariantToVARIANT_container +# define VARIANTToQVariant VARIANTToQVariant_container extern void *qax_createObjectWrapper(int metaType, IUnknown *iface); #endif @@ -215,11 +219,6 @@ static DATE QDateTimeToDATE(const QDateTime &dt) return vtime; } -QColor OLEColorToQColor(uint col) -{ - return QColor(GetRValue(col),GetGValue(col),GetBValue(col)); -} - /* Converts \a var to \a arg, and tries to coerce \a arg to \a type. @@ -796,106 +795,6 @@ bool QVariantToVARIANT(const QVariant &var, VARIANT &arg, const QByteArray &type Q_ASSERT(!out || (arg.vt & VT_BYREF)); return true; } - -/*! - Copies the data in \a var into \a data. - - Used by - - QAxServerBase: - - QAxServerBase::qt_metacall (update out parameters/return value) - - QAxBase: - - internalProperty(ReadProperty) - - internalInvoke(update out parameters/return value) - -*/ -bool QVariantToVoidStar(const QVariant &var, void *data, const QByteArray &typeName, uint type) -{ - if (!data) - return true; - - if (type == QMetaType::QVariant || type == QVariant::LastType || (type == 0 && typeName == "QVariant")) { - *(QVariant*)data = var; - return true; - } - - switch (var.type()) { - case QVariant::Invalid: - break; - case QVariant::String: - *(QString*)data = var.toString(); - break; - case QVariant::Int: - *(int*)data = var.toInt(); - break; - case QVariant::UInt: - *(uint*)data = var.toUInt(); - break; - case QVariant::Bool: - *(bool*)data = var.toBool(); - break; - case QVariant::Double: - *(double*)data = var.toDouble(); - break; - case QVariant::Color: - *(QColor*)data = qvariant_cast<QColor>(var); - break; - case QVariant::Date: - *(QDate*)data = var.toDate(); - break; - case QVariant::Time: - *(QTime*)data = var.toTime(); - break; - case QVariant::DateTime: - *(QDateTime*)data = var.toDateTime(); - break; - case QVariant::Font: - *(QFont*)data = qvariant_cast<QFont>(var); - break; - case QVariant::Pixmap: - *(QPixmap*)data = qvariant_cast<QPixmap>(var); - break; -#ifndef QT_NO_CURSOR - case QVariant::Cursor: - *(QCursor*)data = qvariant_cast<QCursor>(var); - break; -#endif - case QVariant::List: - *(QList<QVariant>*)data = var.toList(); - break; - case QVariant::StringList: - *(QStringList*)data = var.toStringList(); - break; - case QVariant::ByteArray: - *(QByteArray*)data = var.toByteArray(); - break; - case QVariant::LongLong: - *(qint64*)data = var.toLongLong(); - break; - case QVariant::ULongLong: - *(quint64*)data = var.toULongLong(); - break; - case QVariant::Rect: - *(QRect*)data = var.toRect(); - break; - case QVariant::Size: - *(QSize*)data = var.toSize(); - break; - case QVariant::Point: - *(QPoint*)data = var.toPoint(); - break; - case QVariant::UserType: - *(void**)data = *(void**)var.constData(); -// qVariantGet(var, *(void**)data, typeName); - break; - default: - qWarning("QVariantToVoidStar: Unhandled QVariant type"); - return false; - } - - return true; -} /*! Returns \a arg as a QVariant of type \a type. @@ -1408,80 +1307,6 @@ QVariant VARIANTToQVariant(const VARIANT &arg, const QByteArray &typeName, uint return var; } -void clearVARIANT(VARIANT *var) -{ - if (var->vt & VT_BYREF) { - switch(var->vt) { - case VT_BSTR|VT_BYREF: - SysFreeString(*var->pbstrVal); - delete var->pbstrVal; - break; - case VT_BOOL|VT_BYREF: - delete var->pboolVal; - break; - case VT_I1|VT_BYREF: - delete var->pcVal; - break; - case VT_I2|VT_BYREF: - delete var->piVal; - break; - case VT_I4|VT_BYREF: - delete var->plVal; - break; - case VT_INT|VT_BYREF: - delete var->pintVal; - break; - case VT_UI1|VT_BYREF: - delete var->pbVal; - break; - case VT_UI2|VT_BYREF: - delete var->puiVal; - break; - case VT_UI4|VT_BYREF: - delete var->pulVal; - break; - case VT_UINT|VT_BYREF: - delete var->puintVal; - break; -#if !defined(Q_OS_WINCE) && defined(_MSC_VER) && _MSC_VER >= 1400 - case VT_I8|VT_BYREF: - delete var->pllVal; - break; - case VT_UI8|VT_BYREF: - delete var->pullVal; - break; -#endif - case VT_CY|VT_BYREF: - delete var->pcyVal; - break; - case VT_R4|VT_BYREF: - delete var->pfltVal; - break; - case VT_R8|VT_BYREF: - delete var->pdblVal; - break; - case VT_DATE|VT_BYREF: - delete var->pdate; - break; - case VT_DISPATCH|VT_BYREF: - (*var->ppdispVal)->Release(); - delete var->ppdispVal; - break; - case VT_ARRAY|VT_VARIANT|VT_BYREF: - case VT_ARRAY|VT_UI1|VT_BYREF: - case VT_ARRAY|VT_BSTR|VT_BYREF: - SafeArrayDestroy(*var->pparray); - delete var->pparray; - break; - case VT_VARIANT|VT_BYREF: - delete var->pvarVal; - break; - } - VariantInit(var); - } else { - VariantClear(var); - } -} - QT_END_NAMESPACE + #endif // QT_NO_WIN_ACTIVEQT diff --git a/src/activeqt/shared/qaxtypes.h b/src/activeqt/shared/qaxtypes.h index 91a02da..692a50d 100644 --- a/src/activeqt/shared/qaxtypes.h +++ b/src/activeqt/shared/qaxtypes.h @@ -41,14 +41,7 @@ #ifndef QAXTYPES_H #define QAXTYPES_H -#if !defined(_WINDOWS_) && !defined(_WINDOWS_H) && !defined(__WINDOWS__) -#error Must include windows.h first! -#endif - -#include <QtGui/qcolor.h> -#include <QtGui/qfont.h> -#include <QtCore/qdatetime.h> -#include <QtCore/qvariant.h> +#include "qaxtypefunctions.h" QT_BEGIN_HEADER @@ -56,40 +49,29 @@ QT_BEGIN_NAMESPACE #ifndef QT_NO_WIN_ACTIVEQT -extern GUID IID_IAxServerBase; -struct IAxServerBase : public IUnknown -{ - virtual IUnknown *clientSite() const = 0; - virtual void emitPropertyChanged(const char*) = 0; - virtual bool emitRequestPropertyChange(const char*) = 0; - virtual QObject *qObject() const = 0; - virtual void reportError(int code, const QString &src, const QString &desc, const QString &context) = 0; -}; +#ifdef QAX_SERVER +# define QVariantToVARIANTFunc QVariantToVARIANT_server +# define VARIANTToQVariantFunc VARIANTToQVariant_server +#else +# define QVariantToVARIANTFunc QVariantToVARIANT_container +# define VARIANTToQVariantFunc VARIANTToQVariant_container +#endif -#define HIMETRIC_PER_INCH 2540 -#define MAP_PIX_TO_LOGHIM(x,ppli) ((HIMETRIC_PER_INCH*(x) + ((ppli)>>1)) / (ppli)) -#define MAP_LOGHIM_TO_PIX(x,ppli) (((ppli)*(x) + HIMETRIC_PER_INCH/2) / HIMETRIC_PER_INCH) -#define QAX_NUM_PARAMS 8 +extern bool QVariantToVARIANTFunc(const QVariant &var, VARIANT &arg, const QByteArray &typeName = 0, bool out = false); +extern QVariant VARIANTToQVariantFunc(const VARIANT &arg, const QByteArray &typeName, uint type = 0); -static inline BSTR QStringToBSTR(const QString &str) +inline bool QVariantToVARIANT(const QVariant &var, VARIANT &arg, const QByteArray &typeName = 0, bool out = false) { - return SysAllocStringLen((OLECHAR*)str.unicode(), str.length()); + return QVariantToVARIANTFunc(var, arg, typeName, out); } -static inline uint QColorToOLEColor(const QColor &col) +inline QVariant VARIANTToQVariant(const VARIANT &arg, const QByteArray &typeName, uint type = 0) { - return qRgba(col.blue(), col.green(), col.red(), 0x00); + return VARIANTToQVariantFunc(arg, typeName, type); } -extern QColor OLEColorToQColor(uint col); - -extern bool QVariantToVARIANT(const QVariant &var, VARIANT &arg, const QByteArray &typeName = 0, bool out = false); -extern QVariant VARIANTToQVariant(const VARIANT &arg, const QByteArray &typeName, uint type = 0); -extern bool QVariantToVoidStar(const QVariant &var, void *data, const QByteArray &typeName, uint type = 0); -extern void clearVARIANT(VARIANT *var); - -#define QAX_INPROC_SERVER (0x51540001) -#define QAX_OUTPROC_SERVER (0x51540002) +#undef QVariantToVARIANTFunc +#undef VARIANTToQVariantFunc QT_END_NAMESPACE #endif // QT_NO_WIN_ACTIVEQT |