From bd0f3345a938b35ce6a12f6150373b0955b8dd12 Mon Sep 17 00:00:00 2001 From: Timothy Pearson Date: Sun, 10 Jul 2011 15:24:15 -0500 Subject: Add Qt3 development HEAD version --- src/kernel/qfont.h | 372 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 372 insertions(+) create mode 100644 src/kernel/qfont.h (limited to 'src/kernel/qfont.h') diff --git a/src/kernel/qfont.h b/src/kernel/qfont.h new file mode 100644 index 0000000..935f04a --- /dev/null +++ b/src/kernel/qfont.h @@ -0,0 +1,372 @@ +/**************************************************************************** +** +** Definition of QFont class +** +** Created : 940514 +** +** Copyright (C) 1992-2008 Trolltech ASA. All rights reserved. +** +** This file is part of the kernel module of the Qt GUI Toolkit. +** +** This file may be used under the terms of the GNU General +** Public License versions 2.0 or 3.0 as published by the Free +** Software Foundation and appearing in the files LICENSE.GPL2 +** and LICENSE.GPL3 included in the packaging of this file. +** Alternatively you may (at your option) use any later version +** of the GNU General Public License if such license has been +** publicly approved by Trolltech ASA (or its successors, if any) +** and the KDE Free Qt Foundation. +** +** Please review the following information to ensure GNU General +** Public Licensing requirements will be met: +** http://trolltech.com/products/qt/licenses/licensing/opensource/. +** If you are unsure which license is appropriate for your use, please +** review the following information: +** http://trolltech.com/products/qt/licenses/licensing/licensingoverview +** or contact the sales department at sales@trolltech.com. +** +** This file may be used under the terms of the Q Public License as +** defined by Trolltech ASA and appearing in the file LICENSE.QPL +** included in the packaging of this file. Licensees holding valid Qt +** Commercial licenses may use this file in accordance with the Qt +** Commercial License Agreement provided with the Software. +** +** This file is provided "AS IS" with NO WARRANTY OF ANY KIND, +** INCLUDING THE WARRANTIES OF DESIGN, MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE. Trolltech reserves all rights not granted +** herein. +** +**********************************************************************/ + +#ifndef QFONT_H +#define QFONT_H + +#ifndef QT_H +#include "qwindowdefs.h" +#include "qstring.h" +#endif // QT_H + + +class QFontPrivate; /* don't touch */ +class QStringList; +class QTextFormatCollection; + +class Q_EXPORT QFont +{ +public: + enum StyleHint { + Helvetica, SansSerif = Helvetica, + Times, Serif = Times, + Courier, TypeWriter = Courier, + OldEnglish, Decorative = OldEnglish, + System, + AnyStyle + }; + + enum StyleStrategy { + PreferDefault = 0x0001, + PreferBitmap = 0x0002, + PreferDevice = 0x0004, + PreferOutline = 0x0008, + ForceOutline = 0x0010, + PreferMatch = 0x0020, + PreferQuality = 0x0040, + PreferAntialias = 0x0080, + NoAntialias = 0x0100, + OpenGLCompatible = 0x0200 + }; + + enum Weight { + Light = 25, + Normal = 50, + DemiBold = 63, + Bold = 75, + Black = 87 + }; + + enum Stretch { + UltraCondensed = 50, + ExtraCondensed = 62, + Condensed = 75, + SemiCondensed = 87, + Unstretched = 100, + SemiExpanded = 112, + Expanded = 125, + ExtraExpanded = 150, + UltraExpanded = 200 + }; + + // default font + QFont(); + // specific font +#ifdef Q_QDOC + QFont( const QString &family, int pointSize = 12, int weight = Normal, + bool italic = FALSE ); +#else + QFont( const QString &family, int pointSize = -1, int weight = -1, + bool italic = FALSE ); +#endif + // copy constructor + QFont( const QFont & ); + + ~QFont(); + + QString family() const; + void setFamily( const QString &); + + int pointSize() const; + float pointSizeFloat() const; + void setPointSize( int ); + void setPointSizeFloat( float ); + + int pixelSize() const; + void setPixelSize( int ); + void setPixelSizeFloat( float ); + + int weight() const; + void setWeight( int ); + + bool bold() const; + void setBold( bool ); + + bool italic() const; + void setItalic( bool ); + + bool underline() const; + void setUnderline( bool ); + + bool overline() const; + void setOverline( bool ); + + bool strikeOut() const; + void setStrikeOut( bool ); + + bool fixedPitch() const; + void setFixedPitch( bool ); + + StyleHint styleHint() const; + StyleStrategy styleStrategy() const; + void setStyleHint( StyleHint, StyleStrategy = PreferDefault ); + void setStyleStrategy( StyleStrategy s ); + + int stretch() const; + void setStretch( int ); + + // is raw mode still needed? + bool rawMode() const; + void setRawMode( bool ); + + // dupicated from QFontInfo + bool exactMatch() const; + + QFont &operator=( const QFont & ); + bool operator==( const QFont & ) const; + bool operator!=( const QFont & ) const; + bool isCopyOf( const QFont & ) const; + + +#ifdef Q_WS_WIN + HFONT handle() const; +#else // !Q_WS_WIN + Qt::HANDLE handle() const; +#endif // Q_WS_WIN + + + // needed for X11 + void setRawName( const QString & ); + QString rawName() const; + + QString key() const; + + QString toString() const; + bool fromString(const QString &); + +#ifndef QT_NO_STRINGLIST + static QString substitute(const QString &); + static QStringList substitutes(const QString &); + static QStringList substitutions(); + static void insertSubstitution(const QString&, const QString &); + static void insertSubstitutions(const QString&, const QStringList &); + static void removeSubstitution(const QString &); +#endif //QT_NO_STRINGLIST + static void initialize(); + static void cleanup(); +#ifndef Q_WS_QWS + static void cacheStatistics(); +#endif + +#if defined(Q_WS_QWS) + void qwsRenderToDisk(bool all=TRUE); +#endif + + + // a copy of this lives in qunicodetables.cpp, as we can't include + // qfont.h it in tools/. Do not modify without changing the script + // enum in qunicodetable_p.h aswell. + enum Script { + // European Alphabetic Scripts + Latin, + Greek, + Cyrillic, + Armenian, + Georgian, + Runic, + Ogham, + SpacingModifiers, + CombiningMarks, + + // Middle Eastern Scripts + Hebrew, + Arabic, + Syriac, + Thaana, + + // South and Southeast Asian Scripts + Devanagari, + Bengali, + Gurmukhi, + Gujarati, + Oriya, + Tamil, + Telugu, + Kannada, + Malayalam, + Sinhala, + Thai, + Lao, + Tibetan, + Myanmar, + Khmer, + + // East Asian Scripts + Han, + Hiragana, + Katakana, + Hangul, + Bopomofo, + Yi, + + // Additional Scripts + Ethiopic, + Cherokee, + CanadianAboriginal, + Mongolian, + + // Symbols + CurrencySymbols, + LetterlikeSymbols, + NumberForms, + MathematicalOperators, + TechnicalSymbols, + GeometricSymbols, + MiscellaneousSymbols, + EnclosedAndSquare, + Braille, + + Unicode, + + // some scripts added in Unicode 3.2 + Tagalog, + Hanunoo, + Buhid, + Tagbanwa, + + KatakanaHalfWidth, + + // from Unicode 4.0 + Limbu, + TaiLe, + + // End +#if !defined(Q_QDOC) + NScripts, + UnknownScript = NScripts, + + NoScript, + + // ---------------------------------------- + // Dear User, you can see values > NScript, + // but they are internal - do not touch. + + Han_Japanese, + Han_SimplifiedChinese, + Han_TraditionalChinese, + Han_Korean, + + LastPrivateScript +#endif + }; + + QString defaultFamily() const; + QString lastResortFamily() const; + QString lastResortFont() const; + +#ifndef QT_NO_COMPAT + + static QFont defaultFont(); + static void setDefaultFont( const QFont & ); + +#endif // QT_NO_COMPAT + + QFont resolve( const QFont & ) const; + +protected: + // why protected? + bool dirty() const; + int deciPointSize() const; + +private: + QFont( QFontPrivate *, QPaintDevice *pd ); + + void detach(); + +#if defined(Q_WS_MAC) + void macSetFont(QPaintDevice *); +#elif defined(Q_WS_X11) + void x11SetScreen( int screen = -1 ); + int x11Screen() const; +#endif + + friend class QFontMetrics; + friend class QFontInfo; + friend class QPainter; + friend class QPSPrinterFont; + friend class QApplication; + friend class QWidget; + friend class QTextFormatCollection; + friend class QTextLayout; + friend class QTextItem; + friend class QGLContext; +#if defined(Q_WS_X11) && !defined(QT_NO_XFTFREETYPE) + friend Qt::HANDLE qt_xft_handle(const QFont &font); +#endif +#ifndef QT_NO_DATASTREAM + friend Q_EXPORT QDataStream &operator<<( QDataStream &, const QFont & ); + friend Q_EXPORT QDataStream &operator>>( QDataStream &, QFont & ); +#endif + + QFontPrivate *d; +}; + + +inline bool QFont::bold() const +{ return weight() > Normal; } + + +inline void QFont::setBold( bool enable ) +{ setWeight( enable ? Bold : Normal ); } + + + + +/***************************************************************************** + QFont stream functions + *****************************************************************************/ + +#ifndef QT_NO_DATASTREAM +Q_EXPORT QDataStream &operator<<( QDataStream &, const QFont & ); +Q_EXPORT QDataStream &operator>>( QDataStream &, QFont & ); +#endif + + +#endif // QFONT_H -- cgit v1.2.1