Source Code (Use browser search to find items of interest.)

Class Index

qt'QtFontFamily (./qt-2.1.0/src/kernel/qfontdatabase.cpp:252)

class QtFontFamily
{
public:
    QtFontFamily( QtFontFoundry *prnt, const QString &n )
	{ p                = prnt;
	  nm               = n;
	  namesDirty       = TRUE;
	  bitmapScalable   = FALSE;
	  smoothlyScalable = FALSE;
	  scalableDirty    = TRUE;
	  localeDirty      = TRUE;
	  supportsLocale   = FALSE;
	}

    const QString &name() const { return nm; }

    const QtFontFoundry *parent() { return p; }

    const QStringList &charSets( bool onlyForLocale = TRUE ) const;
    const QtFontCharSet *charSet( const QString &n = QString::null ) const;

    bool isBitmapScalable() const;
    bool isSmoothlyScalable() const;

    bool hasLocaleCharSet() const;
    bool supportsCharSet( QFont::CharSet chSet ) const;

private:
    void refresh() const;
    void addCharSet( QtFontCharSet *c )
	{ charSetDict.insert( c->name(), c ); }

    QString nm;
    QtFontFoundry *p;

    // QList<QtFontCharSet> charSets;
    QStringList charSetNames;
    QDict<QtFontCharSet> charSetDict;

    bool namesDirty;
    bool localeDirty;
    bool scalableDirty;

    bool bitmapScalable;
    bool smoothlyScalable;
    bool supportsLocale;

    friend void QFontDatabase::createDatabase();
#ifdef _WS_WIN_
    friend void newWinFont( void * p );
    friend void add_style( QtFontCharSet *charSet, const QString& styleName,
		bool italic, bool lesserItalic, int weight );
#endif
};


qt'QtFontFamily::charSets() (./qt-2.1.0/src/kernel/qfontdatabase.cpp:623)

const QStringList &QtFontFamily::charSets( bool onlyForLocale ) const
{
    QtFontFamily *that = (QtFontFamily*)this; // mutable function
    if ( namesDirty ) {
	QDictIterator<QtFontCharSet> iter( charSetDict );
	QtFontCharSet *tmp;
	QString unicode;
	QString local;
	for( ; (tmp = iter.current()) ; ++iter ) {
	    if ( tmp->isLocaleCharSet() )
		local = tmp->name();
	    else if ( tmp->isUnicode() )
		unicode = tmp->name();
	    else if ( !onlyForLocale )
		that->charSetNames.append( tmp->name() );
	}
	that->charSetNames.sort();
	if ( !!unicode )
	    that->charSetNames.prepend( unicode ); // preferred second
	if ( !!local )
	    that->charSetNames.prepend( local ); // preferred first
	that->namesDirty = FALSE;
    }
    return that->charSetNames;
}

static

qt'QtFontFamily::charSet() (./qt-2.1.0/src/kernel/qfontdatabase.cpp:655)

const QtFontCharSet *QtFontFamily::charSet( const QString &n ) const
{
    if ( n.isEmpty() )
	return charSetDict.find ( localCharSet() );
    else
	return charSetDict.find ( n );
}


qt'QtFontFamily::isBitmapScalable() (./qt-2.1.0/src/kernel/qfontdatabase.cpp:663)

bool QtFontFamily::isBitmapScalable() const
{
    refresh();
    return bitmapScalable;
}


qt'QtFontFamily::isSmoothlyScalable() (./qt-2.1.0/src/kernel/qfontdatabase.cpp:669)

bool QtFontFamily::isSmoothlyScalable() const
{
    refresh();
    return smoothlyScalable;
}


qt'QtFontFamily::hasLocaleCharSet() (./qt-2.1.0/src/kernel/qfontdatabase.cpp:675)

bool QtFontFamily::hasLocaleCharSet() const
{
    if ( localeDirty ) {
	QtFontFamily *that   = (QtFontFamily*)this; // mutable function
	QDictIterator<QtFontCharSet> iter( charSetDict );
	QtFontCharSet *tmp;
	that->supportsLocale = FALSE;
	for( ; (tmp = iter.current()) ; ++iter ) {
	    if ( tmp->isLocaleCharSet() || tmp->isUnicode() ) {
		that->supportsLocale = TRUE;
		break;
	    }
	}
	that->localeDirty = FALSE;
    }
    return supportsLocale;
}


qt'QtFontFamily::supportsCharSet() (./qt-2.1.0/src/kernel/qfontdatabase.cpp:693)

bool QtFontFamily::supportsCharSet( QFont::CharSet chSet ) const
{
    QDictIterator<QtFontCharSet> iter( charSetDict );
    QtFontCharSet *tmp;
    for( ; (tmp = iter.current()) ; ++iter ) {
	if ( tmp->charSet() == chSet )
	    return TRUE;;
    }
    return FALSE;
}


qt'QtFontFamily::refresh() (./qt-2.1.0/src/kernel/qfontdatabase.cpp:704)

void QtFontFamily::refresh() const
{
    if ( !scalableDirty )
	return;
    QtFontFamily *that = (QtFontFamily*) this;   // Mutable function
    that->scalableDirty    = FALSE;
    that->smoothlyScalable = FALSE;
    that->bitmapScalable   = FALSE;

    bool isSmooth = TRUE;
    QtFontCharSet *tmp;
    QDictIterator<QtFontCharSet> iter(charSetDict);
    for( ; (tmp = iter.current()) ; ++iter ) {
	if ( !tmp->isSmoothlyScalable() ) {
	    isSmooth = FALSE;
	    if ( !tmp->isBitmapScalable() )
		return;
	}
    }
    if ( isSmooth )
	that->smoothlyScalable = TRUE;
    else
	that->bitmapScalable   = TRUE;
}