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

系统编程

开发平台:

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 QFONT_H
  38. #define QFONT_H
  39. #include <QtGui/qwindowdefs.h>
  40. #include <QtCore/qstring.h>
  41. #if defined(Q_WS_X11) || defined(Q_WS_QWS)
  42. typedef struct FT_FaceRec_* FT_Face;
  43. #endif
  44. QT_BEGIN_HEADER
  45. QT_BEGIN_NAMESPACE
  46. QT_MODULE(Gui)
  47. class QFontPrivate;                                     /* don't touch */
  48. class QStringList;
  49. class QVariant;
  50. class Q3TextFormatCollection;
  51. class Q_GUI_EXPORT QFont
  52. {
  53.     Q_GADGET
  54.     Q_ENUMS(StyleStrategy)
  55. public:
  56.     enum StyleHint {
  57.         Helvetica,  SansSerif = Helvetica,
  58.         Times,      Serif = Times,
  59.         Courier,    TypeWriter = Courier,
  60.         OldEnglish, Decorative = OldEnglish,
  61.         System,
  62.         AnyStyle
  63.     };
  64.     enum StyleStrategy {
  65.         PreferDefault    = 0x0001,
  66.         PreferBitmap     = 0x0002,
  67.         PreferDevice     = 0x0004,
  68.         PreferOutline    = 0x0008,
  69.         ForceOutline     = 0x0010,
  70.         PreferMatch      = 0x0020,
  71.         PreferQuality    = 0x0040,
  72.         PreferAntialias  = 0x0080,
  73.         NoAntialias      = 0x0100,
  74.         OpenGLCompatible = 0x0200,
  75.         NoFontMerging    = 0x8000
  76.     };
  77.     enum Weight {
  78.         Light    = 25,
  79.         Normal   = 50,
  80.         DemiBold = 63,
  81.         Bold     = 75,
  82.         Black    = 87
  83.     };
  84.     enum Style {
  85.         StyleNormal,
  86.         StyleItalic,
  87.         StyleOblique
  88.     };
  89.     enum Stretch {
  90.         UltraCondensed =  50,
  91.         ExtraCondensed =  62,
  92.         Condensed      =  75,
  93.         SemiCondensed  =  87,
  94.         Unstretched    = 100,
  95.         SemiExpanded   = 112,
  96.         Expanded       = 125,
  97.         ExtraExpanded  = 150,
  98.         UltraExpanded  = 200
  99.     };
  100.     enum Capitalization {
  101.         MixedCase,
  102.         AllUppercase,
  103.         AllLowercase,
  104.         SmallCaps,
  105.         Capitalize
  106.     };
  107.     enum SpacingType {
  108.         PercentageSpacing,
  109.         AbsoluteSpacing
  110.     };
  111.     enum ResolveProperties {
  112.         FamilyResolved         = 0x0001,
  113.         SizeResolved           = 0x0002,
  114.         StyleHintResolved      = 0x0004,
  115.         StyleStrategyResolved  = 0x0008,
  116.         WeightResolved         = 0x0010,
  117.         StyleResolved          = 0x0020,
  118.         UnderlineResolved      = 0x0040,
  119.         OverlineResolved       = 0x0080,
  120.         StrikeOutResolved      = 0x0100,
  121.         FixedPitchResolved     = 0x0200,
  122.         StretchResolved        = 0x0400,
  123.         KerningResolved        = 0x0800,
  124.         CapitalizationResolved = 0x1000,
  125.         LetterSpacingResolved  = 0x2000,
  126.         WordSpacingResolved    = 0x4000,
  127.         AllPropertiesResolved  = 0x7fff
  128.     };
  129.     QFont();
  130.     QFont(const QString &family, int pointSize = -1, int weight = -1, bool italic = false);
  131.     QFont(const QFont &, QPaintDevice *pd);
  132.     QFont(const QFont &);
  133.     ~QFont();
  134.     QString family() const;
  135.     void setFamily(const QString &);
  136.     int pointSize() const;
  137.     void setPointSize(int);
  138.     qreal pointSizeF() const;
  139.     void setPointSizeF(qreal);
  140.     int pixelSize() const;
  141.     void setPixelSize(int);
  142.     int weight() const;
  143.     void setWeight(int);
  144.     inline bool bold() const;
  145.     inline void setBold(bool);
  146.     void setStyle(Style style);
  147.     Style style() const;
  148.     inline bool italic() const;
  149.     inline void setItalic(bool b);
  150.     bool underline() const;
  151.     void setUnderline(bool);
  152.     bool overline() const;
  153.     void setOverline(bool);
  154.     bool strikeOut() const;
  155.     void setStrikeOut(bool);
  156.     bool fixedPitch() const;
  157.     void setFixedPitch(bool);
  158.     bool kerning() const;
  159.     void setKerning(bool);
  160.     StyleHint styleHint() const;
  161.     StyleStrategy styleStrategy() const;
  162.     void setStyleHint(StyleHint, StyleStrategy = PreferDefault);
  163.     void setStyleStrategy(StyleStrategy s);
  164.     int stretch() const;
  165.     void setStretch(int);
  166.     qreal letterSpacing() const;
  167.     SpacingType letterSpacingType() const;
  168.     void setLetterSpacing(SpacingType type, qreal spacing);
  169.     qreal wordSpacing() const;
  170.     void setWordSpacing(qreal spacing);
  171.     void setCapitalization(Capitalization);
  172.     Capitalization capitalization() const;
  173.     // is raw mode still needed?
  174.     bool rawMode() const;
  175.     void setRawMode(bool);
  176.     // dupicated from QFontInfo
  177.     bool exactMatch() const;
  178.     QFont &operator=(const QFont &);
  179.     bool operator==(const QFont &) const;
  180.     bool operator!=(const QFont &) const;
  181.     bool operator<(const QFont &) const;
  182.     operator QVariant() const;
  183.     bool isCopyOf(const QFont &) const;
  184. #ifdef Q_WS_WIN
  185.     HFONT handle() const;
  186. #else // !Q_WS_WIN
  187.     Qt::HANDLE handle() const;
  188. #endif // Q_WS_WIN
  189. #ifdef Q_WS_MAC
  190.     quint32 macFontID() const;
  191. #endif
  192. #if defined(Q_WS_X11) || defined(Q_WS_QWS)
  193.     FT_Face freetypeFace() const;
  194. #endif
  195.     // needed for X11
  196.     void setRawName(const QString &);
  197.     QString rawName() const;
  198.     QString key() const;
  199.     QString toString() const;
  200.     bool fromString(const QString &);
  201.     static QString substitute(const QString &);
  202.     static QStringList substitutes(const QString &);
  203.     static QStringList substitutions();
  204.     static void insertSubstitution(const QString&, const QString &);
  205.     static void insertSubstitutions(const QString&, const QStringList &);
  206.     static void removeSubstitution(const QString &);
  207.     static void initialize();
  208.     static void cleanup();
  209. #ifndef Q_WS_QWS
  210.     static void cacheStatistics();
  211. #endif
  212.     QString defaultFamily() const;
  213.     QString lastResortFamily() const;
  214.     QString lastResortFont() const;
  215.     QFont resolve(const QFont &) const;
  216.     inline uint resolve() const { return resolve_mask; }
  217.     inline void resolve(uint mask) { resolve_mask = mask; }
  218. #ifdef QT3_SUPPORT
  219.     static QT3_SUPPORT QFont defaultFont();
  220.     static QT3_SUPPORT void setDefaultFont(const QFont &);
  221.     QT3_SUPPORT void setPixelSizeFloat(qreal);
  222.     QT3_SUPPORT qreal pointSizeFloat() const { return pointSizeF(); }
  223.     QT3_SUPPORT void setPointSizeFloat(qreal size) { setPointSizeF(size); }
  224. #endif
  225. private:
  226.     QFont(QFontPrivate *);
  227.     void detach();
  228. #if defined(Q_WS_MAC)
  229.     void macSetFont(QPaintDevice *);
  230. #elif defined(Q_WS_X11)
  231.     void x11SetScreen(int screen = -1);
  232.     int x11Screen() const;
  233. #endif
  234.     friend class QFontPrivate;
  235.     friend class QFontMetrics;
  236.     friend class QFontMetricsF;
  237.     friend class QFontInfo;
  238.     friend class QPainter;
  239.     friend class QPSPrintEngineFont;
  240.     friend class QApplication;
  241.     friend class QWidget;
  242.     friend class QWidgetPrivate;
  243.     friend class Q3TextFormatCollection;
  244.     friend class QTextLayout;
  245.     friend class QTextEngine;
  246.     friend class QStackTextEngine;
  247.     friend class QTextLine;
  248.     friend struct QScriptLine;
  249.     friend class QGLContext;
  250.     friend class QWin32PaintEngine;
  251.     friend class QAlphaPaintEngine;
  252.     friend class QPainterPath;
  253.     friend class QTextItemInt;
  254.     friend class QPicturePaintEngine;
  255. #ifndef QT_NO_DATASTREAM
  256.     friend Q_GUI_EXPORT QDataStream &operator<<(QDataStream &, const QFont &);
  257.     friend Q_GUI_EXPORT QDataStream &operator>>(QDataStream &, QFont &);
  258. #endif
  259.     QFontPrivate *d;
  260.     uint resolve_mask;
  261. };
  262. inline bool QFont::bold() const
  263. { return weight() > Normal; }
  264. inline void QFont::setBold(bool enable)
  265. { setWeight(enable ? Bold : Normal); }
  266. inline bool QFont::italic() const
  267. {
  268.     return (style() != StyleNormal);
  269. }
  270. inline void QFont::setItalic(bool b) {
  271.     setStyle(b ? StyleItalic : StyleNormal);
  272. }
  273. /*****************************************************************************
  274.   QFont stream functions
  275.  *****************************************************************************/
  276. #ifndef QT_NO_DATASTREAM
  277. Q_GUI_EXPORT QDataStream &operator<<(QDataStream &, const QFont &);
  278. Q_GUI_EXPORT QDataStream &operator>>(QDataStream &, QFont &);
  279. #endif
  280. #ifndef QT_NO_DEBUG_STREAM
  281. Q_GUI_EXPORT QDebug operator<<(QDebug, const QFont &);
  282. #endif
  283. QT_END_NAMESPACE
  284. QT_END_HEADER
  285. #endif // QFONT_H