You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
qt3/src/kernel/qfont.h

373 lines
8.3 KiB

/****************************************************************************
**
** 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