// This is the SIP interface definition for TQFont.
//
// Copyright (c) 2007
// 	Riverbank Computing Limited <info@riverbankcomputing.co.uk>
// 
// This file is part of PyTQt.
// 
// This copy of PyTQt 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.
// 
// PyTQt 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
// PyTQt; 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>TQFont</Title>
<Para>
<Literal>TQFont</Literal> is fully implemented, including the Python
<Literal>==</Literal> and <Literal>!=</Literal> operators.
</Para>
</Sect2>
%End


class TQFont
{
%TypeHeaderCode
#include <tqfont.h>
%End

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

	enum StyleStrategy {
		PreferDefault,
		PreferBitmap,
		PreferDevice,
		PreferOutline,
		ForceOutline,
		PreferMatch,
		PreferQuality,
		PreferAntialias,
		NoAntialias,
		OpenGLCompatible,
	};

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

	enum Stretch {
		UltraCondensed,
		ExtraCondensed,
		Condensed,
		SemiCondensed,
		Unstretched,
		SemiExpanded,
		Expanded,
		ExtraExpanded,
		UltraExpanded
	};

	TQFont();
	TQFont(const TQString &,int = 12,int = -1,bool = 0);
	TQFont(const TQFont &);

	TQString family() const;
	void setFamily(const TQString &);

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

	int pixelSize() const;
	void setPixelSize(int);
	void setPixelSizeFloat(float);
	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);

	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);

	int stretch() const;
	void setStretch(int);

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

	bool exactMatch() const;

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

	bool isCopyOf(const TQFont &) const;

%If (WS_X11)
	TQt::HANDLE handle() const;
%End
	void setRawName(const TQString &);
	TQString rawName() const;
	TQString key() const;
	TQString toString() const;
	bool fromString(const TQString &);
	static TQString substitute(const TQString &);
	static TQStringList substitutes(const TQString &);
	static TQStringList substitutions();
	static void insertSubstitution(const TQString &,const TQString &);
	static void insertSubstitutions(const TQString &,const TQStringList &);
	static void removeSubstitution(const TQString &);

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

	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,

		Tagalog,
		Hanunoo,
		Buhid,
		Tagbanwa,

		KatakanaHalfWidth,

		Limbu,
		TaiLe,
	};

	TQString defaultFamily() const;
	TQString lastResortFamily() const;
	TQString lastResortFont() const;

	TQFont resolve(const TQFont &) const;

protected:
	bool dirty() const;
	int deciPointSize() const;
};
