Home | All Classes | Main Classes | Annotated | Grouped Classes | Functions |

# ntqfont.h

This is the verbatim text of the ntqfont.h include file. It is provided only for illustration; the copyright remains with Trolltech.

    /****************************************************************************
    ** $Id: qt/ntqfont.h   3.3.8   edited Jan 11 14:38 $
    **
    ** Definition of TQFont class
    **
    ** Created : 940514
    **
    ** Copyright (C) 1992-2007 Trolltech ASA.  All rights reserved.
    **
    ** This file is part of the kernel module of the TQt 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 file LICENSE.GPL 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 TQt 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.TQPL
    ** included in the packaging of this file.  Licensees holding valid TQt
    ** Commercial licenses may use this file in accordance with the TQt
    ** 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 TQFONT_H
    #define TQFONT_H

    #ifndef QT_H
    #include "ntqwindowdefs.h"
    #include "ntqstring.h"
    #endif // QT_H

    class TQFontPrivate;                                     /* don't touch */
    class TQStringList;
    class TQTextFormatCollection;

    class TQ_EXPORT TQFont
    {
    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
        TQFont();
        // specific font
    #ifdef Q_QDOC
        TQFont( const TQString &family, int pointSize = 12, int weight = Normal,
    	   bool italic = FALSE );
    #else
        TQFont( const TQString &family, int pointSize = -1, int weight = -1,
    	   bool italic = FALSE );
    #endif
        // copy constructor
        TQFont( const TQFont & );

        ~TQFont();

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

        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 TQFontInfo
        bool exactMatch() const;

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

    #ifdef TQ_WS_WIN
        HFONT handle() const;
    #else // !TQ_WS_WIN
        TQt::HANDLE handle() const;
    #endif // TQ_WS_WIN

        // needed for X11
        void setRawName( const TQString & );
        TQString rawName() const;

        TQString key() const;

        TQString toString() const;
        bool fromString(const TQString &);

    #ifndef TQT_NO_STRINGLIST
        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 &);
    #endif //TQT_NO_STRINGLIST
        static void initialize();
        static void cleanup();
    #ifndef TQ_WS_QWS
        static void cacheStatistics();
    #endif

    #if defined(TQ_WS_QWS)
        void qwsRenderToDisk(bool all=TRUE);
    #endif

        // a copy of this lives in qunicodetables.cpp, as we can't include
        // ntqfont.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
        };

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

    #ifndef TQT_NO_COMPAT

        static TQFont defaultFont();
        static void setDefaultFont( const TQFont & );

    #endif // TQT_NO_COMPAT

        TQFont resolve( const TQFont & ) const;

    protected:
        // why protected?
        bool dirty() const;
        int deciPointSize() const;

    private:
        TQFont( TQFontPrivate *, TQPaintDevice *pd );

        void detach();

    #if defined(TQ_WS_MAC)
        void macSetFont(TQPaintDevice *);
    #elif defined(TQ_WS_X11)
        void x11SetScreen( int screen = -1 );
        int x11Screen() const;
    #endif

        friend class TQFontMetrics;
        friend class TQFontInfo;
        friend class TQPainter;
        friend class TQPSPrinterFont;
        friend class TQApplication;
        friend class TQWidget;
        friend class TQTextFormatCollection;
        friend class TQTextLayout;
        friend class TQTextItem;
        friend class TQGLContext;
    #if defined(TQ_WS_X11) && !defined(TQT_NO_XFTFREETYPE)
        friend TQt::HANDLE qt_xft_handle(const TQFont &font);
    #endif
    #ifndef TQT_NO_DATASTREAM
        friend TQ_EXPORT TQDataStream &operator<<( TQDataStream &, const TQFont & );
        friend TQ_EXPORT TQDataStream &operator>>( TQDataStream &, TQFont & );
    #endif

        TQFontPrivate *d;
    };

    inline bool TQFont::bold() const
    { return weight() > Normal; }

    inline void TQFont::setBold( bool enable )
    { setWeight( enable ? Bold : Normal ); }

    /*****************************************************************************
      TQFont stream functions
     *****************************************************************************/

    #ifndef TQT_NO_DATASTREAM
    TQ_EXPORT TQDataStream &operator<<( TQDataStream &, const TQFont & );
    TQ_EXPORT TQDataStream &operator>>( TQDataStream &, TQFont & );
    #endif

    #endif // TQFONT_H