aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorIvan Vizir <define-true-false@yandex.com>2013-02-25 11:10:21 +0200
committerFriedemann Kleint <Friedemann.Kleint@digia.com>2013-02-26 17:04:42 +0100
commit61382ae58b46e2bc8161eaade234286a3ff2b992 (patch)
tree32c7177cb14b681207c673c574c5944580035655
parent9c0ae2c6a2919935a001f02b5d9ebd59f50fd523 (diff)
Windows type conversion functions.
Change-Id: Iedde8c1736bac01c1615a74b4d768eb3dc97a651 Reviewed-by: Laszlo Papp <lpapp@kde.org> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
-rw-r--r--.gitignore20
-rw-r--r--.qmake.conf1
-rw-r--r--README0
-rw-r--r--qtwinextras.pro1
-rw-r--r--src/src.pro2
-rw-r--r--src/winextras/qtwinextrasglobal.h57
-rw-r--r--src/winextras/qtwinfunctions.cpp170
-rw-r--r--src/winextras/qtwinfunctions.h75
-rw-r--r--src/winextras/winextras.pro10
-rw-r--r--sync.profile7
10 files changed, 343 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..16b4ee5
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,20 @@
+# C++ objects and libs
+
+*.slo
+*.lo
+*.o
+*.a
+*.la
+*.lai
+*.so
+*.dll
+*.dylib
+
+# Qt-es
+
+*.pro.user
+*.pro.user.*
+moc_*.cpp
+qrc_*.cpp
+Makefile
+*-build-*
diff --git a/.qmake.conf b/.qmake.conf
new file mode 100644
index 0000000..42ba8e4
--- /dev/null
+++ b/.qmake.conf
@@ -0,0 +1 @@
+load(qt_build_config)
diff --git a/README b/README
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/README
diff --git a/qtwinextras.pro b/qtwinextras.pro
new file mode 100644
index 0000000..58c33f2
--- /dev/null
+++ b/qtwinextras.pro
@@ -0,0 +1 @@
+load(qt_parts)
diff --git a/src/src.pro b/src/src.pro
new file mode 100644
index 0000000..7ab303c
--- /dev/null
+++ b/src/src.pro
@@ -0,0 +1,2 @@
+TEMPLATE = subdirs
+win32:SUBDIRS += winextras
diff --git a/src/winextras/qtwinextrasglobal.h b/src/winextras/qtwinextrasglobal.h
new file mode 100644
index 0000000..b942ee3
--- /dev/null
+++ b/src/winextras/qtwinextrasglobal.h
@@ -0,0 +1,57 @@
+/****************************************************************************
+ **
+ ** Copyright (C) 2013 Ivan Vizir <define-true-false@yandex.com>
+ ** Contact: http://www.qt-project.org/legal
+ **
+ ** This file is part of QtWinExtras in the Qt Toolkit.
+ **
+ ** $QT_BEGIN_LICENSE:LGPL$
+ ** Commercial License Usage
+ ** Licensees holding valid commercial Qt licenses may use this file in
+ ** accordance with the commercial license agreement provided with the
+ ** Software or, alternatively, in accordance with the terms contained in
+ ** a written agreement between you and Digia. For licensing terms and
+ ** conditions see http://qt.digia.com/licensing. For further information
+ ** use the contact form at http://qt.digia.com/contact-us.
+ **
+ ** GNU Lesser General Public License Usage
+ ** Alternatively, this file may be used under the terms of the GNU Lesser
+ ** General Public License version 2.1 as published by the Free Software
+ ** Foundation and appearing in the file LICENSE.LGPL included in the
+ ** packaging of this file. Please review the following information to
+ ** ensure the GNU Lesser General Public License version 2.1 requirements
+ ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+ **
+ ** In addition, as a special exception, Digia gives you certain additional
+ ** rights. These rights are described in the Digia Qt LGPL Exception
+ ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+ **
+ ** GNU General Public License Usage
+ ** Alternatively, this file may be used under the terms of the GNU
+ ** General Public License version 3.0 as published by the Free Software
+ ** Foundation and appearing in the file LICENSE.GPL included in the
+ ** packaging of this file. Please review the following information to
+ ** ensure the GNU General Public License version 3.0 requirements will be
+ ** met: http://www.gnu.org/copyleft/gpl.html.
+ **
+ **
+ ** $QT_END_LICENSE$
+ **
+ ****************************************************************************/
+
+#ifndef QTWINEXTRAS_GLOBAL_H
+#define QTWINEXTRAS_GLOBAL_H
+
+#include <QtCore/qglobal.h>
+
+QT_BEGIN_NAMESPACE
+
+#if defined(QT_BUILD_WINEXTRAS_LIB)
+# define QTWINEXTRAS_EXPORT Q_DECL_EXPORT
+#else
+# define QTWINEXTRAS_EXPORT Q_DECL_IMPORT
+#endif
+
+QT_END_NAMESPACE
+
+#endif // QTWINEXTRAS_GLOBAL_H
diff --git a/src/winextras/qtwinfunctions.cpp b/src/winextras/qtwinfunctions.cpp
new file mode 100644
index 0000000..67dbb50
--- /dev/null
+++ b/src/winextras/qtwinfunctions.cpp
@@ -0,0 +1,170 @@
+/****************************************************************************
+ **
+ ** Copyright (C) 2013 Ivan Vizir <define-true-false@yandex.com>
+ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
+ ** Contact: http://www.qt-project.org/legal
+ **
+ ** This file is part of QtWinExtras in the Qt Toolkit.
+ **
+ ** $QT_BEGIN_LICENSE:LGPL$
+ ** Commercial License Usage
+ ** Licensees holding valid commercial Qt licenses may use this file in
+ ** accordance with the commercial license agreement provided with the
+ ** Software or, alternatively, in accordance with the terms contained in
+ ** a written agreement between you and Digia. For licensing terms and
+ ** conditions see http://qt.digia.com/licensing. For further information
+ ** use the contact form at http://qt.digia.com/contact-us.
+ **
+ ** GNU Lesser General Public License Usage
+ ** Alternatively, this file may be used under the terms of the GNU Lesser
+ ** General Public License version 2.1 as published by the Free Software
+ ** Foundation and appearing in the file LICENSE.LGPL included in the
+ ** packaging of this file. Please review the following information to
+ ** ensure the GNU Lesser General Public License version 2.1 requirements
+ ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+ **
+ ** In addition, as a special exception, Digia gives you certain additional
+ ** rights. These rights are described in the Digia Qt LGPL Exception
+ ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+ **
+ ** GNU General Public License Usage
+ ** Alternatively, this file may be used under the terms of the GNU
+ ** General Public License version 3.0 as published by the Free Software
+ ** Foundation and appearing in the file LICENSE.GPL included in the
+ ** packaging of this file. Please review the following information to
+ ** ensure the GNU General Public License version 3.0 requirements will be
+ ** met: http://www.gnu.org/copyleft/gpl.html.
+ **
+ **
+ ** $QT_END_LICENSE$
+ **
+ ****************************************************************************/
+
+#include "qtwinfunctions.h"
+#include <QPixmap>
+#include <QBitmap>
+#include <QImage>
+
+QT_BEGIN_NAMESPACE
+
+Q_GUI_EXPORT HBITMAP qt_createIconMask(const QBitmap &bitmap);
+Q_GUI_EXPORT HBITMAP qt_pixmapToWinHBITMAP(const QPixmap &p, int hbitmapFormat = 0);
+Q_GUI_EXPORT QPixmap qt_pixmapFromWinHBITMAP(HBITMAP bitmap, int hbitmapFormat = 0);
+Q_GUI_EXPORT HICON qt_pixmapToWinHICON(const QPixmap &p);
+Q_GUI_EXPORT QImage qt_imageFromWinHBITMAP(HDC hdc, HBITMAP bitmap, int w, int h);
+Q_GUI_EXPORT QPixmap qt_pixmapFromWinHICON(HICON icon);
+
+namespace Qt
+{
+
+/*!
+ \since 5.1
+
+ Creates a \c HBITMAP equivalent of the QBitmap.
+
+ It is the caller's responsibility to free the \c HBITMAP data after use.
+
+ \sa toWinHBITMAP()
+*/
+HBITMAP createWinIconMask(const QBitmap &bitmap)
+{
+ return qt_createIconMask(bitmap);
+}
+
+/*!
+ \since 5.1
+
+ Creates a \c HBITMAP equivalent to the QPixmap,
+ based on the given \a format. Returns the \c HBITMAP handle.
+
+ It is the caller's responsibility to free the \c HBITMAP data
+ after use.
+
+ \sa fromWinHBITMAP()
+*/
+HBITMAP toWinHBITMAP(const QPixmap &p, HBitmapFormat format)
+{
+ return qt_pixmapToWinHBITMAP(p, format);
+}
+
+/*!
+ \since 5.1
+
+ Returns a QPixmap that is equivalent to the
+ given \a bitmap. The conversion is based on the specified \a format.
+
+ \sa toWinHBITMAP()
+*/
+QPixmap fromWinHBITMAP(HBITMAP bitmap, HBitmapFormat format)
+{
+ return qt_pixmapFromWinHBITMAP(bitmap, format);
+}
+
+/*!
+ \since 5.1
+
+ Creates a \c HICON equivalent to the QPixmap.
+ Returns the \c HICON handle.
+
+ It is the caller's responsibility to free the \c HICON data after use.
+
+ \sa fromWinHICON()
+*/
+HICON toWinHICON(const QPixmap &p)
+{
+ return qt_pixmapToWinHICON(p);
+}
+
+/*!
+ \since 5.1
+
+ Returns a QImage that is equivalent to the
+ given \a bitmap. The conversion is based on the specified \c HDC context.
+
+ \sa toWinHBITMAP()
+*/
+QImage imageFromWinHBITMAP(HDC hdc, HBITMAP bitmap, int w, int h)
+{
+ return qt_imageFromWinHBITMAP(hdc, bitmap, w, h);
+}
+
+/*!
+ \since 5.1
+
+ Returns a QPixmap that is equivalent to the given \a icon.
+
+ \sa toWinHICON()
+*/
+QPixmap fromWinHICON(HICON icon)
+{
+ return qt_pixmapFromWinHICON(icon);
+}
+
+} // namespace Qt
+
+/*!
+ \enum Qt::HBitmapFormat
+
+ \since 5.1
+
+ This enum defines how the conversion between \c
+ HBITMAP and QPixmap is performed.
+
+ \warning This enum is only available on Windows.
+
+ \value HBitmapNoAlpha The alpha channel is ignored and always treated as
+ being set to fully opaque. This is preferred if the \c HBITMAP is
+ used with standard GDI calls, such as \c BitBlt().
+
+ \value HBitmapPremultipliedAlpha The \c HBITMAP is treated as having an
+ alpha channel and premultiplied colors. This is preferred if the
+ \c HBITMAP is accessed through the \c AlphaBlend() GDI function.
+
+ \value HBitmapAlpha The \c HBITMAP is treated as having a plain alpha
+ channel. This is the preferred format if the \c HBITMAP is going
+ to be used as an application icon or systray icon.
+
+ \sa fromWinHBITMAP(), toWinHBITMAP()
+*/
+
+QT_END_NAMESPACE
diff --git a/src/winextras/qtwinfunctions.h b/src/winextras/qtwinfunctions.h
new file mode 100644
index 0000000..e56a9ea
--- /dev/null
+++ b/src/winextras/qtwinfunctions.h
@@ -0,0 +1,75 @@
+/****************************************************************************
+ **
+ ** Copyright (C) 2013 Ivan Vizir <define-true-false@yandex.com>
+ ** Contact: http://www.qt-project.org/legal
+ **
+ ** This file is part of QtWinExtras in the Qt Toolkit.
+ **
+ ** $QT_BEGIN_LICENSE:LGPL$
+ ** Commercial License Usage
+ ** Licensees holding valid commercial Qt licenses may use this file in
+ ** accordance with the commercial license agreement provided with the
+ ** Software or, alternatively, in accordance with the terms contained in
+ ** a written agreement between you and Digia. For licensing terms and
+ ** conditions see http://qt.digia.com/licensing. For further information
+ ** use the contact form at http://qt.digia.com/contact-us.
+ **
+ ** GNU Lesser General Public License Usage
+ ** Alternatively, this file may be used under the terms of the GNU Lesser
+ ** General Public License version 2.1 as published by the Free Software
+ ** Foundation and appearing in the file LICENSE.LGPL included in the
+ ** packaging of this file. Please review the following information to
+ ** ensure the GNU Lesser General Public License version 2.1 requirements
+ ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+ **
+ ** In addition, as a special exception, Digia gives you certain additional
+ ** rights. These rights are described in the Digia Qt LGPL Exception
+ ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+ **
+ ** GNU General Public License Usage
+ ** Alternatively, this file may be used under the terms of the GNU
+ ** General Public License version 3.0 as published by the Free Software
+ ** Foundation and appearing in the file LICENSE.GPL included in the
+ ** packaging of this file. Please review the following information to
+ ** ensure the GNU General Public License version 3.0 requirements will be
+ ** met: http://www.gnu.org/copyleft/gpl.html.
+ **
+ **
+ ** $QT_END_LICENSE$
+ **
+ ****************************************************************************/
+
+#ifndef QWINFUNCTIONS_H
+#define QWINFUNCTIONS_H
+
+#include <QtWinExtras/qtwinextrasglobal.h>
+#include <QtCore/qt_windows.h>
+
+QT_BEGIN_NAMESPACE
+
+class QPixmap;
+class QImage;
+class QBitmap;
+
+namespace Qt
+{
+
+enum HBitmapFormat
+{
+ HBitmapNoAlpha,
+ HBitmapPremultipliedAlpha,
+ HBitmapAlpha
+};
+
+HBITMAP QTWINEXTRAS_EXPORT createWinIconMask(const QBitmap &bitmap);
+HBITMAP QTWINEXTRAS_EXPORT toWinHBITMAP(const QPixmap &p, HBitmapFormat format = HBitmapNoAlpha);
+QPixmap QTWINEXTRAS_EXPORT fromWinHBITMAP(HBITMAP bitmap, HBitmapFormat format = HBitmapNoAlpha);
+HICON QTWINEXTRAS_EXPORT toWinHICON(const QPixmap &p);
+QImage QTWINEXTRAS_EXPORT imageFromWinHBITMAP(HDC hdc, HBITMAP bitmap, int w, int h);
+QPixmap QTWINEXTRAS_EXPORT fromWinHICON(HICON icon);
+
+}
+
+QT_END_NAMESPACE
+
+#endif // QWINFUNCTIONS_H
diff --git a/src/winextras/winextras.pro b/src/winextras/winextras.pro
new file mode 100644
index 0000000..7c070f1
--- /dev/null
+++ b/src/winextras/winextras.pro
@@ -0,0 +1,10 @@
+TARGET = QtWinExtras
+
+load(qt_module)
+
+SOURCES += \
+ qtwinfunctions.cpp
+
+HEADERS += \
+ qtwinfunctions.h \
+ qtwinextrasglobal.h
diff --git a/sync.profile b/sync.profile
new file mode 100644
index 0000000..eb2060f
--- /dev/null
+++ b/sync.profile
@@ -0,0 +1,7 @@
+%modules = (
+ "QtWinExtras" => "$basedir/src/winextras",
+);
+
+%dependencies = (
+ qtbase => "refs/heads/stable"
+);