diff options
author | Rafael Roquetto <rafael.roquetto.qnx@kdab.com> | 2015-09-21 14:54:00 +0000 |
---|---|---|
committer | Louai Al-Khanji <louai.al-khanji@theqtcompany.com> | 2015-11-19 15:43:53 +0000 |
commit | 986a5262e3e753958a6ec9058eb7332d44a9065f (patch) | |
tree | 5c097e240cafb439ab10fd0127180ccaeaad9676 /src/widgets/styles/qpixmapstyle_p_p.h | |
parent | 3d93fb077109e2190ca5f2c7ad04a46768ccad50 (diff) |
Add QPixmapStyle class
The QPixmapStyle class provides a mechanism for implementing pixmap based
QStyles, using the same concept introduced by the BorderImage QML component.
The bb10style plugin in qtstyleplugins uses this class and is currently the
only user.
Change-Id: Ibfa2104e95ba6a91e89a6277baa97a7fc9edaec2
Done-with: Louai Al-Khanji <louai.al-khanji@theqtcompany.com>
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@theqtcompany.com>
Diffstat (limited to 'src/widgets/styles/qpixmapstyle_p_p.h')
-rw-r--r-- | src/widgets/styles/qpixmapstyle_p_p.h | 86 |
1 files changed, 86 insertions, 0 deletions
diff --git a/src/widgets/styles/qpixmapstyle_p_p.h b/src/widgets/styles/qpixmapstyle_p_p.h new file mode 100644 index 0000000000..6fb274d3a5 --- /dev/null +++ b/src/widgets/styles/qpixmapstyle_p_p.h @@ -0,0 +1,86 @@ +/**************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the QtWidgets module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL21$ +** 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 The Qt Company. For licensing terms +** and conditions see http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/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 or version 3 as published by the Free +** Software Foundation and appearing in the file LICENSE.LGPLv21 and +** LICENSE.LGPLv3 included in the packaging of this file. Please review the +** following information to ensure the GNU Lesser General Public License +** requirements will be met: https://www.gnu.org/licenses/lgpl.html and +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** As a special exception, The Qt Company gives you certain additional +** rights. These rights are described in The Qt Company LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QPIXMAPSTYLE_P_H +#define QPIXMAPSTYLE_P_H + +#include "qpixmapstyle_p.h" +#include "qcommonstyle_p.h" + +QT_BEGIN_NAMESPACE + +// +// 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. +// + +struct QPixmapStyleDescriptor +{ + QString fileName; + QSize size; + QMargins margins; + QTileRules tileRules; +}; + +struct QPixmapStylePixmap +{ + QPixmap pixmap; + QMargins margins; +}; + +class QPixmapStylePrivate : public QCommonStylePrivate +{ + Q_DECLARE_PUBLIC(QPixmapStyle) + +public: + QHash<QPixmapStyle::ControlDescriptor, QPixmapStyleDescriptor> descriptors; + QHash<QPixmapStyle::ControlPixmap, QPixmapStylePixmap> pixmaps; + + static QPixmap scale(int w, int h, const QPixmap &pixmap, const QPixmapStyleDescriptor &desc); + + QPixmap getCachedPixmap(QPixmapStyle::ControlDescriptor control, + const QPixmapStyleDescriptor &desc, + const QSize &size) const; + + QSize computeSize(const QPixmapStyleDescriptor &desc, int width, int height) const; +}; + +QT_END_NAMESPACE + +#endif // QPIXMAPSTYLE_P_H |