| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2000 Lars Knoll (knoll@kde.org) | 2 * Copyright (C) 2000 Lars Knoll (knoll@kde.org) |
| 3 * Copyright (C) 2003, 2004, 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. | 3 * Copyright (C) 2003, 2004, 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. |
| 4 * All right reserved. | 4 * All right reserved. |
| 5 * Copyright (C) 2010 Google Inc. All rights reserved. | 5 * Copyright (C) 2010 Google Inc. All rights reserved. |
| 6 * Copyright (C) 2013 Adobe Systems Incorporated. | 6 * Copyright (C) 2013 Adobe Systems Incorporated. |
| 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 726 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 737 } | 737 } |
| 738 | 738 |
| 739 return true; | 739 return true; |
| 740 } | 740 } |
| 741 | 741 |
| 742 ALWAYS_INLINE int LastBreakablePositionForBreakAll(LineLayoutText text, | 742 ALWAYS_INLINE int LastBreakablePositionForBreakAll(LineLayoutText text, |
| 743 const ComputedStyle& style, | 743 const ComputedStyle& style, |
| 744 int start, | 744 int start, |
| 745 int end) { | 745 int end) { |
| 746 LazyLineBreakIterator line_break_iterator(text.GetText(), | 746 LazyLineBreakIterator line_break_iterator(text.GetText(), |
| 747 LocaleForLineBreakIterator(style)); | 747 style.LocaleForLineBreakIterator()); |
| 748 int last_breakable_position = 0, next_breakable_position = -1; | 748 int last_breakable_position = 0, next_breakable_position = -1; |
| 749 for (int i = start;; i = next_breakable_position + 1) { | 749 for (int i = start;; i = next_breakable_position + 1) { |
| 750 line_break_iterator.IsBreakable(i, next_breakable_position, | 750 line_break_iterator.IsBreakable(i, next_breakable_position, |
| 751 LineBreakType::kBreakAll); | 751 LineBreakType::kBreakAll); |
| 752 if (next_breakable_position == end) | 752 if (next_breakable_position == end) |
| 753 return end; | 753 return end; |
| 754 if (next_breakable_position < 0 || next_breakable_position > end) | 754 if (next_breakable_position < 0 || next_breakable_position > end) |
| 755 return last_breakable_position; | 755 return last_breakable_position; |
| 756 last_breakable_position = next_breakable_position; | 756 last_breakable_position = next_breakable_position; |
| 757 } | 757 } |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 797 ALWAYS_INLINE bool BreakingContext::RewindToFirstMidWordBreak( | 797 ALWAYS_INLINE bool BreakingContext::RewindToFirstMidWordBreak( |
| 798 LineLayoutText text, | 798 LineLayoutText text, |
| 799 const ComputedStyle& style, | 799 const ComputedStyle& style, |
| 800 const Font& font, | 800 const Font& font, |
| 801 bool break_all, | 801 bool break_all, |
| 802 WordMeasurement& word_measurement) { | 802 WordMeasurement& word_measurement) { |
| 803 int start = word_measurement.start_offset; | 803 int start = word_measurement.start_offset; |
| 804 int end = CanMidWordBreakBefore(text) ? start : start + 1; | 804 int end = CanMidWordBreakBefore(text) ? start : start + 1; |
| 805 if (break_all) { | 805 if (break_all) { |
| 806 LazyLineBreakIterator line_break_iterator( | 806 LazyLineBreakIterator line_break_iterator( |
| 807 text.GetText(), LocaleForLineBreakIterator(style)); | 807 text.GetText(), style.LocaleForLineBreakIterator()); |
| 808 int next_breakable = -1; | 808 int next_breakable = -1; |
| 809 line_break_iterator.IsBreakable(end, next_breakable, | 809 line_break_iterator.IsBreakable(end, next_breakable, |
| 810 LineBreakType::kBreakAll); | 810 LineBreakType::kBreakAll); |
| 811 if (next_breakable < 0) | 811 if (next_breakable < 0) |
| 812 return false; | 812 return false; |
| 813 end = next_breakable; | 813 end = next_breakable; |
| 814 } | 814 } |
| 815 if (end >= word_measurement.end_offset) | 815 if (end >= word_measurement.end_offset) |
| 816 return false; | 816 return false; |
| 817 | 817 |
| (...skipping 171 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 989 if (layout_text.IsWordBreak()) { | 989 if (layout_text.IsWordBreak()) { |
| 990 width_.Commit(); | 990 width_.Commit(); |
| 991 line_break_.MoveToStartOf(current_.GetLineLayoutItem()); | 991 line_break_.MoveToStartOf(current_.GetLineLayoutItem()); |
| 992 DCHECK_EQ(current_.Offset(), layout_text.TextLength()); | 992 DCHECK_EQ(current_.Offset(), layout_text.TextLength()); |
| 993 } | 993 } |
| 994 | 994 |
| 995 if (layout_text_info_.text_ != layout_text) { | 995 if (layout_text_info_.text_ != layout_text) { |
| 996 layout_text_info_.text_ = layout_text; | 996 layout_text_info_.text_ = layout_text; |
| 997 layout_text_info_.font_ = &font; | 997 layout_text_info_.font_ = &font; |
| 998 layout_text_info_.line_break_iterator_.ResetStringAndReleaseIterator( | 998 layout_text_info_.line_break_iterator_.ResetStringAndReleaseIterator( |
| 999 layout_text.GetText(), LocaleForLineBreakIterator(style)); | 999 layout_text.GetText(), style.LocaleForLineBreakIterator()); |
| 1000 } else if (layout_text_info_.font_ != &font) { | 1000 } else if (layout_text_info_.font_ != &font) { |
| 1001 layout_text_info_.font_ = &font; | 1001 layout_text_info_.font_ = &font; |
| 1002 } | 1002 } |
| 1003 | 1003 |
| 1004 // Non-zero only when kerning is enabled, in which case we measure | 1004 // Non-zero only when kerning is enabled, in which case we measure |
| 1005 // words with their trailing space, then subtract its width. | 1005 // words with their trailing space, then subtract its width. |
| 1006 float word_trailing_space_width = | 1006 float word_trailing_space_width = |
| 1007 (font.GetFontDescription().GetTypesettingFeatures() & kKerning) | 1007 (font.GetFontDescription().GetTypesettingFeatures() & kKerning) |
| 1008 ? font.Width(ConstructTextRun(font, &kSpaceCharacter, 1, style, | 1008 ? font.Width(ConstructTextRun(font, &kSpaceCharacter, 1, style, |
| 1009 style.Direction())) + | 1009 style.Direction())) + |
| (...skipping 556 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1566 | 1566 |
| 1567 if (style.GetTextIndentType() == kTextIndentHanging) | 1567 if (style.GetTextIndentType() == kTextIndentHanging) |
| 1568 indent_text = indent_text == kIndentText ? kDoNotIndentText : kIndentText; | 1568 indent_text = indent_text == kIndentText ? kDoNotIndentText : kIndentText; |
| 1569 | 1569 |
| 1570 return indent_text; | 1570 return indent_text; |
| 1571 } | 1571 } |
| 1572 | 1572 |
| 1573 } // namespace blink | 1573 } // namespace blink |
| 1574 | 1574 |
| 1575 #endif // BreakingContextInlineHeaders_h | 1575 #endif // BreakingContextInlineHeaders_h |
| OLD | NEW |