From ea55f6042622cab5a584c692c3a9eec69cebec09 Mon Sep 17 00:00:00 2001 From: Lars Knoll Date: Tue, 3 May 2011 10:40:58 +0200 Subject: [PATCH] split the HexString template class out of qstylehelper The class is used in quite a few places and has no relation to styles. Split it out into it's own file to remove a dependency between Gui and Widgets. --- src/gui/image/qicon.cpp | 2 +- src/gui/image/qiconloader.cpp | 2 +- src/gui/image/qpixmap.cpp | 2 +- src/gui/kernel/kernel.pri | 1 + src/gui/kernel/qhexstring_p.h | 98 +++++++++++++++++++++++++++++++++++ src/gui/painting/qbrush.cpp | 2 +- src/gui/painting/qdrawutil.cpp | 2 +- src/gui/painting/qpaintengine_x11.cpp | 2 +- src/gui/painting/qpainter.cpp | 2 +- src/gui/styles/qstylehelper_p.h | 33 +----------- 10 files changed, 108 insertions(+), 38 deletions(-) create mode 100644 src/gui/kernel/qhexstring_p.h diff --git a/src/gui/image/qicon.cpp b/src/gui/image/qicon.cpp index 7182062..ffe7e30 100644 --- a/src/gui/image/qicon.cpp +++ b/src/gui/image/qicon.cpp @@ -66,7 +66,7 @@ #include "private/qkde_p.h" #endif -#include "private/qstylehelper_p.h" +#include "private/qhexstring_p.h" #ifndef QT_NO_ICON QT_BEGIN_NAMESPACE diff --git a/src/gui/image/qiconloader.cpp b/src/gui/image/qiconloader.cpp index 0a42f0a..c423397 100644 --- a/src/gui/image/qiconloader.cpp +++ b/src/gui/image/qiconloader.cpp @@ -63,7 +63,7 @@ #include #endif -#include +#include QT_BEGIN_NAMESPACE diff --git a/src/gui/image/qpixmap.cpp b/src/gui/image/qpixmap.cpp index 34804e5..ee16e1b 100644 --- a/src/gui/image/qpixmap.cpp +++ b/src/gui/image/qpixmap.cpp @@ -86,7 +86,7 @@ #endif #include "qpixmap_raster_p.h" -#include "private/qstylehelper_p.h" +#include "private/qhexstring_p.h" QT_BEGIN_NAMESPACE diff --git a/src/gui/kernel/kernel.pri b/src/gui/kernel/kernel.pri index 8547009..e02230c 100644 --- a/src/gui/kernel/kernel.pri +++ b/src/gui/kernel/kernel.pri @@ -49,6 +49,7 @@ HEADERS += \ kernel/qsoftkeymanager_p.h \ kernel/qsoftkeymanager_common_p.h \ kernel/qguiplatformplugin_p.h \ + kernel/qhexstring_p.h SOURCES += \ kernel/qaction.cpp \ diff --git a/src/gui/kernel/qhexstring_p.h b/src/gui/kernel/qhexstring_p.h new file mode 100644 index 0000000..3c8d562 --- /dev/null +++ b/src/gui/kernel/qhexstring_p.h @@ -0,0 +1,98 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the QtGui module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** No Commercial Usage +** This file contains pre-release code and may not be distributed. +** You may use this file in accordance with the terms and conditions +** contained in the Technology Preview License Agreement accompanying +** this package. +** +** 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, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** If you have questions regarding the use of this file, please contact +** Nokia at qt-info@nokia.com. +** +** +** +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include +#include +#include +#include +#include + +#ifndef QHEXSTRING_P_H +#define QHEXSTRING_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +QT_BEGIN_NAMESPACE + +// internal helper. Converts an integer value to an unique string token +template + struct HexString +{ + inline HexString(const T t) + : val(t) + {} + + inline void write(QChar *&dest) const + { + const ushort hexChars[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' }; + const char *c = reinterpret_cast(&val); + for (uint i = 0; i < sizeof(T); ++i) { + *dest++ = hexChars[*c & 0xf]; + *dest++ = hexChars[(*c & 0xf0) >> 4]; + ++c; + } + } + const T val; +}; + +// specialization to enable fast concatenating of our string tokens to a string +template + struct QConcatenable > +{ + typedef HexString type; + enum { ExactSize = true }; + static int size(const HexString &) { return sizeof(T) * 2; } + static inline void appendTo(const HexString &str, QChar *&out) { str.write(out); } + typedef QString ConvertTo; +}; + +QT_END_NAMESPACE + +#endif // QHEXSTRING_P_H diff --git a/src/gui/painting/qbrush.cpp b/src/gui/painting/qbrush.cpp index bf5764a..538128c 100644 --- a/src/gui/painting/qbrush.cpp +++ b/src/gui/painting/qbrush.cpp @@ -48,7 +48,7 @@ #include "qline.h" #include "qdebug.h" #include -#include "private/qstylehelper_p.h" +#include "private/qhexstring_p.h" #include QT_BEGIN_NAMESPACE diff --git a/src/gui/painting/qdrawutil.cpp b/src/gui/painting/qdrawutil.cpp index 89474d9..e4094a8 100644 --- a/src/gui/painting/qdrawutil.cpp +++ b/src/gui/painting/qdrawutil.cpp @@ -48,7 +48,7 @@ #include #include #include -#include +#include QT_BEGIN_NAMESPACE diff --git a/src/gui/painting/qpaintengine_x11.cpp b/src/gui/painting/qpaintengine_x11.cpp index 94828fb..1256996 100644 --- a/src/gui/painting/qpaintengine_x11.cpp +++ b/src/gui/painting/qpaintengine_x11.cpp @@ -79,7 +79,7 @@ #include #endif -#include +#include QT_BEGIN_NAMESPACE diff --git a/src/gui/painting/qpainter.cpp b/src/gui/painting/qpainter.cpp index 9fafba5..785d561 100644 --- a/src/gui/painting/qpainter.cpp +++ b/src/gui/painting/qpainter.cpp @@ -74,7 +74,7 @@ #include #include #include -#include +#include #include QT_BEGIN_NAMESPACE diff --git a/src/gui/styles/qstylehelper_p.h b/src/gui/styles/qstylehelper_p.h index 27587e3..6aeb71c 100644 --- a/src/gui/styles/qstylehelper_p.h +++ b/src/gui/styles/qstylehelper_p.h @@ -59,6 +59,8 @@ // We mean it. // +#include + QT_BEGIN_NAMESPACE class QPainter; @@ -81,37 +83,6 @@ namespace QStyleHelper int bottom = 0); } -// internal helper. Converts an integer value to an unique string token -template - struct HexString -{ - inline HexString(const T t) - : val(t) - {} - - inline void write(QChar *&dest) const - { - const ushort hexChars[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' }; - const char *c = reinterpret_cast(&val); - for (uint i = 0; i < sizeof(T); ++i) { - *dest++ = hexChars[*c & 0xf]; - *dest++ = hexChars[(*c & 0xf0) >> 4]; - ++c; - } - } - const T val; -}; - -// specialization to enable fast concatenating of our string tokens to a string -template - struct QConcatenable > -{ - typedef HexString type; - enum { ExactSize = true }; - static int size(const HexString &) { return sizeof(T) * 2; } - static inline void appendTo(const HexString &str, QChar *&out) { str.write(out); } - typedef QString ConvertTo; -}; QT_END_NAMESPACE -- 2.7.4