Changeset 181090 in webkit
- Timestamp:
- Mar 5, 2015 11:51:05 AM (9 years ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r181087 r181090 1 2015-03-05 Myles C. Maxfield <mmaxfield@apple.com> 2 3 Mechanical text-related cleanup 4 https://bugs.webkit.org/show_bug.cgi?id=142326 5 6 Reviewed by Andreas Kling. 7 8 Use nullptr instead of 0. 9 Use references instead of pointers. 10 11 No new tests because there is no behavior change. 12 13 * platform/graphics/cocoa/FontCascadeCocoa.mm: 14 (WebCore::FontCascade::adjustSelectionRectForComplexText): 15 (WebCore::FontCascade::getGlyphsAndAdvancesForComplexText): 16 (WebCore::FontCascade::floatWidthForComplexText): 17 (WebCore::FontCascade::offsetForPositionForComplexText): 18 * platform/graphics/mac/ComplexTextController.cpp: 19 (WebCore::TextLayout::TextLayout): 20 (WebCore::ComplexTextController::ComplexTextController): 21 * platform/graphics/mac/ComplexTextController.h: 22 * rendering/InlineIterator.h: 23 (WebCore::InlineIterator::InlineIterator): 24 (WebCore::InlineIterator::clear): 25 (WebCore::bidiNextShared): 26 (WebCore::bidiNextSkippingEmptyInlines): 27 (WebCore::bidiNextIncludingEmptyInlines): 28 (WebCore::InlineWalker::InlineWalker): 29 (WebCore::InlineIterator::increment): 30 * rendering/RenderBlockLineLayout.cpp: 31 (WebCore::setLogicalWidthForTextRun): 32 (WebCore::RenderBlockFlow::computeInlineDirectionPositionsForSegment): 33 * rendering/line/BreakingContextInlineHeaders.h: 34 (WebCore::measureHyphenWidth): 35 (WebCore::textWidth): 36 (WebCore::tryHyphenating): 37 (WebCore::BreakingContext::handleText): 38 (WebCore::BreakingContext::optimalLineBreakLocationForTrailingWord): 39 1 40 2015-03-05 Brent Fulgham <bfulgham@apple.com> 2 41 -
trunk/Source/WebCore/platform/graphics/cocoa/FontCascadeCocoa.mm
r179451 r181090 590 590 void FontCascade::adjustSelectionRectForComplexText(const TextRun& run, LayoutRect& selectionRect, int from, int to) const 591 591 { 592 ComplexTextController controller( this, run);592 ComplexTextController controller(*this, run); 593 593 controller.advance(from); 594 594 float beforeWidth = controller.runWidthSoFar(); … … 607 607 float initialAdvance; 608 608 609 ComplexTextController controller( this, run, false, 0, forTextEmphasis);609 ComplexTextController controller(*this, run, false, 0, forTextEmphasis); 610 610 controller.advance(from); 611 611 float beforeWidth = controller.runWidthSoFar(); … … 657 657 float FontCascade::floatWidthForComplexText(const TextRun& run, HashSet<const Font*>* fallbackFonts, GlyphOverflow* glyphOverflow) const 658 658 { 659 ComplexTextController controller( this, run, true, fallbackFonts);659 ComplexTextController controller(*this, run, true, fallbackFonts); 660 660 if (glyphOverflow) { 661 661 glyphOverflow->top = std::max<int>(glyphOverflow->top, ceilf(-controller.minGlyphBoundingBoxY()) - (glyphOverflow->computeBounds ? 0 : fontMetrics().ascent())); … … 669 669 int FontCascade::offsetForPositionForComplexText(const TextRun& run, float x, bool includePartialGlyphs) const 670 670 { 671 ComplexTextController controller( this, run);671 ComplexTextController controller(*this, run); 672 672 return controller.offsetForPosition(x, includePartialGlyphs); 673 673 } -
trunk/Source/WebCore/platform/graphics/mac/ComplexTextController.cpp
r180779 r181090 54 54 : m_font(font) 55 55 , m_run(constructTextRun(text, font, xPos)) 56 , m_controller(std::make_unique<ComplexTextController>( &m_font, m_run, true))56 , m_controller(std::make_unique<ComplexTextController>(m_font, m_run, true)) 57 57 { 58 58 } … … 117 117 } 118 118 119 ComplexTextController::ComplexTextController(const FontCascade *font, const TextRun& run, bool mayUseNaturalWritingDirection, HashSet<const Font*>* fallbackFonts, bool forTextEmphasis)120 : m_font( *font)119 ComplexTextController::ComplexTextController(const FontCascade& font, const TextRun& run, bool mayUseNaturalWritingDirection, HashSet<const Font*>* fallbackFonts, bool forTextEmphasis) 120 : m_font(font) 121 121 , m_run(run) 122 122 , m_isLTROnly(true) -
trunk/Source/WebCore/platform/graphics/mac/ComplexTextController.h
r178940 r181090 51 51 class ComplexTextController { 52 52 public: 53 ComplexTextController(const FontCascade *, const TextRun&, bool mayUseNaturalWritingDirection = false, HashSet<const Font*>* fallbackFonts = 0, bool forTextEmphasis = false);53 ComplexTextController(const FontCascade&, const TextRun&, bool mayUseNaturalWritingDirection = false, HashSet<const Font*>* fallbackFonts = 0, bool forTextEmphasis = false); 54 54 55 55 // Advance and emit glyphs up to the specified character. -
trunk/Source/WebCore/rendering/InlineIterator.h
r174714 r181090 38 38 public: 39 39 InlineIterator() 40 : m_root( 0)41 , m_renderer( 0)40 : m_root(nullptr) 41 , m_renderer(nullptr) 42 42 , m_nextBreakablePosition(-1) 43 43 , m_pos(0) … … 55 55 } 56 56 57 void clear() { moveTo( 0, 0); }57 void clear() { moveTo(nullptr, 0); } 58 58 59 59 void moveToStartOf(RenderObject* object) … … 80 80 81 81 void fastIncrementInTextNode(); 82 void increment(InlineBidiResolver* = 0);82 void increment(InlineBidiResolver* = nullptr); 83 83 void fastDecrement(); 84 84 bool atEnd() const; … … 213 213 // a bidi resolver as it enters/exits inlines (so it can push/pop embedding levels). 214 214 template <class Observer> 215 static inline RenderObject* bidiNextShared(RenderElement& root, RenderObject* current, Observer* observer = 0, EmptyInlineBehavior emptyInlineBehavior = SkipEmptyInlines, bool* endOfInlinePtr = 0)215 static inline RenderObject* bidiNextShared(RenderElement& root, RenderObject* current, Observer* observer = nullptr, EmptyInlineBehavior emptyInlineBehavior = SkipEmptyInlines, bool* endOfInlinePtr = nullptr) 216 216 { 217 217 RenderObject* next = nullptr; … … 279 279 static inline RenderObject* bidiNextSkippingEmptyInlines(RenderElement& root, RenderObject* current) 280 280 { 281 InlineBidiResolver* observer = 0;281 InlineBidiResolver* observer = nullptr; 282 282 return bidiNextSkippingEmptyInlines(root, current, observer); 283 283 } 284 284 285 static inline RenderObject* bidiNextIncludingEmptyInlines(RenderElement& root, RenderObject* current, bool* endOfInlinePtr = 0)286 { 287 InlineBidiResolver* observer = 0; // Callers who include empty inlines, never use an observer.285 static inline RenderObject* bidiNextIncludingEmptyInlines(RenderElement& root, RenderObject* current, bool* endOfInlinePtr = nullptr) 286 { 287 InlineBidiResolver* observer = nullptr; // Callers who include empty inlines, never use an observer. 288 288 return bidiNextShared(root, current, observer, IncludeEmptyInlines, endOfInlinePtr); 289 289 } … … 354 354 InlineWalker(RenderElement& root) 355 355 : m_root(root) 356 , m_current( 0)356 , m_current(nullptr) 357 357 , m_atEndOfInline(false) 358 358 { … … 388 388 return; 389 389 } 390 // bidiNext can return 0, so use moveTo instead of moveToStartOf390 // bidiNext can return nullptr, so use moveTo instead of moveToStartOf 391 391 moveTo(bidiNextSkippingEmptyInlines(*m_root, m_renderer, resolver), 0); 392 392 } -
trunk/Source/WebCore/rendering/RenderBlockLineLayout.cpp
r180278 r181090 456 456 } 457 457 458 static inline void setLogicalWidthForTextRun(RootInlineBox* lineBox, BidiRun* run, RenderText *renderer, float xPos, const LineInfo& lineInfo,458 static inline void setLogicalWidthForTextRun(RootInlineBox* lineBox, BidiRun* run, RenderText& renderer, float xPos, const LineInfo& lineInfo, 459 459 GlyphOverflowAndFallbackFontsMap& textBoxDataMap, VerticalPositionCache& verticalPositionCache, WordMeasurements& wordMeasurements) 460 460 { … … 462 462 GlyphOverflow glyphOverflow; 463 463 464 const FontCascade& font = lineStyle(*renderer ->parent(), lineInfo).fontCascade();464 const FontCascade& font = lineStyle(*renderer.parent(), lineInfo).fontCascade(); 465 465 // Always compute glyph overflow if the block's line-box-contain value is "glyphs". 466 466 if (lineBox->fitsToGlyphs()) { … … 484 484 485 485 bool kerningIsEnabled = font.typesettingFeatures() & Kerning; 486 bool canUseSimpleFontCodePath = renderer ->canUseSimpleFontCodePath();486 bool canUseSimpleFontCodePath = renderer.canUseSimpleFontCodePath(); 487 487 488 488 // Since we don't cache glyph overflows, we need to re-measure the run if … … 495 495 if (wordMeasurement.width <= 0 || wordMeasurement.startOffset == wordMeasurement.endOffset) 496 496 continue; 497 if (wordMeasurement.renderer != renderer || wordMeasurement.startOffset != lastEndOffset || wordMeasurement.endOffset > run->m_stop)497 if (wordMeasurement.renderer != &renderer || wordMeasurement.startOffset != lastEndOffset || wordMeasurement.endOffset > run->m_stop) 498 498 continue; 499 499 … … 502 502 int wordLength = lastEndOffset - wordMeasurement.startOffset; 503 503 GlyphOverflow overflow; 504 measuredWidth += renderer ->width(wordMeasurement.startOffset, wordLength, xPos + measuredWidth, lineInfo.isFirstLine(),504 measuredWidth += renderer.width(wordMeasurement.startOffset, wordLength, xPos + measuredWidth, lineInfo.isFirstLine(), 505 505 &wordMeasurement.fallbackFonts, &overflow); 506 UChar c = renderer ->characterAt(wordMeasurement.startOffset);506 UChar c = renderer.characterAt(wordMeasurement.startOffset); 507 507 if (i > 0 && wordLength == 1 && (c == ' ' || c == '\t')) 508 measuredWidth += renderer ->style().fontCascade().wordSpacing();508 measuredWidth += renderer.style().fontCascade().wordSpacing(); 509 509 } else 510 510 measuredWidth += wordMeasurement.width; … … 523 523 524 524 if (!measuredWidth) 525 measuredWidth = renderer ->width(run->m_start, run->m_stop - run->m_start, xPos, lineInfo.isFirstLine(), &fallbackFonts, &glyphOverflow);525 measuredWidth = renderer.width(run->m_start, run->m_stop - run->m_start, xPos, lineInfo.isFirstLine(), &fallbackFonts, &glyphOverflow); 526 526 527 527 run->box()->setLogicalWidth(measuredWidth + hyphenWidth); … … 535 535 536 536 // Include text decoration visual overflow as part of the glyph overflow. 537 if (renderer ->style().textDecorationsInEffect() != TextDecorationNone)537 if (renderer.style().textDecorationsInEffect() != TextDecorationNone) 538 538 glyphOverflow.extendTo(visualOverflowForDecorations(run->box()->lineStyle(), downcast<InlineTextBox>(run->box()))); 539 539 … … 748 748 } 749 749 750 setLogicalWidthForTextRun(lineBox, run, &renderText, totalLogicalWidth, lineInfo, textBoxDataMap, verticalPositionCache, wordMeasurements);750 setLogicalWidthForTextRun(lineBox, run, renderText, totalLogicalWidth, lineInfo, textBoxDataMap, verticalPositionCache, wordMeasurements); 751 751 } else { 752 752 bool encounteredJustifiedRuby = false; -
trunk/Source/WebCore/rendering/line/BreakingContextInlineHeaders.h
r181013 r181090 558 558 } 559 559 560 inline float measureHyphenWidth(RenderText *renderer, const FontCascade& font, HashSet<const Font*>* fallbackFonts = 0)561 { 562 const RenderStyle& style = renderer ->style();563 return font.width(RenderBlock::constructTextRun( renderer, font, style.hyphenString().string(), style), fallbackFonts);564 } 565 566 ALWAYS_INLINE float textWidth(RenderText * text, unsigned from, unsigned len, const FontCascade& font, float xPos, bool isFixedPitch, bool collapseWhiteSpace, HashSet<const Font*>& fallbackFonts, TextLayout* layout = 0)567 { 568 const RenderStyle& style = text ->style();560 inline float measureHyphenWidth(RenderText& renderer, const FontCascade& font, HashSet<const Font*>* fallbackFonts = 0) 561 { 562 const RenderStyle& style = renderer.style(); 563 return font.width(RenderBlock::constructTextRun(&renderer, font, style.hyphenString().string(), style), fallbackFonts); 564 } 565 566 ALWAYS_INLINE float textWidth(RenderText& text, unsigned from, unsigned len, const FontCascade& font, float xPos, bool isFixedPitch, bool collapseWhiteSpace, HashSet<const Font*>& fallbackFonts, TextLayout* layout = nullptr) 567 { 568 const RenderStyle& style = text.style(); 569 569 570 570 GlyphOverflow glyphOverflow; 571 if (isFixedPitch || (!from && len == text ->textLength()) || style.hasTextCombine())572 return text ->width(from, len, font, xPos, &fallbackFonts, &glyphOverflow);571 if (isFixedPitch || (!from && len == text.textLength()) || style.hasTextCombine()) 572 return text.width(from, len, font, xPos, &fallbackFonts, &glyphOverflow); 573 573 574 574 if (layout) 575 575 return FontCascade::width(*layout, from, len, &fallbackFonts); 576 576 577 TextRun run = RenderBlock::constructTextRun( text, font,text, from, len, style);578 run.setCharactersLength(text ->textLength() - from);577 TextRun run = RenderBlock::constructTextRun(&text, font, &text, from, len, style); 578 run.setCharactersLength(text.textLength() - from); 579 579 ASSERT(run.charactersLength() >= run.length()); 580 580 581 run.setCharacterScanForCodePath(!text ->canUseSimpleFontCodePath());581 run.setCharacterScanForCodePath(!text.canUseSimpleFontCodePath()); 582 582 run.setTabSize(!collapseWhiteSpace, style.tabSize()); 583 583 run.setXPos(xPos); … … 593 593 } 594 594 595 inline void tryHyphenating(RenderText *text, const FontCascade& font, const AtomicString& localeIdentifier, unsigned consecutiveHyphenatedLines, int consecutiveHyphenatedLinesLimit, int minimumPrefixLimit, int minimumSuffixLimit, unsigned lastSpace, unsigned pos, float xPos, int availableWidth, bool isFixedPitch, bool collapseWhiteSpace, int lastSpaceWordSpacing, InlineIterator& lineBreak, int nextBreakable, bool& hyphenated)595 inline void tryHyphenating(RenderText& text, const FontCascade& font, const AtomicString& localeIdentifier, unsigned consecutiveHyphenatedLines, int consecutiveHyphenatedLinesLimit, int minimumPrefixLimit, int minimumSuffixLimit, unsigned lastSpace, unsigned pos, float xPos, int availableWidth, bool isFixedPitch, bool collapseWhiteSpace, int lastSpaceWordSpacing, InlineIterator& lineBreak, int nextBreakable, bool& hyphenated) 596 596 { 597 597 // Map 'hyphenate-limit-{before,after}: auto;' to 2. … … 623 623 return; 624 624 625 const RenderStyle& style = text ->style();626 TextRun run = RenderBlock::constructTextRun( text, font,text, lastSpace, pos - lastSpace, style);627 run.setCharactersLength(text ->textLength() - lastSpace);625 const RenderStyle& style = text.style(); 626 TextRun run = RenderBlock::constructTextRun(&text, font, &text, lastSpace, pos - lastSpace, style); 627 run.setCharactersLength(text.textLength() - lastSpace); 628 628 ASSERT(run.charactersLength() >= run.length()); 629 629 … … 635 635 return; 636 636 637 prefixLength = lastHyphenLocation(StringView(text ->text()).substring(lastSpace, pos - lastSpace), std::min(prefixLength, pos - lastSpace - minimumSuffixLength) + 1, localeIdentifier);637 prefixLength = lastHyphenLocation(StringView(text.text()).substring(lastSpace, pos - lastSpace), std::min(prefixLength, pos - lastSpace - minimumSuffixLength) + 1, localeIdentifier); 638 638 if (!prefixLength || prefixLength < minimumPrefixLength) 639 639 return; … … 642 642 // space, it should not count towards hyphenate-limit-before. 643 643 if (prefixLength == minimumPrefixLength) { 644 UChar characterAtLastSpace = text ->characterAt(lastSpace);644 UChar characterAtLastSpace = text.characterAt(lastSpace); 645 645 if (characterAtLastSpace == ' ' || characterAtLastSpace == '\n' || characterAtLastSpace == '\t' || characterAtLastSpace == noBreakSpace) 646 646 return; … … 657 657 #endif 658 658 659 lineBreak.moveTo( text, lastSpace + prefixLength, nextBreakable);659 lineBreak.moveTo(&text, lastSpace + prefixLength, nextBreakable); 660 660 hyphenated = true; 661 661 } … … 743 743 744 744 if (c == softHyphen && m_autoWrap && !hyphenWidth && style.hyphens() != HyphensNone) { 745 hyphenWidth = measureHyphenWidth( &renderText, font, &fallbackFonts);745 hyphenWidth = measureHyphenWidth(renderText, font, &fallbackFonts); 746 746 m_width.addUncommittedWidth(hyphenWidth); 747 747 } … … 754 754 wrapW += charWidth; 755 755 bool midWordBreakIsBeforeSurrogatePair = U16_IS_LEAD(c) && m_current.offset() + 1 < renderText.textLength() && U16_IS_TRAIL(renderText[m_current.offset() + 1]); 756 charWidth = textWidth( &renderText, m_current.offset(), midWordBreakIsBeforeSurrogatePair ? 2 : 1, font, m_width.committedWidth() + wrapW, isFixedPitch, m_collapseWhiteSpace, fallbackFonts, textLayout);756 charWidth = textWidth(renderText, m_current.offset(), midWordBreakIsBeforeSurrogatePair ? 2 : 1, font, m_width.committedWidth() + wrapW, isFixedPitch, m_collapseWhiteSpace, fallbackFonts, textLayout); 757 757 midWordBreak = m_width.committedWidth() + wrapW + charWidth > m_width.availableWidth(); 758 758 } … … 791 791 float additionalTempWidth; 792 792 if (wordTrailingSpaceWidth && c == ' ') 793 additionalTempWidth = textWidth( &renderText, lastSpace, m_current.offset() + 1 - lastSpace, font, m_width.currentWidth(), isFixedPitch, m_collapseWhiteSpace, wordMeasurement.fallbackFonts, textLayout) - wordTrailingSpaceWidth;793 additionalTempWidth = textWidth(renderText, lastSpace, m_current.offset() + 1 - lastSpace, font, m_width.currentWidth(), isFixedPitch, m_collapseWhiteSpace, wordMeasurement.fallbackFonts, textLayout) - wordTrailingSpaceWidth; 794 794 else 795 additionalTempWidth = textWidth( &renderText, lastSpace, m_current.offset() - lastSpace, font, m_width.currentWidth(), isFixedPitch, m_collapseWhiteSpace, wordMeasurement.fallbackFonts, textLayout);795 additionalTempWidth = textWidth(renderText, lastSpace, m_current.offset() - lastSpace, font, m_width.currentWidth(), isFixedPitch, m_collapseWhiteSpace, wordMeasurement.fallbackFonts, textLayout); 796 796 797 797 if (wordMeasurement.fallbackFonts.isEmpty() && !fallbackFonts.isEmpty()) … … 821 821 bool lineWasTooWide = false; 822 822 if (m_width.fitsOnLine() && m_currentCharacterIsWS && m_currentStyle->breakOnlyAfterWhiteSpace() && !midWordBreak) { 823 float charWidth = textWidth( &renderText, m_current.offset(), 1, font, m_width.currentWidth(), isFixedPitch, m_collapseWhiteSpace, wordMeasurement.fallbackFonts, textLayout) + (applyWordSpacing ? wordSpacing : 0);823 float charWidth = textWidth(renderText, m_current.offset(), 1, font, m_width.currentWidth(), isFixedPitch, m_collapseWhiteSpace, wordMeasurement.fallbackFonts, textLayout) + (applyWordSpacing ? wordSpacing : 0); 824 824 // Check if line is too big even without the extra space 825 825 // at the end of the line. If it is not, do nothing. … … 838 838 if (canHyphenate && !m_width.fitsOnLine()) { 839 839 m_lineBreakHistory.push([&](InlineIterator& modifyMe) { 840 tryHyphenating( &renderText, font, style.locale(), consecutiveHyphenatedLines, m_blockStyle.hyphenationLimitLines(), style.hyphenationLimitBefore(), style.hyphenationLimitAfter(), lastSpace, m_current.offset(), m_width.currentWidth() - additionalTempWidth, m_width.availableWidth(), isFixedPitch, m_collapseWhiteSpace, lastSpaceWordSpacing, modifyMe, m_current.nextBreakablePosition(), m_lineBreaker.m_hyphenated);840 tryHyphenating(renderText, font, style.locale(), consecutiveHyphenatedLines, m_blockStyle.hyphenationLimitLines(), style.hyphenationLimitBefore(), style.hyphenationLimitAfter(), lastSpace, m_current.offset(), m_width.currentWidth() - additionalTempWidth, m_width.availableWidth(), isFixedPitch, m_collapseWhiteSpace, lastSpaceWordSpacing, modifyMe, m_current.nextBreakablePosition(), m_lineBreaker.m_hyphenated); 841 841 }); 842 842 if (m_lineBreaker.m_hyphenated) { … … 971 971 972 972 // IMPORTANT: current.m_pos is > length here! 973 float additionalTempWidth = m_ignoringSpaces ? 0 : textWidth( &renderText, lastSpace, m_current.offset() - lastSpace, font, m_width.currentWidth(), isFixedPitch, m_collapseWhiteSpace, wordMeasurement.fallbackFonts, textLayout);973 float additionalTempWidth = m_ignoringSpaces ? 0 : textWidth(renderText, lastSpace, m_current.offset() - lastSpace, font, m_width.currentWidth(), isFixedPitch, m_collapseWhiteSpace, wordMeasurement.fallbackFonts, textLayout); 974 974 wordMeasurement.startOffset = lastSpace; 975 975 wordMeasurement.endOffset = m_current.offset(); … … 992 992 if (canHyphenate) { 993 993 m_lineBreakHistory.push([&](InlineIterator& modifyMe) { 994 tryHyphenating( &renderText, font, style.locale(), consecutiveHyphenatedLines, m_blockStyle.hyphenationLimitLines(), style.hyphenationLimitBefore(), style.hyphenationLimitAfter(), lastSpace, m_current.offset(), m_width.currentWidth() - additionalTempWidth, m_width.availableWidth(), isFixedPitch, m_collapseWhiteSpace, lastSpaceWordSpacing, modifyMe, m_current.nextBreakablePosition(), m_lineBreaker.m_hyphenated);994 tryHyphenating(renderText, font, style.locale(), consecutiveHyphenatedLines, m_blockStyle.hyphenationLimitLines(), style.hyphenationLimitBefore(), style.hyphenationLimitAfter(), lastSpace, m_current.offset(), m_width.currentWidth() - additionalTempWidth, m_width.availableWidth(), isFixedPitch, m_collapseWhiteSpace, lastSpaceWordSpacing, modifyMe, m_current.nextBreakablePosition(), m_lineBreaker.m_hyphenated); 995 995 }); 996 996 } … … 1187 1187 if (candidate.renderer() != lineBreak.renderer()) 1188 1188 return best; 1189 float width = textWidth( &renderText, candidate.offset(), renderText.textLength() - candidate.offset(), font, 0, font.isFixedPitch(), m_collapseWhiteSpace, dummyFonts);1189 float width = textWidth(renderText, candidate.offset(), renderText.textLength() - candidate.offset(), font, 0, font.isFixedPitch(), m_collapseWhiteSpace, dummyFonts); 1190 1190 if (width > m_width.availableWidth()) 1191 1191 return best;
Note: See TracChangeset
for help on using the changeset viewer.