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