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/ng_block_node.h" | 5 #include "core/layout/ng/ng_block_node.h" |
6 | 6 |
7 #include "core/layout/LayoutBlockFlow.h" | 7 #include "core/layout/LayoutBlockFlow.h" |
8 #include "core/layout/api/LineLayoutAPIShim.h" | 8 #include "core/layout/api/LineLayoutAPIShim.h" |
9 #include "core/layout/line/InlineIterator.h" | 9 #include "core/layout/line/InlineIterator.h" |
10 #include "core/layout/ng/layout_ng_block_flow.h" | 10 #include "core/layout/ng/layout_ng_block_flow.h" |
(...skipping 14 matching lines...) Expand all Loading... | |
25 namespace { | 25 namespace { |
26 | 26 |
27 // Copies data back to the legacy layout tree for a given child fragment. | 27 // Copies data back to the legacy layout tree for a given child fragment. |
28 void FragmentPositionUpdated(const NGPhysicalFragment& fragment) { | 28 void FragmentPositionUpdated(const NGPhysicalFragment& fragment) { |
29 LayoutBox* layout_box = toLayoutBox(fragment.GetLayoutObject()); | 29 LayoutBox* layout_box = toLayoutBox(fragment.GetLayoutObject()); |
30 if (!layout_box) | 30 if (!layout_box) |
31 return; | 31 return; |
32 | 32 |
33 DCHECK(layout_box->parent()) << "Should be called on children only."; | 33 DCHECK(layout_box->parent()) << "Should be called on children only."; |
34 | 34 |
35 layout_box->setX(fragment.LeftOffset()); | 35 // LegacyLayout flips vertical-rl horizontal coordinates before paint. |
36 // NGLayout flips X location for LegacyLayout compatibility. | |
37 LayoutBlock* containing_block = layout_box->containingBlock(); | |
38 if (containing_block->styleRef().isFlippedBlocksWritingMode()) { | |
39 LayoutUnit container_width = containing_block->logicalHeight(); | |
cbiesinger
2017/02/24 21:48:10
I'd do size().width() instead of logicalHeight() s
atotic
2017/02/24 22:41:15
done
| |
40 layout_box->setX(container_width - fragment.LeftOffset() - | |
41 fragment.Width()); | |
42 } else { | |
43 layout_box->setX(fragment.LeftOffset()); | |
44 } | |
36 layout_box->setY(fragment.TopOffset()); | 45 layout_box->setY(fragment.TopOffset()); |
37 } | 46 } |
38 | 47 |
39 // Similar to FragmentPositionUpdated but for floats. | 48 // Similar to FragmentPositionUpdated but for floats. |
40 // - Updates layout object's geometric information. | 49 // - Updates layout object's geometric information. |
41 // - Creates legacy FloatingObject and attached it to the provided parent. | 50 // - Creates legacy FloatingObject and attached it to the provided parent. |
42 void FloatingObjectPositionedUpdated(NGFloatingObject* ng_floating_object, | 51 void FloatingObjectPositionedUpdated(NGFloatingObject* ng_floating_object, |
43 LayoutBox* parent) { | 52 LayoutBox* parent) { |
44 NGPhysicalBoxFragment* box_fragment = | 53 NGPhysicalBoxFragment* box_fragment = |
45 toNGPhysicalBoxFragment(ng_floating_object->fragment.get()); | 54 toNGPhysicalBoxFragment(ng_floating_object->fragment.get()); |
(...skipping 314 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
360 // Save static position for legacy AbsPos layout. | 369 // Save static position for legacy AbsPos layout. |
361 void NGBlockNode::SaveStaticOffsetForLegacy(const NGLogicalOffset& offset) { | 370 void NGBlockNode::SaveStaticOffsetForLegacy(const NGLogicalOffset& offset) { |
362 DCHECK(layout_box_); | 371 DCHECK(layout_box_); |
363 DCHECK(layout_box_->isOutOfFlowPositioned()); | 372 DCHECK(layout_box_->isOutOfFlowPositioned()); |
364 DCHECK(layout_box_->layer()); | 373 DCHECK(layout_box_->layer()); |
365 layout_box_->layer()->setStaticBlockPosition(offset.block_offset); | 374 layout_box_->layer()->setStaticBlockPosition(offset.block_offset); |
366 layout_box_->layer()->setStaticInlinePosition(offset.inline_offset); | 375 layout_box_->layer()->setStaticInlinePosition(offset.inline_offset); |
367 } | 376 } |
368 | 377 |
369 } // namespace blink | 378 } // namespace blink |
OLD | NEW |