OLD | NEW |
1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "core/layout/ng/inline/ng_line_breaker.h" | 5 #include "core/layout/ng/inline/ng_line_breaker.h" |
6 | 6 |
7 #include "core/layout/ng/inline/ng_inline_break_token.h" | 7 #include "core/layout/ng/inline/ng_inline_break_token.h" |
8 #include "core/layout/ng/inline/ng_inline_layout_algorithm.h" | 8 #include "core/layout/ng/inline/ng_inline_layout_algorithm.h" |
9 #include "core/layout/ng/inline/ng_inline_node.h" | 9 #include "core/layout/ng/inline/ng_inline_node.h" |
10 #include "core/layout/ng/inline/ng_text_fragment.h" | 10 #include "core/layout/ng/inline/ng_text_fragment.h" |
(...skipping 151 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
162 #if defined(MOCK_SHAPE_LINE) | 162 #if defined(MOCK_SHAPE_LINE) |
163 unsigned break_offset; | 163 unsigned break_offset; |
164 std::tie(break_offset, item_result->inline_size) = | 164 std::tie(break_offset, item_result->inline_size) = |
165 ShapeLineMock(item, offset, available_width - position, break_iterator); | 165 ShapeLineMock(item, offset, available_width - position, break_iterator); |
166 #else | 166 #else |
167 // TODO(kojii): Change constructor to take LazyLineBreakIterator. | 167 // TODO(kojii): Change constructor to take LazyLineBreakIterator. |
168 // TODO(kojii): We need to instantiate ShapingLineBreaker here because it | 168 // TODO(kojii): We need to instantiate ShapingLineBreaker here because it |
169 // has item-specific info as context. Should they be part of ShapeLine() to | 169 // has item-specific info as context. Should they be part of ShapeLine() to |
170 // instantiate once, or is this just fine since instatiation is not | 170 // instantiate once, or is this just fine since instatiation is not |
171 // expensive? | 171 // expensive? |
| 172 DCHECK_EQ(item.TextShapeResult()->CharacterStartIndex(), |
| 173 item.StartOffset()); |
| 174 DCHECK_EQ(item.TextShapeResult()->CharacterStartIndex() + |
| 175 item.TextShapeResult()->NumCharacters(), |
| 176 item.EndOffset()); |
172 ShapingLineBreaker breaker(&shaper, &item.Style()->GetFont(), | 177 ShapingLineBreaker breaker(&shaper, &item.Style()->GetFont(), |
173 item.TextShapeResult(), item.Style()->Locale(), | 178 item.TextShapeResult(), &break_iterator); |
174 LineBreakType::kNormal); | |
175 // TODO(kojii): Set item.StartOffset/EndOffset() to ShapingLineBreaker, or | 179 // TODO(kojii): Set item.StartOffset/EndOffset() to ShapingLineBreaker, or |
176 // change ShapingLineBreaker to take the range from ShapeResult. | 180 // change ShapingLineBreaker to take the range from ShapeResult. |
177 // item.TextShapeResult() does not have results for outside the item offset | 181 // item.TextShapeResult() does not have results for outside the item offset |
178 // range. | 182 // range. |
179 unsigned break_offset; | 183 unsigned break_offset; |
180 item_result->shape_result = | 184 item_result->shape_result = |
181 breaker.ShapeLine(offset, available_width - position, &break_offset); | 185 breaker.ShapeLine(offset, available_width - position, &break_offset); |
182 item_result->inline_size = item_result->shape_result->SnappedWidth(); | 186 item_result->inline_size = item_result->shape_result->SnappedWidth(); |
183 #endif | 187 #endif |
184 DCHECK_GT(break_offset, offset); | 188 DCHECK_GT(break_offset, offset); |
(...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
320 } | 324 } |
321 | 325 |
322 RefPtr<NGInlineBreakToken> NGLineBreaker::CreateBreakToken() const { | 326 RefPtr<NGInlineBreakToken> NGLineBreaker::CreateBreakToken() const { |
323 const Vector<NGInlineItem>& items = node_->Items(); | 327 const Vector<NGInlineItem>& items = node_->Items(); |
324 if (item_index_ >= items.size()) | 328 if (item_index_ >= items.size()) |
325 return nullptr; | 329 return nullptr; |
326 return NGInlineBreakToken::Create(node_, item_index_, offset_); | 330 return NGInlineBreakToken::Create(node_, item_index_, offset_); |
327 } | 331 } |
328 | 332 |
329 } // namespace blink | 333 } // namespace blink |
OLD | NEW |