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.
373 lines
8.3 KiB
373 lines
8.3 KiB
14 years ago
|
/****************************************************************************
|
||
|
**
|
||
|
** 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
|