qpalette.h
上传用户:detong
上传日期:2022-06-22
资源大小:20675k
文件大小:12k
源码类别:

系统编程

开发平台:

Unix_Linux

  1. /****************************************************************************
  2. **
  3. ** Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies).
  4. ** Contact: Qt Software Information (qt-info@nokia.com)
  5. **
  6. ** This file is part of the QtGui module of the Qt Toolkit.
  7. **
  8. ** Commercial Usage
  9. ** Licensees holding valid Qt Commercial licenses may use this file in
  10. ** accordance with the Qt Commercial License Agreement provided with the
  11. ** Software or, alternatively, in accordance with the terms contained in
  12. ** a written agreement between you and Nokia.
  13. **
  14. **
  15. ** GNU General Public License Usage
  16. ** Alternatively, this file may be used under the terms of the GNU
  17. ** General Public License versions 2.0 or 3.0 as published by the Free
  18. ** Software Foundation and appearing in the file LICENSE.GPL included in
  19. ** the packaging of this file.  Please review the following information
  20. ** to ensure GNU General Public Licensing requirements will be met:
  21. ** http://www.fsf.org/licensing/licenses/info/GPLv2.html and
  22. ** http://www.gnu.org/copyleft/gpl.html.  In addition, as a special
  23. ** exception, Nokia gives you certain additional rights. These rights
  24. ** are described in the Nokia Qt GPL Exception version 1.3, included in
  25. ** the file GPL_EXCEPTION.txt in this package.
  26. **
  27. ** Qt for Windows(R) Licensees
  28. ** As a special exception, Nokia, as the sole copyright holder for Qt
  29. ** Designer, grants users of the Qt/Eclipse Integration plug-in the
  30. ** right for the Qt/Eclipse Integration to link to functionality
  31. ** provided by Qt Designer and its related libraries.
  32. **
  33. ** If you are unsure which license is appropriate for your use, please
  34. ** contact the sales department at qt-sales@nokia.com.
  35. **
  36. ****************************************************************************/
  37. #ifndef QPALETTE_H
  38. #define QPALETTE_H
  39. #include <QtGui/qwindowdefs.h>
  40. #include <QtGui/qcolor.h>
  41. #include <QtGui/qbrush.h>
  42. QT_BEGIN_HEADER
  43. QT_BEGIN_NAMESPACE
  44. QT_MODULE(Gui)
  45. #ifdef QT3_SUPPORT
  46. class QColorGroup;
  47. #endif
  48. class QPalettePrivate;
  49. class QVariant;
  50. class Q_GUI_EXPORT QPalette
  51. {
  52.     Q_GADGET
  53.     Q_ENUMS(ColorGroup ColorRole)
  54. public:
  55.     QPalette();
  56.     QPalette(const QColor &button);
  57.     QPalette(Qt::GlobalColor button);
  58.     QPalette(const QColor &button, const QColor &window);
  59.     QPalette(const QBrush &windowText, const QBrush &button, const QBrush &light,
  60.              const QBrush &dark, const QBrush &mid, const QBrush &text,
  61.              const QBrush &bright_text, const QBrush &base, const QBrush &window);
  62.     QPalette(const QColor &windowText, const QColor &window, const QColor &light,
  63.              const QColor &dark, const QColor &mid, const QColor &text, const QColor &base);
  64. #ifdef QT3_SUPPORT
  65.     QT3_SUPPORT_CONSTRUCTOR QPalette(const QColorGroup &active, const QColorGroup &disabled, const QColorGroup &inactive);
  66. #endif
  67.     QPalette(const QPalette &palette);
  68.     ~QPalette();
  69.     QPalette &operator=(const QPalette &palette);
  70.     operator QVariant() const;
  71.     // Do not change the order, the serialization format depends on it
  72.     enum ColorGroup { Active, Disabled, Inactive, NColorGroups, Current, All, Normal = Active };
  73.     enum ColorRole { WindowText, Button, Light, Midlight, Dark, Mid,
  74.                      Text, BrightText, ButtonText, Base, Window, Shadow,
  75.                      Highlight, HighlightedText,
  76.                      Link, LinkVisited, // ### Qt 5: remove
  77.                      AlternateBase,
  78.                      NoRole, // ### Qt 5: value should be 0 or -1
  79.                      ToolTipBase, ToolTipText,
  80.                      NColorRoles = ToolTipText + 1,
  81.                      Foreground = WindowText, Background = Window // ### Qt 5: remove
  82.                    };
  83.     inline ColorGroup currentColorGroup() const { return static_cast<ColorGroup>(current_group); }
  84.     inline void setCurrentColorGroup(ColorGroup cg) { current_group = cg; }
  85.     inline const QColor &color(ColorGroup cg, ColorRole cr) const
  86.     { return brush(cg, cr).color(); }
  87.     const QBrush &brush(ColorGroup cg, ColorRole cr) const;
  88.     inline void setColor(ColorGroup cg, ColorRole cr, const QColor &color);
  89.     inline void setColor(ColorRole cr, const QColor &color);
  90.     inline void setBrush(ColorRole cr, const QBrush &brush);
  91.     bool isBrushSet(ColorGroup cg, ColorRole cr) const;
  92.     void setBrush(ColorGroup cg, ColorRole cr, const QBrush &brush);
  93.     void setColorGroup(ColorGroup cr, const QBrush &windowText, const QBrush &button,
  94.                        const QBrush &light, const QBrush &dark, const QBrush &mid,
  95.                        const QBrush &text, const QBrush &bright_text, const QBrush &base,
  96.                        const QBrush &window);
  97.     bool isEqual(ColorGroup cr1, ColorGroup cr2) const;
  98.     inline const QColor &color(ColorRole cr) const { return color(Current, cr); }
  99.     inline const QBrush &brush(ColorRole cr) const { return brush(Current, cr); }
  100.     inline const QBrush &foreground() const { return brush(WindowText); }
  101.     inline const QBrush &windowText() const { return brush(WindowText); }
  102.     inline const QBrush &button() const { return brush(Button); }
  103.     inline const QBrush &light() const { return brush(Light); }
  104.     inline const QBrush &dark() const { return brush(Dark); }
  105.     inline const QBrush &mid() const { return brush(Mid); }
  106.     inline const QBrush &text() const { return brush(Text); }
  107.     inline const QBrush &base() const { return brush(Base); }
  108.     inline const QBrush &alternateBase() const { return brush(AlternateBase); }
  109.     inline const QBrush &toolTipBase() const { return brush(ToolTipBase); }
  110.     inline const QBrush &toolTipText() const { return brush(ToolTipText); }
  111.     inline const QBrush &background() const { return brush(Window); }
  112.     inline const QBrush &window() const { return brush(Window); }
  113.     inline const QBrush &midlight() const { return brush(Midlight); }
  114.     inline const QBrush &brightText() const { return brush(BrightText); }
  115.     inline const QBrush &buttonText() const { return brush(ButtonText); }
  116.     inline const QBrush &shadow() const { return brush(Shadow); }
  117.     inline const QBrush &highlight() const { return brush(Highlight); }
  118.     inline const QBrush &highlightedText() const { return brush(HighlightedText); }
  119.     inline const QBrush &link() const { return brush(Link); }
  120.     inline const QBrush &linkVisited() const { return brush(LinkVisited); }
  121. #ifdef QT3_SUPPORT
  122.     inline QT3_SUPPORT QPalette copy() const { QPalette p = *this; p.detach(); return p; }
  123.     QT3_SUPPORT QColorGroup normal() const;
  124.     inline QT3_SUPPORT void setNormal(const QColorGroup &cg) { setColorGroup(Active, cg); }
  125.     QT3_SUPPORT QColorGroup active() const;
  126.     QT3_SUPPORT QColorGroup disabled() const;
  127.     QT3_SUPPORT QColorGroup inactive() const;
  128.     inline QT3_SUPPORT void setActive(const QColorGroup &cg) { setColorGroup(Active, cg); }
  129.     inline QT3_SUPPORT void setDisabled(const QColorGroup &cg) { setColorGroup(Disabled, cg); }
  130.     inline QT3_SUPPORT void setInactive(const QColorGroup &cg) { setColorGroup(Inactive, cg); }
  131. #endif
  132.     bool operator==(const QPalette &p) const;
  133.     inline bool operator!=(const QPalette &p) const { return !(operator==(p)); }
  134.     bool isCopyOf(const QPalette &p) const;
  135.     int serialNumber() const;
  136.     qint64 cacheKey() const;
  137.     QPalette resolve(const QPalette &) const;
  138.     inline uint resolve() const { return resolve_mask; }
  139.     inline void resolve(uint mask) { resolve_mask = mask; }
  140. private:
  141.     void setColorGroup(ColorGroup cr, const QBrush &windowText, const QBrush &button,
  142.                        const QBrush &light, const QBrush &dark, const QBrush &mid,
  143.                        const QBrush &text, const QBrush &bright_text,
  144.                        const QBrush &base, const QBrush &alternate_base,
  145.                        const QBrush &window, const QBrush &midlight,
  146.                        const QBrush &button_text, const QBrush &shadow,
  147.                        const QBrush &highlight, const QBrush &highlighted_text,
  148.                        const QBrush &link, const QBrush &link_visited);
  149.     void setColorGroup(ColorGroup cr, const QBrush &windowText, const QBrush &button,
  150.                        const QBrush &light, const QBrush &dark, const QBrush &mid,
  151.                        const QBrush &text, const QBrush &bright_text,
  152.                        const QBrush &base, const QBrush &alternate_base,
  153.                        const QBrush &window, const QBrush &midlight,
  154.                        const QBrush &button_text, const QBrush &shadow,
  155.                        const QBrush &highlight, const QBrush &highlighted_text,
  156.                        const QBrush &link, const QBrush &link_visited,
  157.                        const QBrush &toolTipBase, const QBrush &toolTipText);
  158. #ifdef QT3_SUPPORT
  159.     friend class QColorGroup;
  160.     void setColorGroup(ColorGroup, const QColorGroup &);
  161.     QColorGroup createColorGroup(ColorGroup) const;
  162. #endif
  163.     void init();
  164.     void detach();
  165.     QPalettePrivate *d;
  166.     uint current_group : 4;
  167.     uint resolve_mask : 28;
  168.     friend Q_GUI_EXPORT QDataStream &operator<<(QDataStream &s, const QPalette &p);
  169. };
  170. inline void QPalette::setColor(ColorGroup acg, ColorRole acr,
  171.                                const QColor &acolor)
  172. { setBrush(acg, acr, QBrush(acolor)); }
  173. inline void QPalette::setColor(ColorRole acr, const QColor &acolor)
  174. { setColor(All, acr, acolor); }
  175. inline void QPalette::setBrush(ColorRole acr, const QBrush &abrush)
  176. { setBrush(All, acr, abrush); }
  177. #ifdef QT3_SUPPORT
  178. class Q_GUI_EXPORT QColorGroup : public QPalette
  179. {
  180. public:
  181.     inline QColorGroup() : QPalette() {}
  182.     inline QColorGroup(const QBrush &foreground, const QBrush &button, const QBrush &light,
  183.                 const QBrush &dark, const QBrush &mid, const QBrush &text,
  184.                 const QBrush &bright_text, const QBrush &base, const QBrush &background)
  185.         : QPalette(foreground, button, light, dark, mid, text, bright_text, base, background)
  186.     {}
  187.     inline QColorGroup(const QColor &foreground, const QColor &background, const QColor &light,
  188.                 const QColor &dark, const QColor &mid, const QColor &text, const QColor &base)
  189.         : QPalette(foreground, background, light, dark, mid, text, base) {}
  190.     inline QColorGroup(const QColorGroup &cg) : QPalette(cg) {}
  191.     inline QColorGroup(const QPalette &pal) : QPalette(pal) {}
  192.     bool operator==(const QColorGroup &other) const;
  193.     inline bool operator!=(const QColorGroup &other) const { return !(operator==(other)); }
  194.     operator QVariant() const;
  195.     inline QT3_SUPPORT const QColor &foreground() const { return color(WindowText); }
  196.     inline QT3_SUPPORT const QColor &button() const { return color(Button); }
  197.     inline QT3_SUPPORT const QColor &light() const { return color(Light); }
  198.     inline QT3_SUPPORT const QColor &dark() const { return color(Dark); }
  199.     inline QT3_SUPPORT const QColor &mid() const { return color(Mid); }
  200.     inline QT3_SUPPORT const QColor &text() const { return color(Text); }
  201.     inline QT3_SUPPORT const QColor &base() const { return color(Base); }
  202.     inline QT3_SUPPORT const QColor &background() const { return color(Window); }
  203.     inline QT3_SUPPORT const QColor &midlight() const { return color(Midlight); }
  204.     inline QT3_SUPPORT const QColor &brightText() const { return color(BrightText); }
  205.     inline QT3_SUPPORT const QColor &buttonText() const { return color(ButtonText); }
  206.     inline QT3_SUPPORT const QColor &shadow() const { return color(Shadow); }
  207.     inline QT3_SUPPORT const QColor &highlight() const { return color(Highlight); }
  208.     inline QT3_SUPPORT const QColor &highlightedText() const { return color(HighlightedText); }
  209.     inline QT3_SUPPORT const QColor &link() const { return color(Link); }
  210.     inline QT3_SUPPORT const QColor &linkVisited() const { return color(LinkVisited); }
  211. };
  212. #ifndef QT_NO_DATASTREAM
  213. Q_GUI_EXPORT QT3_SUPPORT QDataStream &operator<<(QDataStream &ds, const QColorGroup &cg);
  214. Q_GUI_EXPORT QT3_SUPPORT QDataStream &operator>>(QDataStream &ds, QColorGroup &cg);
  215. #endif
  216. inline QColorGroup QPalette::inactive() const { return createColorGroup(Inactive); }
  217. inline QColorGroup QPalette::disabled() const { return createColorGroup(Disabled); }
  218. inline QColorGroup QPalette::active() const { return createColorGroup(Active); }
  219. inline QColorGroup QPalette::normal() const { return createColorGroup(Active); }
  220. #endif
  221. /*****************************************************************************
  222.   QPalette stream functions
  223.  *****************************************************************************/
  224. #ifndef QT_NO_DATASTREAM
  225. Q_GUI_EXPORT QDataStream &operator<<(QDataStream &ds, const QPalette &p);
  226. Q_GUI_EXPORT QDataStream &operator>>(QDataStream &ds, QPalette &p);
  227. #endif // QT_NO_DATASTREAM
  228. QT_END_NAMESPACE
  229. QT_END_HEADER
  230. #endif // QPALETTE_H