Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(237)

Side by Side Diff: third_party/WebKit/Source/core/layout/ng/inline/ng_inline_items_builder.cc

Issue 2913773002: [WIP][b:eae_mywip_paint] Paint Selection NG.
Patch Set: update Created 3 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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_inline_items_builder.h" 5 #include "core/layout/ng/inline/ng_inline_items_builder.h"
6 6
7 #include "core/layout/LayoutObject.h" 7 #include "core/layout/LayoutObject.h"
8 #include "core/layout/ng/inline/ng_inline_node.h" 8 #include "core/layout/ng/inline/ng_inline_node.h"
9 #include "core/style/ComputedStyle.h" 9 #include "core/style/ComputedStyle.h"
10 10
(...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after
150 unsigned start_offset = text_.length(); 150 unsigned start_offset = text_.length();
151 for (unsigned i = start; i < end;) { 151 for (unsigned i = start; i < end;) {
152 UChar c = string[i]; 152 UChar c = string[i];
153 if (c == kNewlineCharacter) { 153 if (c == kNewlineCharacter) {
154 // LayoutBR does not set preserve_newline, but should be preserved. 154 // LayoutBR does not set preserve_newline, but should be preserved.
155 if (!i && end == 1 && layout_object && layout_object->IsBR()) { 155 if (!i && end == 1 && layout_object && layout_object->IsBR()) {
156 AppendForcedBreak(style, layout_object); 156 AppendForcedBreak(style, layout_object);
157 return; 157 return;
158 } 158 }
159 159
160 if (last_collapsible_space_ == CollapsibleSpace::kNone) 160 if (last_collapsible_space_ == CollapsibleSpace::kNone) {
161 text_.Append(kSpaceCharacter); 161 text_.Append(kSpaceCharacter);
162 }
162 last_collapsible_space_ = CollapsibleSpace::kNewline; 163 last_collapsible_space_ = CollapsibleSpace::kNewline;
164 if (offset_mapping_)
165 offset_mapping_->push_back(text_.length());
163 i++; 166 i++;
164 continue; 167 continue;
165 } 168 }
166 169
167 if (c == kSpaceCharacter || c == kTabulationCharacter) { 170 if (c == kSpaceCharacter || c == kTabulationCharacter) {
168 if (last_collapsible_space_ == CollapsibleSpace::kNone) { 171 if (last_collapsible_space_ == CollapsibleSpace::kNone) {
169 text_.Append(kSpaceCharacter); 172 text_.Append(kSpaceCharacter);
170 last_collapsible_space_ = CollapsibleSpace::kSpace; 173 last_collapsible_space_ = CollapsibleSpace::kSpace;
171 } 174 }
175 if (offset_mapping_)
176 offset_mapping_->push_back(text_.length());
172 i++; 177 i++;
173 continue; 178 continue;
174 } 179 }
175 180
176 if (last_collapsible_space_ == CollapsibleSpace::kNewline) { 181 if (last_collapsible_space_ == CollapsibleSpace::kNewline) {
177 RemoveTrailingCollapsibleNewlineIfNeeded(&start_offset, string, i, style); 182 RemoveTrailingCollapsibleNewlineIfNeeded(&start_offset, string, i, style);
178 } 183 }
179 184
180 size_t end_of_non_space = string.Find(IsCollapsibleSpace, i + 1); 185 size_t end_of_non_space = string.Find(IsCollapsibleSpace, i + 1);
181 if (end_of_non_space == kNotFound) 186 if (end_of_non_space == kNotFound)
182 end_of_non_space = string.length(); 187 end_of_non_space = string.length();
183 text_.Append(string, i, end_of_non_space - i); 188 text_.Append(string, i, end_of_non_space - i);
189 if (offset_mapping_) {
kojii 2017/06/16 11:25:56 Changes in this file is not for review, correct?
190 size_t apend_size = end_of_non_space - i;
191 for (size_t k = 0; k < apend_size; k++)
192 offset_mapping_->push_back(text_.length() - apend_size + k + 1);
193 }
194
184 i = end_of_non_space; 195 i = end_of_non_space;
185 last_collapsible_space_ = CollapsibleSpace::kNone; 196 last_collapsible_space_ = CollapsibleSpace::kNone;
186 } 197 }
187 198
188 if (text_.length() > start_offset) { 199 if (text_.length() > start_offset) {
189 AppendItem(items_, NGInlineItem::kText, start_offset, text_.length(), style, 200 AppendItem(items_, NGInlineItem::kText, start_offset, text_.length(), style,
190 layout_object); 201 layout_object);
191 } 202 }
192 } 203 }
193 204
(...skipping 228 matching lines...) Expand 10 before | Expand all | Expand 10 after
422 } 433 }
423 434
424 void NGInlineItemsBuilder::Exit(LayoutObject* node) { 435 void NGInlineItemsBuilder::Exit(LayoutObject* node) {
425 while (!exits_.IsEmpty() && exits_.back().node == node) { 436 while (!exits_.IsEmpty() && exits_.back().node == node) {
426 Append(NGInlineItem::kBidiControl, exits_.back().character); 437 Append(NGInlineItem::kBidiControl, exits_.back().character);
427 exits_.pop_back(); 438 exits_.pop_back();
428 } 439 }
429 } 440 }
430 441
431 } // namespace blink 442 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698