summaryrefslogtreecommitdiffstats
path: root/src/gui/kernel/qpalette.cpp
diff options
context:
space:
mode:
authorLars Knoll <lars.knoll@nokia.com>2011-05-06 22:08:43 +0200
committerLars Knoll <lars.knoll@nokia.com>2011-05-06 22:08:43 +0200
commit7ff1d396e74457eced141abd019fc62a5858ac75 (patch)
treec6013b7594e66fab69492b123f33a6048371ead8 /src/gui/kernel/qpalette.cpp
parentdcc2317f2b9841888f95b685e4d0075ca27c8aa3 (diff)
move QPalette into QtGui
also add QGuiApplication::palette() for the default application palette.
Diffstat (limited to 'src/gui/kernel/qpalette.cpp')
-rw-r--r--src/gui/kernel/qpalette.cpp1091
1 files changed, 0 insertions, 1091 deletions
diff --git a/src/gui/kernel/qpalette.cpp b/src/gui/kernel/qpalette.cpp
deleted file mode 100644
index f0117b46e5..0000000000
--- a/src/gui/kernel/qpalette.cpp
+++ /dev/null
@@ -1,1091 +0,0 @@
-/****************************************************************************
-**
-** 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 "qpalette.h"
-#include "qapplication.h"
-#include "qdatastream.h"
-#include "qvariant.h"
-
-QT_BEGIN_NAMESPACE
-
-static int qt_palette_count = 1;
-
-class QPalettePrivate {
-public:
- QPalettePrivate() : ref(1), ser_no(qt_palette_count++), detach_no(0) { }
- QAtomicInt ref;
- QBrush br[QPalette::NColorGroups][QPalette::NColorRoles];
- int ser_no;
- int detach_no;
-};
-
-static QColor qt_mix_colors(QColor a, QColor b)
-{
- return QColor((a.red() + b.red()) / 2, (a.green() + b.green()) / 2,
- (a.blue() + b.blue()) / 2, (a.alpha() + b.alpha()) / 2);
-}
-
-/*!
- \fn const QColor &QPalette::color(ColorRole role) const
-
- \overload
-
- Returns the color that has been set for the given color \a role in
- the current ColorGroup.
-
- \sa brush() ColorRole
- */
-
-/*!
- \fn const QBrush &QPalette::brush(ColorRole role) const
-
- \overload
-
- Returns the brush that has been set for the given color \a role in
- the current ColorGroup.
-
- \sa color() setBrush() ColorRole
-*/
-
-/*!
- \fn void QPalette::setColor(ColorRole role, const QColor &color)
-
- \overload
-
- Sets the color used for the given color \a role, in all color
- groups, to the specified solid \a color.
-
- \sa brush() setColor() ColorRole
-*/
-
-/*!
- \fn void QPalette::setBrush(ColorRole role, const QBrush &brush)
-
- Sets the brush for the given color \a role to the specified \a
- brush for all groups in the palette.
-
- \sa brush() setColor() ColorRole
-*/
-
-/*!
- \fn const QBrush & QPalette::foreground() const
- \obsolete
-
- Use windowText() instead.
-*/
-
-/*!
- \fn const QBrush & QPalette::windowText() const
-
- Returns the window text (general foreground) brush of the
- current color group.
-
- \sa ColorRole brush()
-*/
-
-/*!
- \fn const QBrush & QPalette::button() const
-
- Returns the button brush of the current color group.
-
- \sa ColorRole brush()
-*/
-
-/*!
- \fn const QBrush & QPalette::light() const
-
- Returns the light brush of the current color group.
-
- \sa ColorRole brush()
-*/
-
-/*!
- \fn const QBrush& QPalette::midlight() const
-
- Returns the midlight brush of the current color group.
-
- \sa ColorRole brush()
-*/
-
-/*!
- \fn const QBrush & QPalette::dark() const
-
- Returns the dark brush of the current color group.
-
- \sa ColorRole brush()
-*/
-
-/*!
- \fn const QBrush & QPalette::mid() const
-
- Returns the mid brush of the current color group.
-
- \sa ColorRole brush()
-*/
-
-/*!
- \fn const QBrush & QPalette::text() const
-
- Returns the text foreground brush of the current color group.
-
- \sa ColorRole brush()
-*/
-
-/*!
- \fn const QBrush & QPalette::brightText() const
-
- Returns the bright text foreground brush of the current color group.
-
- \sa ColorRole brush()
-*/
-
-/*!
- \fn const QBrush & QPalette::buttonText() const
-
- Returns the button text foreground brush of the current color group.
-
- \sa ColorRole brush()
-*/
-
-/*!
- \fn const QBrush & QPalette::base() const
-
- Returns the base brush of the current color group.
-
- \sa ColorRole brush()
-*/
-
-/*!
- \fn const QBrush & QPalette::alternateBase() const
-
- Returns the alternate base brush of the current color group.
-
- \sa ColorRole brush()
-*/
-
-/*!
- \fn const QBrush & QPalette::toolTipBase() const
- \since 4.4
-
- Returns the tool tip base brush of the current color group. This brush is
- used by QToolTip and QWhatsThis.
-
- \note Tool tips use the Inactive color group of QPalette, because tool
- tips are not active windows.
-
- \sa ColorRole brush()
-*/
-
-/*!
- \fn const QBrush & QPalette::toolTipText() const
- \since 4.4
-
- Returns the tool tip text brush of the current color group. This brush is
- used by QToolTip and QWhatsThis.
-
- \note Tool tips use the Inactive color group of QPalette, because tool
- tips are not active windows.
-
- \sa ColorRole brush()
-*/
-
-/*!
- \fn const QBrush & QPalette::background() const
- \obsolete
-
- Use window() instead.
-*/
-
-/*!
- \fn const QBrush & QPalette::window() const
-
- Returns the window (general background) brush of the current
- color group.
-
- \sa ColorRole brush()
-*/
-
-/*!
- \fn const QBrush & QPalette::shadow() const
-
- Returns the shadow brush of the current color group.
-
- \sa ColorRole brush()
-*/
-
-/*!
- \fn const QBrush & QPalette::highlight() const
-
- Returns the highlight brush of the current color group.
-
- \sa ColorRole brush()
-*/
-
-/*!
- \fn const QBrush & QPalette::highlightedText() const
-
- Returns the highlighted text brush of the current color group.
-
- \sa ColorRole brush()
-*/
-
-/*!
- \fn const QBrush & QPalette::link() const
-
- Returns the unvisited link text brush of the current color group.
-
- \sa ColorRole brush()
-*/
-
-/*!
- \fn const QBrush & QPalette::linkVisited() const
-
- Returns the visited link text brush of the current color group.
-
- \sa ColorRole brush()
-*/
-
-/*!
- \fn ColorGroup QPalette::currentColorGroup() const
-
- Returns the palette's current color group.
-*/
-
-/*!
- \fn void QPalette::setCurrentColorGroup(ColorGroup cg)
-
- Set the palette's current color group to \a cg.
-*/
-
-/*!
- \class QPalette
-
- \brief The QPalette class contains color groups for each widget state.
-
- \ingroup appearance
- \ingroup shared
- \ingroup painting
-
-
- A palette consists of three color groups: \e Active, \e Disabled,
- and \e Inactive. All widgets in Qt contain a palette and
- use their palette to draw themselves. This makes the user
- interface easily configurable and easier to keep consistent.
-
-
- If you create a new widget we strongly recommend that you use the
- colors in the palette rather than hard-coding specific colors.
-
- The color groups:
- \list
- \i The Active group is used for the window that has keyboard focus.
- \i The Inactive group is used for other windows.
- \i The Disabled group is used for widgets (not windows) that are
- disabled for some reason.
- \endlist
-
- Both active and inactive windows can contain disabled widgets.
- (Disabled widgets are often called \e inaccessible or \e{grayed
- out}.)
-
- In most styles, Active and Inactive look the same.
-
- Colors and brushes can be set for particular roles in any of a palette's
- color groups with setColor() and setBrush(). A color group contains a
- group of colors used by widgets for drawing themselves. We recommend that
- widgets use color group roles from the palette such as "foreground" and
- "base" rather than literal colors like "red" or "turquoise". The color
- roles are enumerated and defined in the \l ColorRole documentation.
-
- We strongly recommend that you use the default palette of the
- current style (returned by QApplication::palette()) and
- modify that as necessary. This is done by Qt's widgets when they
- are drawn.
-
- To modify a color group you call the functions
- setColor() and setBrush(), depending on whether you want a pure
- color or a pixmap pattern.
-
- There are also corresponding color() and brush() getters, and a
- commonly used convenience function to get the ColorRole for the current ColorGroup:
- window(), windowText(), base(), etc.
-
-
- You can copy a palette using the copy constructor and test to see
- if two palettes are \e identical using isCopyOf().
-
- QPalette is optimized by the use of \l{implicit sharing},
- so it is very efficient to pass QPalette objects as arguments.
-
- \warning Some styles do not use the palette for all drawing, for
- instance, if they make use of native theme engines. This is the
- case for both the Windows XP, Windows Vista, and the Mac OS X
- styles.
-
- \sa QApplication::setPalette(), QWidget::setPalette(), QColor
-*/
-
-/*!
- \enum QPalette::ColorGroup
-
- \value Disabled
- \value Active
- \value Inactive
- \value Normal synonym for Active
-
- \omitvalue All
- \omitvalue NColorGroups
- \omitvalue Current
-*/
-
-/*!
- \enum QPalette::ColorRole
-
- \img palette.png Color Roles
-
- The ColorRole enum defines the different symbolic color roles used
- in current GUIs.
-
- The central roles are:
-
- \value Window A general background color.
-
- \value Background This value is obsolete. Use Window instead.
-
- \value WindowText A general foreground color.
-
- \value Foreground This value is obsolete. Use WindowText instead.
-
- \value Base Used mostly as the background color for text entry widgets,
- but can also be used for other painting - such as the
- background of combobox drop down lists and toolbar handles.
- It is usually white or another light color.
-
- \value AlternateBase Used as the alternate background color in views with
- alternating row colors (see
- QAbstractItemView::setAlternatingRowColors()).
-
- \value ToolTipBase Used as the background color for QToolTip and
- QWhatsThis. Tool tips use the Inactive color group
- of QPalette, because tool tips are not active
- windows.
-
- \value ToolTipText Used as the foreground color for QToolTip and
- QWhatsThis. Tool tips use the Inactive color group
- of QPalette, because tool tips are not active
- windows.
-
- \value Text The foreground color used with \c Base. This is usually
- the same as the \c WindowText, in which case it must provide
- good contrast with \c Window and \c Base.
-
- \value Button The general button background color. This background can be different from
- \c Window as some styles require a different background color for buttons.
-
- \value ButtonText A foreground color used with the \c Button color.
-
- \value BrightText A text color that is very different from
- \c WindowText, and contrasts well with e.g. \c
- Dark. Typically used for text that needs to be
- drawn where \c Text or \c WindowText would give
- poor contrast, such as on pressed push buttons.
- Note that text colors can be used for things
- other than just words; text colors are \e
- usually used for text, but it's quite common to
- use the text color roles for lines, icons, etc.
-
-
- There are some color roles used mostly for 3D bevel and shadow effects.
- All of these are normally derived from \c Window, and used in ways that
- depend on that relationship. For example, buttons depend on it to make the
- bevels look attractive, and Motif scroll bars depend on \c Mid to be
- slightly different from \c Window.
-
- \value Light Lighter than \c Button color.
-
- \value Midlight Between \c Button and \c Light.
-
- \value Dark Darker than \c Button.
-
- \value Mid Between \c Button and \c Dark.
-
- \value Shadow A very dark color. By default, the shadow color is
- Qt::black.
-
-
- Selected (marked) items have two roles:
-
- \value Highlight A color to indicate a selected item or the current
- item. By default, the highlight color is
- Qt::darkBlue.
-
- \value HighlightedText A text color that contrasts with \c Highlight.
- By default, the highlighted text color is Qt::white.
-
- There are two color roles related to hyperlinks:
-
- \value Link A text color used for unvisited hyperlinks.
- By default, the link color is Qt::blue.
-
- \value LinkVisited A text color used for already visited hyperlinks.
- By default, the linkvisited color is Qt::magenta.
-
- Note that we do not use the \c Link and \c LinkVisited roles when
- rendering rich text in Qt, and that we recommend that you use CSS
- and the QTextDocument::setDefaultStyleSheet() function to alter
- the appearance of links. For example:
-
- \snippet doc/src/snippets/textdocument-css/main.cpp 0
-
- \value NoRole No role; this special role is often used to indicate that a
- role has not been assigned.
-
- \omitvalue NColorRoles
-*/
-
-/*!
- Constructs a palette object that uses the application's default palette.
-
- \sa QApplication::setPalette(), QApplication::palette()
-*/
-QPalette::QPalette()
- : d(QApplication::palette().d),
- current_group(Active),
- resolve_mask(0)
-{
- d->ref.ref();
-}
-
-static void qt_palette_from_color(QPalette &pal, const QColor & button)
-{
- QColor bg = button,
- btn = button,
- fg, base;
- int h, s, v;
- bg.getHsv(&h, &s, &v);
- if(v > 128) {
- fg = Qt::black;
- base = Qt::white;
- } else {
- fg = Qt::white;
- base = Qt::black;
- }
- //inactive and active are the same..
- pal.setColorGroup(QPalette::Active, QBrush(fg), QBrush(btn), QBrush(btn.lighter(150)),
- QBrush(btn.darker()), QBrush(btn.darker(150)), QBrush(fg), QBrush(Qt::white),
- QBrush(base), QBrush(bg));
- pal.setColorGroup(QPalette::Inactive, QBrush(fg), QBrush(btn), QBrush(btn.lighter(150)),
- QBrush(btn.darker()), QBrush(btn.darker(150)), QBrush(fg), QBrush(Qt::white),
- QBrush(base), QBrush(bg));
- pal.setColorGroup(QPalette::Disabled, QBrush(btn.darker()), QBrush(btn), QBrush(btn.lighter(150)),
- QBrush(btn.darker()), QBrush(btn.darker(150)), QBrush(btn.darker()),
- QBrush(Qt::white), QBrush(bg), QBrush(bg));
-}
-
-
-/*!
- Constructs a palette from the \a button color. The other colors are
- automatically calculated, based on this color. \c Window will be
- the button color as well.
-*/
-QPalette::QPalette(const QColor &button)
-{
- init();
- qt_palette_from_color(*this, button);
-}
-
-/*!
- Constructs a palette from the \a button color. The other colors are
- automatically calculated, based on this color. \c Window will be
- the button color as well.
-*/
-QPalette::QPalette(Qt::GlobalColor button)
-{
- init();
- qt_palette_from_color(*this, button);
-}
-
-/*!
- Constructs a palette. You can pass either brushes, pixmaps or
- plain colors for \a windowText, \a button, \a light, \a dark, \a
- mid, \a text, \a bright_text, \a base and \a window.
-
- \sa QBrush
-*/
-QPalette::QPalette(const QBrush &windowText, const QBrush &button,
- const QBrush &light, const QBrush &dark,
- const QBrush &mid, const QBrush &text,
- const QBrush &bright_text, const QBrush &base,
- const QBrush &window)
-{
- init();
- setColorGroup(All, windowText, button, light, dark, mid, text, bright_text,
- base, window);
-}
-
-
-/*!\obsolete
-
- Constructs a palette with the specified \a windowText, \a
- window, \a light, \a dark, \a mid, \a text, and \a base colors.
- The button color will be set to the window color.
-*/
-QPalette::QPalette(const QColor &windowText, const QColor &window,
- const QColor &light, const QColor &dark, const QColor &mid,
- const QColor &text, const QColor &base)
-{
- init();
- setColorGroup(All, QBrush(windowText), QBrush(window), QBrush(light),
- QBrush(dark), QBrush(mid), QBrush(text), QBrush(light),
- QBrush(base), QBrush(window));
-}
-
-/*!
- Constructs a palette from a \a button color and a \a window.
- The other colors are automatically calculated, based on these
- colors.
-*/
-QPalette::QPalette(const QColor &button, const QColor &window)
-{
- init();
- QColor bg = window, btn = button, fg, base, disfg;
- int h, s, v;
- bg.getHsv(&h, &s, &v);
- if(v > 128) {
- fg = Qt::black;
- base = Qt::white;
- disfg = Qt::darkGray;
- } else {
- fg = Qt::white;
- base = Qt::black;
- disfg = Qt::darkGray;
- }
- //inactive and active are identical
- setColorGroup(Inactive, QBrush(fg), QBrush(btn), QBrush(btn.lighter(150)), QBrush(btn.darker()),
- QBrush(btn.darker(150)), QBrush(fg), QBrush(Qt::white), QBrush(base),
- QBrush(bg));
- setColorGroup(Active, QBrush(fg), QBrush(btn), QBrush(btn.lighter(150)), QBrush(btn.darker()),
- QBrush(btn.darker(150)), QBrush(fg), QBrush(Qt::white), QBrush(base),
- QBrush(bg));
- setColorGroup(Disabled, QBrush(disfg), QBrush(btn), QBrush(btn.lighter(150)),
- QBrush(btn.darker()), QBrush(btn.darker(150)), QBrush(disfg),
- QBrush(Qt::white), QBrush(base), QBrush(bg));
-}
-
-/*!
- Constructs a copy of \a p.
-
- This constructor is fast thanks to \l{implicit sharing}.
-*/
-QPalette::QPalette(const QPalette &p)
-{
- d = p.d;
- d->ref.ref();
- resolve_mask = p.resolve_mask;
- current_group = p.current_group;
-}
-
-/*!
- Destroys the palette.
-*/
-QPalette::~QPalette()
-{
- if(!d->ref.deref())
- delete d;
-}
-
-/*!\internal*/
-void QPalette::init() {
- d = new QPalettePrivate;
- resolve_mask = 0;
- current_group = Active; //as a default..
-}
-
-/*!
- Assigns \a p to this palette and returns a reference to this
- palette.
-
- This operation is fast thanks to \l{implicit sharing}.
-*/
-QPalette &QPalette::operator=(const QPalette &p)
-{
- p.d->ref.ref();
- resolve_mask = p.resolve_mask;
- current_group = p.current_group;
- if(!d->ref.deref())
- delete d;
- d = p.d;
- return *this;
-}
-
-/*!
- Returns the palette as a QVariant
-*/
-QPalette::operator QVariant() const
-{
- return QVariant(QVariant::Palette, this);
-}
-
-/*!
- \fn const QColor &QPalette::color(ColorGroup group, ColorRole role) const
-
- Returns the color in the specified color \a group, used for the
- given color \a role.
-
- \sa brush() setColor() ColorRole
-*/
-
-/*!
- \fn const QBrush &QPalette::brush(ColorGroup group, ColorRole role) const
-
- Returns the brush in the specified color \a group, used for the
- given color \a role.
-
- \sa color() setBrush() ColorRole
-*/
-const QBrush &QPalette::brush(ColorGroup gr, ColorRole cr) const
-{
- Q_ASSERT(cr < NColorRoles);
- if(gr >= (int)NColorGroups) {
- if(gr == Current) {
- gr = (ColorGroup)current_group;
- } else {
- qWarning("QPalette::brush: Unknown ColorGroup: %d", (int)gr);
- gr = Active;
- }
- }
- return d->br[gr][cr];
-}
-
-/*!
- \fn void QPalette::setColor(ColorGroup group, ColorRole role, const QColor &color)
-
- Sets the color in the specified color \a group, used for the given
- color \a role, to the specified solid \a color.
-
- \sa setBrush() color() ColorRole
-*/
-
-/*!
- \fn void QPalette::setBrush(ColorGroup group, ColorRole role, const QBrush &brush)
- \overload
-
- Sets the brush in the specified color \a group, used for the given
- color \a role, to \a brush.
-
- \sa brush() setColor() ColorRole
-*/
-void QPalette::setBrush(ColorGroup cg, ColorRole cr, const QBrush &b)
-{
- Q_ASSERT(cr < NColorRoles);
- detach();
- if(cg >= (int)NColorGroups) {
- if(cg == All) {
- for(int i = 0; i < (int)NColorGroups; i++)
- d->br[i][cr] = b;
- resolve_mask |= (1<<cr);
- return;
- } else if(cg == Current) {
- cg = (ColorGroup)current_group;
- } else {
- qWarning("QPalette::setBrush: Unknown ColorGroup: %d", (int)cg);
- cg = Active;
- }
- }
- d->br[cg][cr] = b;
- resolve_mask |= (1<<cr);
-}
-
-/*!
- \since 4.2
-
- Returns true if the ColorGroup \a cg and ColorRole \a cr has been
- set previously on this palette; otherwise returns false.
-
- \sa setBrush()
-*/
-bool QPalette::isBrushSet(ColorGroup cg, ColorRole cr) const
-{
- Q_UNUSED(cg);
- return (resolve_mask & (1<<cr));
-}
-
-/*!
- \internal
-*/
-void QPalette::detach()
-{
- if (d->ref != 1) {
- QPalettePrivate *x = new QPalettePrivate;
- for(int grp = 0; grp < (int)NColorGroups; grp++) {
- for(int role = 0; role < (int)NColorRoles; role++)
- x->br[grp][role] = d->br[grp][role];
- }
- if(!d->ref.deref())
- delete d;
- d = x;
- }
- ++d->detach_no;
-}
-
-/*!
- \fn bool QPalette::operator!=(const QPalette &p) const
-
- Returns true (slowly) if this palette is different from \a p;
- otherwise returns false (usually quickly).
-
- \note The current ColorGroup is not taken into account when
- comparing palettes
-
- \sa operator==()
-*/
-
-/*!
- Returns true (usually quickly) if this palette is equal to \a p;
- otherwise returns false (slowly).
-
- \note The current ColorGroup is not taken into account when
- comparing palettes
-
- \sa operator!=()
-*/
-bool QPalette::operator==(const QPalette &p) const
-{
- if (isCopyOf(p))
- return true;
- for(int grp = 0; grp < (int)NColorGroups; grp++) {
- for(int role = 0; role < (int)NColorRoles; role++) {
- if(d->br[grp][role] != p.d->br[grp][role])
- return false;
- }
- }
- return true;
-}
-
-/*!
- \fn bool QPalette::isEqual(ColorGroup cg1, ColorGroup cg2) const
-
- Returns true (usually quickly) if color group \a cg1 is equal to
- \a cg2; otherwise returns false.
-*/
-bool QPalette::isEqual(QPalette::ColorGroup group1, QPalette::ColorGroup group2) const
-{
- if(group1 >= (int)NColorGroups) {
- if(group1 == Current) {
- group1 = (ColorGroup)current_group;
- } else {
- qWarning("QPalette::brush: Unknown ColorGroup(1): %d", (int)group1);
- group1 = Active;
- }
- }
- if(group2 >= (int)NColorGroups) {
- if(group2 == Current) {
- group2 = (ColorGroup)current_group;
- } else {
- qWarning("QPalette::brush: Unknown ColorGroup(2): %d", (int)group2);
- group2 = Active;
- }
- }
- if(group1 == group2)
- return true;
- for(int role = 0; role < (int)NColorRoles; role++) {
- if(d->br[group1][role] != d->br[group2][role])
- return false;
- }
- return true;
-}
-
-/*! \obsolete
-
- Returns a number that identifies the contents of this QPalette
- object. Distinct QPalette objects can only have the same serial
- number if they refer to the same contents (but they don't have
- to). Also, the serial number of a QPalette may change during the
- lifetime of the object.
-
- Use cacheKey() instead.
-
- \warning The serial number doesn't necessarily change when the
- palette is altered. This means that it may be dangerous to use it
- as a cache key.
-
- \sa operator==()
-*/
-int QPalette::serialNumber() const
-{
- return d->ser_no;
-}
-
-/*!
- Returns a number that identifies the contents of this QPalette
- object. Distinct QPalette objects can have the same key if
- they refer to the same contents.
-
- The cacheKey() will change when the palette is altered.
-*/
-qint64 QPalette::cacheKey() const
-{
- return (((qint64) d->ser_no) << 32) | ((qint64) (d->detach_no));
-}
-
-/*!
- Returns a new QPalette that has attributes copied from \a other.
-*/
-QPalette QPalette::resolve(const QPalette &other) const
-{
- if ((*this == other && resolve_mask == other.resolve_mask)
- || resolve_mask == 0) {
- QPalette o = other;
- o.resolve_mask = resolve_mask;
- return o;
- }
-
- QPalette palette(*this);
- palette.detach();
-
- for(int role = 0; role < (int)NColorRoles; role++)
- if (!(resolve_mask & (1<<role)))
- for(int grp = 0; grp < (int)NColorGroups; grp++)
- palette.d->br[grp][role] = other.d->br[grp][role];
-
- return palette;
-}
-
-/*!
- \fn uint QPalette::resolve() const
- \internal
-*/
-
-/*!
- \fn void QPalette::resolve(uint mask)
- \internal
-*/
-
-
-/*****************************************************************************
- QPalette stream functions
- *****************************************************************************/
-
-#ifndef QT_NO_DATASTREAM
-
-static const int NumOldRoles = 7;
-static const int oldRoles[7] = { QPalette::Foreground, QPalette::Background, QPalette::Light,
- QPalette::Dark, QPalette::Mid, QPalette::Text, QPalette::Base };
-
-/*!
- \relates QPalette
-
- Writes the palette, \a p to the stream \a s and returns a
- reference to the stream.
-
- \sa \link datastreamformat.html Format of the QDataStream operators \endlink
-*/
-
-QDataStream &operator<<(QDataStream &s, const QPalette &p)
-{
- for (int grp = 0; grp < (int)QPalette::NColorGroups; grp++) {
- if (s.version() == 1) {
- // Qt 1.x
- for (int i = 0; i < NumOldRoles; ++i)
- s << p.d->br[grp][oldRoles[i]].color();
- } else {
- int max = QPalette::ToolTipText + 1;
- if (s.version() <= QDataStream::Qt_2_1)
- max = QPalette::HighlightedText + 1;
- else if (s.version() <= QDataStream::Qt_4_3)
- max = QPalette::AlternateBase + 1;
- for (int r = 0; r < max; r++)
- s << p.d->br[grp][r];
- }
- }
- return s;
-}
-
-static void readV1ColorGroup(QDataStream &s, QPalette &pal, QPalette::ColorGroup grp)
-{
- for (int i = 0; i < NumOldRoles; ++i) {
- QColor col;
- s >> col;
- pal.setColor(grp, (QPalette::ColorRole)oldRoles[i], col);
- }
-}
-
-/*!
- \relates QPalette
-
- Reads a palette from the stream, \a s into the palette \a p, and
- returns a reference to the stream.
-
- \sa \link datastreamformat.html Format of the QDataStream operators \endlink
-*/
-
-QDataStream &operator>>(QDataStream &s, QPalette &p)
-{
- if(s.version() == 1) {
- p = QPalette();
- readV1ColorGroup(s, p, QPalette::Active);
- readV1ColorGroup(s, p, QPalette::Disabled);
- readV1ColorGroup(s, p, QPalette::Inactive);
- } else {
- int max = QPalette::NColorRoles;
- if (s.version() <= QDataStream::Qt_2_1) {
- p = QPalette();
- max = QPalette::HighlightedText + 1;
- } else if (s.version() <= QDataStream::Qt_4_3) {
- p = QPalette();
- max = QPalette::AlternateBase + 1;
- }
-
- QBrush tmp;
- for(int grp = 0; grp < (int)QPalette::NColorGroups; ++grp) {
- for(int role = 0; role < max; ++role) {
- s >> tmp;
- p.setBrush((QPalette::ColorGroup)grp, (QPalette::ColorRole)role, tmp);
- }
- }
- }
- return s;
-}
-#endif //QT_NO_DATASTREAM
-
-/*!
- Returns true if this palette and \a p are copies of each other,
- i.e. one of them was created as a copy of the other and neither
- was subsequently modified; otherwise returns false. This is much
- stricter than equality.
-
- \sa operator=() operator==()
-*/
-
-bool QPalette::isCopyOf(const QPalette &p) const
-{
- return d == p.d;
-}
-
-/*!
-
- Sets a the group at \a cg. You can pass either brushes, pixmaps or
- plain colors for \a windowText, \a button, \a light, \a dark, \a
- mid, \a text, \a bright_text, \a base and \a window.
-
- \sa QBrush
-*/
-void QPalette::setColorGroup(ColorGroup cg, const QBrush &windowText, const QBrush &button,
- const QBrush &light, const QBrush &dark, const QBrush &mid,
- const QBrush &text, const QBrush &bright_text, const QBrush &base,
- const QBrush &window)
-{
- QBrush alt_base = QBrush(qt_mix_colors(base.color(), button.color()));
- QBrush mid_light = QBrush(qt_mix_colors(button.color(), light.color()));
- QColor toolTipBase(255, 255, 220);
- QColor toolTipText(0, 0, 0);
-
- setColorGroup(cg, windowText, button, light, dark, mid, text, bright_text, base,
- alt_base, window, mid_light, text,
- QBrush(Qt::black), QBrush(Qt::darkBlue), QBrush(Qt::white),
- QBrush(Qt::blue), QBrush(Qt::magenta), QBrush(toolTipBase),
- QBrush(toolTipText));
-
- resolve_mask &= ~(1 << Highlight);
- resolve_mask &= ~(1 << HighlightedText);
- resolve_mask &= ~(1 << LinkVisited);
- resolve_mask &= ~(1 << Link);
-}
-
-
-/*!\internal*/
-void
-QPalette::setColorGroup(ColorGroup cg, const QBrush &foreground, const QBrush &button,
- const QBrush &light, const QBrush &dark, const QBrush &mid,
- const QBrush &text, const QBrush &bright_text,
- const QBrush &base, const QBrush &alternate_base,
- const QBrush &background, const QBrush &midlight,
- const QBrush &button_text, const QBrush &shadow,
- const QBrush &highlight, const QBrush &highlighted_text,
- const QBrush &link, const QBrush &link_visited)
-{
- setColorGroup(cg, foreground, button, light, dark, mid,
- text, bright_text, base, alternate_base, background,
- midlight, button_text, shadow, highlight, highlighted_text,
- link, link_visited, background, foreground);
-}
-
-/*!\internal*/
-void QPalette::setColorGroup(ColorGroup cg, const QBrush &foreground, const QBrush &button,
- const QBrush &light, const QBrush &dark, const QBrush &mid,
- const QBrush &text, const QBrush &bright_text,
- const QBrush &base, const QBrush &alternate_base,
- const QBrush &background, const QBrush &midlight,
- const QBrush &button_text, const QBrush &shadow,
- const QBrush &highlight, const QBrush &highlighted_text,
- const QBrush &link, const QBrush &link_visited,
- const QBrush &toolTipBase, const QBrush &toolTipText)
-{
- detach();
- setBrush(cg, WindowText, foreground);
- setBrush(cg, Button, button);
- setBrush(cg, Light, light);
- setBrush(cg, Dark, dark);
- setBrush(cg, Mid, mid);
- setBrush(cg, Text, text);
- setBrush(cg, BrightText, bright_text);
- setBrush(cg, Base, base);
- setBrush(cg, AlternateBase, alternate_base);
- setBrush(cg, Window, background);
- setBrush(cg, Midlight, midlight);
- setBrush(cg, ButtonText, button_text);
- setBrush(cg, Shadow, shadow);
- setBrush(cg, Highlight, highlight);
- setBrush(cg, HighlightedText, highlighted_text);
- setBrush(cg, Link, link);
- setBrush(cg, LinkVisited, link_visited);
- setBrush(cg, ToolTipBase, toolTipBase);
- setBrush(cg, ToolTipText, toolTipText);
-}
-
-/*!
- \fn QPalette QPalette::copy() const
-
- Use simple assignment instead.
-*/
-
-
-QT_END_NAMESPACE