Changeset 846 for trunk/src/gui/text/qfontmetrics.cpp
- Timestamp:
- May 5, 2011, 5:36:53 AM (14 years ago)
- Location:
- trunk
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk
- Property svn:mergeinfo changed
/branches/vendor/nokia/qt/4.7.2 (added) merged: 845 /branches/vendor/nokia/qt/current merged: 844 /branches/vendor/nokia/qt/4.6.3 removed
- Property svn:mergeinfo changed
-
trunk/src/gui/text/qfontmetrics.cpp
r769 r846 1 1 /**************************************************************************** 2 2 ** 3 ** Copyright (C) 201 0Nokia Corporation and/or its subsidiary(-ies).3 ** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). 4 4 ** All rights reserved. 5 5 ** Contact: Nokia Corporation (qt-info@nokia.com) … … 329 329 QFontEngine *engine = d->engineForScript(QUnicodeTables::Common); 330 330 Q_ASSERT(engine != 0); 331 return qRound(engine->ascent() +engine->descent()) + 1;331 return qRound(engine->ascent()) + qRound(engine->descent()) + 1; 332 332 } 333 333 … … 357 357 QFontEngine *engine = d->engineForScript(QUnicodeTables::Common); 358 358 Q_ASSERT(engine != 0); 359 return qRound(engine->leading() + engine->ascent() +engine->descent()) + 1;359 return qRound(engine->leading()) + qRound(engine->ascent()) + qRound(engine->descent()) + 1; 360 360 } 361 361 … … 526 526 */ 527 527 int QFontMetrics::width(const QString &text, int len) const 528 { 529 return width(text, len, 0); 530 } 531 532 /*! 533 \internal 534 */ 535 int QFontMetrics::width(const QString &text, int len, int flags) const 528 536 { 529 537 int pos = text.indexOf(QLatin1Char('\x9c')); … … 536 544 return 0; 537 545 538 QTextEngine layout(text, d.data()); 546 if (flags & Qt::TextBypassShaping) { 547 // Skip harfbuzz complex shaping, only use advances 548 int numGlyphs = len; 549 QVarLengthGlyphLayoutArray glyphs(numGlyphs); 550 QFontEngine *engine = d->engineForScript(QUnicodeTables::Common); 551 if (!engine->stringToCMap(text.data(), len, &glyphs, &numGlyphs, 0)) { 552 glyphs.resize(numGlyphs); 553 if (!engine->stringToCMap(text.data(), len, &glyphs, &numGlyphs, 0)) 554 Q_ASSERT_X(false, Q_FUNC_INFO, "stringToCMap shouldn't fail twice"); 555 } 556 557 QFixed width; 558 for (int i = 0; i < numGlyphs; ++i) 559 width += glyphs.advances_x[i]; 560 return qRound(width); 561 } 562 563 QStackTextEngine layout(text, d.data()); 539 564 layout.ignoreBidi = true; 540 565 return qRound(layout.width(0, len)); … … 612 637 int to = qMin(text.length(), pos + 8); 613 638 QString cstr = QString::fromRawData(text.unicode() + from, to - from); 614 Q TextEngine layout(cstr, d.data());639 QStackTextEngine layout(cstr, d.data()); 615 640 layout.ignoreBidi = true; 616 641 layout.itemize(); … … 661 686 return QRect(); 662 687 663 Q TextEngine layout(text, d.data());688 QStackTextEngine layout(text, d.data()); 664 689 layout.ignoreBidi = true; 665 690 layout.itemize(); … … 831 856 return QRect(); 832 857 833 Q TextEngine layout(text, d.data());858 QStackTextEngine layout(text, d.data()); 834 859 layout.ignoreBidi = true; 835 860 layout.itemize(); … … 1376 1401 int len = (pos != -1) ? pos : text.length(); 1377 1402 1378 Q TextEngine layout(text, d.data());1403 QStackTextEngine layout(text, d.data()); 1379 1404 layout.ignoreBidi = true; 1380 1405 layout.itemize(); … … 1453 1478 return QRectF(); 1454 1479 1455 Q TextEngine layout(text, d.data());1480 QStackTextEngine layout(text, d.data()); 1456 1481 layout.ignoreBidi = true; 1457 1482 layout.itemize(); … … 1626 1651 return QRect(); 1627 1652 1628 Q TextEngine layout(text, d.data());1653 QStackTextEngine layout(text, d.data()); 1629 1654 layout.ignoreBidi = true; 1630 1655 layout.itemize();
Note:
See TracChangeset
for help on using the changeset viewer.