// This is the SIP interface definition for QFont.
//
// Copyright (c) 2007
// 	Riverbank Computing Limited <info@riverbankcomputing.co.uk>
// 
// This file is part of PyQt.
// 
// This copy of PyQt is free software; you can redistribute it and/or modify it
// under the terms of the GNU General Public License as published by the Free
// Software Foundation; either version 2, or (at your option) any later
// version.
// 
// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
// FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
// details.
// 
// You should have received a copy of the GNU General Public License along with
// PyQt; see the file LICENSE.  If not, write to the Free Software Foundation,
// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.


%ExportedDoc
<Sect2><Title>QFont</Title>
<Para>
<Literal>QFont</Literal> is fully implemented, including the Python
<Literal>==</Literal> and <Literal>!=</Literal> operators.
</Para>
</Sect2>
%End


class QFont
{
%TypeHeaderCode
#include <qfont.h>
%End

public:
%If (- Qt_2_00)
	enum CharSet {
		Latin1,	ISO_8859_1 = Latin1, AnyCharSet,
		Latin2,	ISO_8859_2 = Latin2,
		Latin3,	ISO_8859_3 = Latin3,
		Latin4,	ISO_8859_4 = Latin4,
		Latin5,	ISO_8859_5 = Latin5,
		Latin6,	ISO_8859_6 = Latin6,
		Latin7,	ISO_8859_7 = Latin7,
		Latin8,	ISO_8859_8 = Latin8,
		Latin9,	ISO_8859_9 = Latin9,
		KOI8R
	};
%End
%If (Qt_2_00 - Qt_2_1_0)
	enum CharSet {
		ISO_8859_1, Latin1 = ISO_8859_1, AnyCharSet,
		ISO_8859_2, Latin2 = ISO_8859_2,
		ISO_8859_3, Latin3 = ISO_8859_3,
		ISO_8859_4, Latin4 = ISO_8859_4,
		ISO_8859_5,
		ISO_8859_6,
		ISO_8859_7,
		ISO_8859_8,
		ISO_8859_9, Latin5 = ISO_8859_9,
		ISO_8859_10, Latin6 = ISO_8859_10,
		ISO_8859_11,
		ISO_8859_12,
		ISO_8859_13, Latin7 = ISO_8859_13,
		ISO_8859_14, Latin8 = ISO_8859_14,
		ISO_8859_15, Latin9 = ISO_8859_15,
		KOI8R,
		Set_Ja, Set_1 = Set_Ja,
		Set_Ko,
		Set_Th_TH,
		Set_Zh,
		Set_Zh_TW, Set_N = Set_Zh_TW,
		Unicode
	};
%End
%If (Qt_2_1_0 - Qt_2_2_0)
	enum CharSet {
		ISO_8859_1, Latin1 = ISO_8859_1, AnyCharSet,
		ISO_8859_2, Latin2 = ISO_8859_2,
		ISO_8859_3, Latin3 = ISO_8859_3,
		ISO_8859_4, Latin4 = ISO_8859_4,
		ISO_8859_5,
		ISO_8859_6,
		ISO_8859_7,
		ISO_8859_8,
		ISO_8859_9, Latin5 = ISO_8859_9,
		ISO_8859_10, Latin6 = ISO_8859_10,
		ISO_8859_11,
		ISO_8859_12,
		ISO_8859_13, Latin7 = ISO_8859_13,
		ISO_8859_14, Latin8 = ISO_8859_14,
		ISO_8859_15, Latin9 = ISO_8859_15,
		KOI8R,
		Set_Ja, Set_1 = Set_Ja,
		Set_Ko,
		Set_Th_TH,
		Set_Zh,
		Set_Zh_TW, Set_N = Set_Zh_TW,
		Unicode,
		Set_GBK,
		Set_Big5
	};
%End
%If (Qt_2_2_0 - Qt_3_0_0)
	enum CharSet {
		ISO_8859_1, Latin1 = ISO_8859_1, AnyCharSet,
		ISO_8859_2, Latin2 = ISO_8859_2,
		ISO_8859_3, Latin3 = ISO_8859_3,
		ISO_8859_4, Latin4 = ISO_8859_4,
		ISO_8859_5,
		ISO_8859_6,
		ISO_8859_7,
		ISO_8859_8,
		ISO_8859_9, Latin5 = ISO_8859_9,
		ISO_8859_10, Latin6 = ISO_8859_10,
		ISO_8859_11,
		ISO_8859_12,
		ISO_8859_13, Latin7 = ISO_8859_13,
		ISO_8859_14, Latin8 = ISO_8859_14,
		ISO_8859_15, Latin9 = ISO_8859_15,
		KOI8R,
		Set_Ja, Set_1 = Set_Ja,
		Set_Ko,
		Set_Th_TH,
		Set_Zh,
		Set_Zh_TW, Set_N = Set_Zh_TW,
		Unicode,
		Set_GBK,
		Set_Big5,
		JIS_X_0201 = 0xa0,
		JIS_X_0208 = 0xc0, Enc16 = JIS_X_0208,
		KSC_5601,
		GB_2312,
		Big5,
		TSCII
	};
%End

