Changeset 651 for trunk/src/gui/text/qfontengine_s60.cpp
- Timestamp:
- Mar 8, 2010, 12:52:58 PM (15 years ago)
- Location:
- trunk
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk
- Property svn:mergeinfo changed
/branches/vendor/nokia/qt/4.6.2 (added) merged: 650 /branches/vendor/nokia/qt/current merged: 649 /branches/vendor/nokia/qt/4.6.1 removed
- Property svn:mergeinfo changed
-
trunk/src/gui/text/qfontengine_s60.cpp
r561 r651 1 1 /**************************************************************************** 2 2 ** 3 ** Copyright (C) 20 09Nokia Corporation and/or its subsidiary(-ies).3 ** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). 4 4 ** All rights reserved. 5 5 ** Contact: Nokia Corporation (qt-info@nokia.com) … … 130 130 } 131 131 132 CFont *QFontEngineS60::fontWithSize(qreal size) const 133 { 134 CFont *result = 0; 135 TFontSpec fontSpec(qt_QString2TPtrC(QFontEngine::fontDef.family), TInt(size)); 136 fontSpec.iFontStyle.SetBitmapType(EAntiAliasedGlyphBitmap); 137 fontSpec.iFontStyle.SetPosture(QFontEngine::fontDef.style == QFont::StyleNormal?EPostureUpright:EPostureItalic); 138 fontSpec.iFontStyle.SetStrokeWeight(QFontEngine::fontDef.weight > QFont::Normal?EStrokeWeightBold:EStrokeWeightNormal); 139 const TInt errorCode = S60->screenDevice()->GetNearestFontToDesignHeightInPixels(result, fontSpec); 140 Q_ASSERT(result && (errorCode == 0)); 141 return result; 142 } 143 144 void QFontEngineS60::setFontScale(qreal scale) 145 { 146 if (qFuzzyCompare(scale, qreal(1))) { 147 if (!m_originalFont) 148 m_originalFont = fontWithSize(m_originalFontSizeInPixels); 149 m_activeFont = m_originalFont; 150 } else { 151 const qreal scaledFontSizeInPixels = m_originalFontSizeInPixels * scale; 152 if (!m_scaledFont || 153 (TInt(scaledFontSizeInPixels) != TInt(m_scaledFontSizeInPixels))) { 154 releaseFont(m_scaledFont); 155 m_scaledFontSizeInPixels = scaledFontSizeInPixels; 156 m_scaledFont = fontWithSize(m_scaledFontSizeInPixels); 157 } 158 m_activeFont = m_scaledFont; 159 } 160 } 161 162 void QFontEngineS60::releaseFont(CFont *&font) 163 { 164 if (font) { 165 S60->screenDevice()->ReleaseFont(font); 166 font = 0; 167 } 168 } 169 132 170 QFontEngineS60::QFontEngineS60(const QFontDef &request, const QFontEngineS60Extensions *extensions) 133 171 : m_extensions(extensions) 172 , m_originalFont(0) 173 , m_originalFontSizeInPixels((request.pixelSize >= 0)? 174 request.pixelSize:pointsToPixels(request.pointSize)) 175 , m_scaledFont(0) 176 , m_scaledFontSizeInPixels(0) 177 , m_activeFont(0) 134 178 { 135 179 QFontEngine::fontDef = request; 136 m_fontSizeInPixels = (request.pixelSize >= 0)? 137 request.pixelSize:pointsToPixels(request.pointSize); 138 139 TFontSpec fontSpec(qt_QString2TPtrC(request.family), m_fontSizeInPixels); 140 fontSpec.iFontStyle.SetBitmapType(EAntiAliasedGlyphBitmap); 141 fontSpec.iFontStyle.SetPosture(request.style == QFont::StyleNormal?EPostureUpright:EPostureItalic); 142 fontSpec.iFontStyle.SetStrokeWeight(request.weight > QFont::Normal?EStrokeWeightBold:EStrokeWeightNormal); 143 const TInt errorCode = S60->screenDevice()->GetNearestFontToDesignHeightInPixels(m_font, fontSpec); 144 Q_ASSERT(errorCode == 0); 145 180 setFontScale(1.0); 146 181 cache_cost = sizeof(QFontEngineS60); 147 182 } … … 149 184 QFontEngineS60::~QFontEngineS60() 150 185 { 151 S60->screenDevice()->ReleaseFont(m_font); 186 releaseFont(m_originalFont); 187 releaseFont(m_scaledFont); 152 188 } 153 189 … … 252 288 QFixed QFontEngineS60::ascent() const 253 289 { 254 return m_ font->FontMaxAscent();290 return m_originalFont->FontMaxAscent(); 255 291 } 256 292 257 293 QFixed QFontEngineS60::descent() const 258 294 { 259 return m_ font->FontMaxDescent();295 return m_originalFont->FontMaxDescent(); 260 296 } 261 297 … … 267 303 qreal QFontEngineS60::maxCharWidth() const 268 304 { 269 return m_ font->MaxCharWidthInPixels();305 return m_originalFont->MaxCharWidthInPixels(); 270 306 } 271 307 … … 303 339 304 340 const CFont::TCharacterDataAvailability availability = 305 m_font->GetCharacterData(specialCode, metrics, bitmap, bitmapSize);341 m_activeFont->GetCharacterData(specialCode, metrics, bitmap, bitmapSize); 306 342 const glyph_t fallbackGlyph = '?'; 307 343 if (availability != CFont::EAllCharacterData) { 308 344 const CFont::TCharacterDataAvailability fallbackAvailability = 309 m_font->GetCharacterData(fallbackGlyph, metrics, bitmap, bitmapSize);345 m_activeFont->GetCharacterData(fallbackGlyph, metrics, bitmap, bitmapSize); 310 346 Q_ASSERT(fallbackAvailability == CFont::EAllCharacterData); 311 347 }
Note:
See TracChangeset
for help on using the changeset viewer.