OLD | NEW |
---|---|
1 /* | 1 /* |
2 * (C) 1999 Lars Knoll (knoll@kde.org) | 2 * (C) 1999 Lars Knoll (knoll@kde.org) |
3 * (C) 2000 Dirk Mueller (mueller@kde.org) | 3 * (C) 2000 Dirk Mueller (mueller@kde.org) |
4 * Copyright (C) 2004, 2005, 2006, 2007 Apple Inc. All rights reserved. | 4 * Copyright (C) 2004, 2005, 2006, 2007 Apple Inc. All rights reserved. |
5 * Copyright (C) 2006 Andrew Wellington (proton@wiretapped.net) | 5 * Copyright (C) 2006 Andrew Wellington (proton@wiretapped.net) |
6 * Copyright (C) 2006 Graham Dennis (graham.dennis@gmail.com) | 6 * Copyright (C) 2006 Graham Dennis (graham.dennis@gmail.com) |
7 * | 7 * |
8 * This library is free software; you can redistribute it and/or | 8 * This library is free software; you can redistribute it and/or |
9 * modify it under the terms of the GNU Library General Public | 9 * modify it under the terms of the GNU Library General Public |
10 * License as published by the Free Software Foundation; either | 10 * License as published by the Free Software Foundation; either |
(...skipping 1557 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1568 } | 1568 } |
1569 | 1569 |
1570 m_containsReversedText |= !s->isLeftToRightDirection(); | 1570 m_containsReversedText |= !s->isLeftToRightDirection(); |
1571 } | 1571 } |
1572 | 1572 |
1573 float LayoutText::width(unsigned from, unsigned len, LayoutUnit xPos, TextDirect ion textDirection, bool firstLine, HashSet<const SimpleFontData*>* fallbackFonts , FloatRect* glyphBounds) const | 1573 float LayoutText::width(unsigned from, unsigned len, LayoutUnit xPos, TextDirect ion textDirection, bool firstLine, HashSet<const SimpleFontData*>* fallbackFonts , FloatRect* glyphBounds) const |
1574 { | 1574 { |
1575 if (from >= textLength()) | 1575 if (from >= textLength()) |
1576 return 0; | 1576 return 0; |
1577 | 1577 |
1578 if (from + len > textLength()) | 1578 if (len > textLength() || from + len > textLength()) |
1579 len = textLength() - from; | 1579 len = textLength() - from; |
1580 | 1580 |
1581 return width(from, len, style(firstLine)->font(), xPos, textDirection, fallb ackFonts, glyphBounds); | 1581 return width(from, len, style(firstLine)->font(), xPos, textDirection, fallb ackFonts, glyphBounds); |
1582 } | 1582 } |
1583 | 1583 |
1584 float LayoutText::width(unsigned from, unsigned len, const Font& f, LayoutUnit x Pos, TextDirection textDirection, HashSet<const SimpleFontData*>* fallbackFonts, FloatRect* glyphBounds) const | 1584 float LayoutText::width(unsigned from, unsigned len, const Font& f, LayoutUnit x Pos, TextDirection textDirection, HashSet<const SimpleFontData*>* fallbackFonts, FloatRect* glyphBounds) const |
1585 { | 1585 { |
1586 ASSERT(from + len <= textLength()); | 1586 ASSERT(from + len <= textLength()); |
1587 if (!textLength()) | 1587 if (!textLength()) |
1588 return 0; | 1588 return 0; |
1589 | 1589 |
1590 // TODO(wkorman): Incorporate constraints around |from| and |len| in the pre ceding variant of width() here. | |
wkorman
2016/09/17 00:17:22
Seeking feedback on this. AFAICT this method varia
eae
2016/09/17 08:35:51
The other method calls this one with style(firstLi
wkorman
2016/09/17 21:16:42
That's true, but this method is exposed and can be
| |
1591 | |
1590 float w; | 1592 float w; |
1591 if (&f == &style()->font()) { | 1593 if (&f == &style()->font()) { |
1592 if (!style()->preserveNewline() && !from && len == textLength()) { | 1594 if (!style()->preserveNewline() && !from && len == textLength()) { |
1593 if (fallbackFonts) { | 1595 if (fallbackFonts) { |
1594 ASSERT(glyphBounds); | 1596 ASSERT(glyphBounds); |
1595 if (preferredLogicalWidthsDirty() || !m_knownToHaveNoOverflowAnd NoFallbackFonts) | 1597 if (preferredLogicalWidthsDirty() || !m_knownToHaveNoOverflowAnd NoFallbackFonts) |
1596 const_cast<LayoutText*>(this)->computePreferredLogicalWidths (0, *fallbackFonts, *glyphBounds); | 1598 const_cast<LayoutText*>(this)->computePreferredLogicalWidths (0, *fallbackFonts, *glyphBounds); |
1597 else | 1599 else |
1598 *glyphBounds = FloatRect(0, -f.getFontMetrics().floatAscent( ), m_maxWidth, f.getFontMetrics().floatHeight()); | 1600 *glyphBounds = FloatRect(0, -f.getFontMetrics().floatAscent( ), m_maxWidth, f.getFontMetrics().floatHeight()); |
1599 w = m_maxWidth; | 1601 w = m_maxWidth; |
(...skipping 209 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1809 LayoutRect rect = | 1811 LayoutRect rect = |
1810 LayoutRect(IntRect(firstRunX(), firstRunY(), linesBox.width(), linesBox. height())); | 1812 LayoutRect(IntRect(firstRunX(), firstRunY(), linesBox.width(), linesBox. height())); |
1811 LayoutBlock* block = containingBlock(); | 1813 LayoutBlock* block = containingBlock(); |
1812 if (block && hasTextBoxes()) | 1814 if (block && hasTextBoxes()) |
1813 block->adjustChildDebugRect(rect); | 1815 block->adjustChildDebugRect(rect); |
1814 | 1816 |
1815 return rect; | 1817 return rect; |
1816 } | 1818 } |
1817 | 1819 |
1818 } // namespace blink | 1820 } // namespace blink |
OLD | NEW |