	enum StyleHint {
		Helvetica,
		Times,
		Courier,
		OldEnglish,
		System,
		AnyStyle,
		SansSerif,
		Serif,
		TypeWriter,
		Decorative
	};

%If (Qt_2_2_0 -)
	enum StyleStrategy {
		PreferDefault,
		PreferBitmap,
		PreferDevice,
		PreferOutline,
		ForceOutline,
		PreferMatch,
		PreferQuality,
%If (Qt_3_0_0 -)
		PreferAntialias,
		NoAntialias,
%End
%If (Qt_3_2_0 -)
		OpenGLCompatible,
%End
	};
%End

	enum Weight {
		Light,
		Normal,
		DemiBold,
		Bold,
		Black
	};

%If (Qt_3_2_0 -)
	enum Stretch {
		UltraCondensed,
		ExtraCondensed,
		Condensed,
		SemiCondensed,
		Unstretched,
		SemiExpanded,
		Expanded,
		ExtraExpanded,
		UltraExpanded
	};
%End

	QFont();
%If (- Qt_2_00)
	QFont(const char *,int = 12,int = Normal,bool = 0);
	QFont(const char *,int,int,bool,CharSet);
%End
%If (Qt_2_00 - Qt_3_2_0)
	QFont(const QString &,int = 12,int = Normal,bool = 0);
%End
%If (Qt_3_2_0 -)
	QFont(const QString &,int = 12,int = -1,bool = 0);
%End
%If (Qt_2_00 - Qt_3_0_0)
	QFont(const QString &,int,int,bool,CharSet);
%End
	QFont(const QFont &);

%If (- Qt_2_00)
	const char *family() const;
	void setFamily(const char *);
%End
%If (Qt_2_00 -)
	QString family() const;
	void setFamily(const QString &);

	float pointSizeFloat() const;
	void setPointSizeFloat(float);

	int pixelSize() const;
	void setPixelSize(int);
	void setPixelSizeFloat(float);
%End
	int pointSize() const;
	void setPointSize(int);

	int weight() const;
	void setWeight(int);

	bool bold() const;
	void setBold(bool);

	bool italic() const;
	void setItalic(bool);

	bool underline() const;
	void setUnderline(bool);

%If (Qt_3_2_0 -)
	bool overline() const;
	void setOverline(bool);
%End

	bool strikeOut() const;
	void setStrikeOut(bool);

	bool fixedPitch() const;
	void setFixedPitch(bool);

	StyleHint styleHint() const;
%If (Qt_2_2_0 -)
	StyleStrategy styleStrategy() const;
%End
%If (- Qt_3_0_0)
	void setStyleHint(StyleHint);
%End
%If (Qt_2_2_0 - Qt_3_0_0)
	void setStyleHint(StyleHint,StyleStrategy);
%End
%If (Qt_3_0_0 -)
	void setStyleHint(StyleHint,StyleStrategy = PreferDefault);
	void setStyleStrategy(StyleStrategy);
%End

%If (- Qt_3_0_0)
	CharSet charSet() const;
	void setCharSet(CharSet);
%End

%If (Qt_3_2_0 -)
	int stretch() const;
	void setStretch(int);
%End

	bool rawMode() const;
	void setRawMode(bool);

	bool exactMatch() const;

	bool operator==(const QFont &) const;
	bool operator!=(const QFont &) const;

	bool isCopyOf(const QFont &) const;

%If (- Qt_2_00)
	HANDLE handle(HANDLE = 0);
	const char *rawName() const;
	static const QFont &defaultFont();
	static const char *substitute(const char *);
	static void insertSubstitution(const char *,const char *);
	static void removeSubstitution(const char *);
	static void listSubstitutions(QStrList *);
%End

%If (Qt_2_00 - Qt_3_0_0)
	static CharSet charSetForLocale();
%End

%If (Qt_2_00 -)
%If (- Qt_3_0_0)
%If (WS_X11)
	HANDLE handle() const;
%End
%End
%If (Qt_3_0_0 -)
%If (WS_X11)
	Qt::HANDLE handle() const;
%End
%End
	void setRawName(const QString &);
	QString rawName() const;
%End
	QString key() const;
%If (Qt_3_0_0 -)
	QString toString() const;
	bool fromString(const QString &);
%End
%If (Qt_2_00 - Qt_3_0_0)
	static QString encodingName(CharSet);
%End
%If (Qt_2_00 -)
	static QString substitute(const QString &);
%If (Qt_3_0_0 -)
	static QStringList substitutes(const QString &);
%End
	static QStringList substitutions();
	static void insertSubstitution(const QString &,const QString &);
%If (Qt_3_0_0 -)
	static void insertSubstitutions(const QString &,const QStringList &);
%End
	static void removeSubstitution(const QString &);
%If (- Qt_3_0_0)
	static void locale_init();
%End
%End

	static void initialize();
	static void cleanup();
	static void cacheStatistics();

%If (Qt_3_0_0 -)
	enum Script {
		Latin,
		Greek,
		Cyrillic,
		Armenian,
		Georgian,
		Runic,
		Ogham,
		SpacingModifiers,
		CombiningMarks,
 
		Hebrew,
		Arabic,
		Syriac,
		Thaana,
 
		Devanagari,
		Bengali,
		Gurmukhi,
		Gujarati,
		Oriya,
		Tamil,
		Telugu,
		Kannada,
		Malayalam,
		Sinhala,
		Thai,
		Lao,
		Tibetan,
		Myanmar,
		Khmer,
 
		Han,
		Hiragana,
		Katakana,
		Hangul,
		Bopomofo,
		Yi,
 
		Ethiopic,
		Cherokee,
		CanadianAboriginal,
		Mongolian,
 
		CurrencySymbols,
		LetterlikeSymbols,
		NumberForms,
		MathematicalOperators,
		TechnicalSymbols,
		GeometricSymbols,
		MiscellaneousSymbols,
		EnclosedAndSquare,
		Braille,
 
		Unicode,

%If (Qt_3_2_0 -)
		Tagalog,
		Hanunoo,
		Buhid,
		Tagbanwa,

		KatakanaHalfWidth,
%End

%If (Qt_3_3_0 -)
		Limbu,
		TaiLe,
%End
	};

	QString defaultFamily() const;
	QString lastResortFamily() const;
	QString lastResortFont() const;
%End

%If (Qt_2_00 - Qt_3_0_0)
	static QFont defaultFont();
%End
%If (- Qt_3_0_0)
	static void setDefaultFont(const QFont &);
%End

%If (Qt_3_2_0 -)
	QFont resolve(const QFont &) const;
%End

protected:
	bool dirty() const;
%If (- Qt_3_0_0)
	QString defaultFamily() const;
	QString lastResortFamily() const;
	QString lastResortFont() const;
%End
	int deciPointSize() const;
};
