Source/WebCore: https://bugs.webkit.org/show_bug.cgi?id=76197
authorhyatt@apple.com <hyatt@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 17 Jan 2012 19:16:24 +0000 (19:16 +0000)
committerhyatt@apple.com <hyatt@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 17 Jan 2012 19:16:24 +0000 (19:16 +0000)
commitee7af1d2eed61ad457766daa537d7e2521d642dd
treed73d7b0f418d3283fa5810d202ca147ca8e2b78b
parent910d2b60c5bafe3f353940ba02befba73d418f2f
Source/WebCore: https://bugs.webkit.org/show_bug.cgi?id=76197

Implementation of baseline grid alignment. This patch implements line grid tracking in the layout state,
and also implements the snapping of lines to baselines. It works with normal flow, positioning and floats and
with pagination, as long as the grid is inside the pagination context and not outside.

Reviewed by Simon Fraser.

Added a bunch of new tests in fast/line-grid.

* WebCore.xcodeproj/project.pbxproj:
* rendering/InlineFlowBox.h:
(WebCore::InlineFlowBox::setHasTextChildren):
* rendering/LayoutState.cpp:
(WebCore::LayoutState::LayoutState):
(WebCore::LayoutState::propagateLineGridInfo):
(WebCore::LayoutState::establishLineGrid):
* rendering/LayoutState.h:
(WebCore::LayoutState::LayoutState):
(WebCore::LayoutState::pageLogicalHeight):
(WebCore::LayoutState::currentLineGrid):
(WebCore::LayoutState::currentLineGridOffset):
(WebCore::LayoutState::layoutOffset):
(WebCore::LayoutState::needsBlockDirectionLocationSetBeforeLayout):
* rendering/RenderBlock.cpp:
(WebCore::RenderBlock::layoutBlockChildren):
(WebCore::RenderBlock::layoutPositionedObjects):
(WebCore::RenderBlock::insertFloatingObject):
(WebCore::RenderBlock::positionNewFloats):
(WebCore::RenderBlock::pageLogicalTopForOffset):
(WebCore::RenderBlock::adjustLinePositionForPagination):
* rendering/RenderBlock.h:
(WebCore::RenderBlock::lineGridBox):
(WebCore::RenderBlock::setLineGridBox):
(WebCore::RenderBlock::RenderBlockRareData::RenderBlockRareData):
* rendering/RenderBlockLineLayout.cpp:
(WebCore::RenderBlock::layoutInlineChildren):
(WebCore::RenderBlock::layoutLineGridBox):
* rendering/RenderFlowThread.cpp:
(WebCore::RenderFlowThread::regionLogicalTopForLine):
* rendering/RenderFlowThread.h:
* rendering/RenderView.h:
(WebCore::RenderView::pushLayoutState):
* rendering/RootInlineBox.cpp:
(WebCore::RootInlineBox::alignBoxesInBlockDirection):
(WebCore::RootInlineBox::lineGridSnapAdjustment):
* rendering/RootInlineBox.h:

LayoutTests: https://bugs.webkit.org/show_bug.cgi?id=76197

Add tests for baseline line grid alignment.

Reviewed by Simon Fraser.

* fast/line-grid/line-grid-floating.html: Added.
* fast/line-grid/line-grid-inside-columns.html: Added.
* fast/line-grid/line-grid-into-floats.html: Added.
* fast/line-grid/line-grid-positioned.html: Added.
* platform/mac/fast/line-grid: Added.
* platform/mac/fast/line-grid/line-grid-floating-expected.png: Added.
* platform/mac/fast/line-grid/line-grid-floating-expected.txt: Added.
* platform/mac/fast/line-grid/line-grid-inside-columns-expected.png: Added.
* platform/mac/fast/line-grid/line-grid-inside-columns-expected.txt: Added.
* platform/mac/fast/line-grid/line-grid-into-floats-expected.png: Added.
* platform/mac/fast/line-grid/line-grid-into-floats-expected.txt: Added.
* platform/mac/fast/line-grid/line-grid-positioned-expected.png: Added.
* platform/mac/fast/line-grid/line-grid-positioned-expected.txt: Added.

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@105176 268f45cc-cd09-0410-ab3c-d52691b4dbfc
25 files changed:
LayoutTests/ChangeLog
LayoutTests/fast/line-grid/line-grid-floating.html [new file with mode: 0644]
LayoutTests/fast/line-grid/line-grid-inside-columns.html [new file with mode: 0644]
LayoutTests/fast/line-grid/line-grid-into-floats.html [new file with mode: 0644]
LayoutTests/fast/line-grid/line-grid-positioned.html [new file with mode: 0644]
LayoutTests/platform/mac/fast/line-grid/line-grid-floating-expected.png [new file with mode: 0644]
LayoutTests/platform/mac/fast/line-grid/line-grid-floating-expected.txt [new file with mode: 0644]
LayoutTests/platform/mac/fast/line-grid/line-grid-inside-columns-expected.png [new file with mode: 0644]
LayoutTests/platform/mac/fast/line-grid/line-grid-inside-columns-expected.txt [new file with mode: 0644]
LayoutTests/platform/mac/fast/line-grid/line-grid-into-floats-expected.png [new file with mode: 0644]
LayoutTests/platform/mac/fast/line-grid/line-grid-into-floats-expected.txt [new file with mode: 0644]
LayoutTests/platform/mac/fast/line-grid/line-grid-positioned-expected.png [new file with mode: 0644]
LayoutTests/platform/mac/fast/line-grid/line-grid-positioned-expected.txt [new file with mode: 0644]
Source/WebCore/ChangeLog
Source/WebCore/rendering/InlineFlowBox.h
Source/WebCore/rendering/LayoutState.cpp
Source/WebCore/rendering/LayoutState.h
Source/WebCore/rendering/RenderBlock.cpp
Source/WebCore/rendering/RenderBlock.h
Source/WebCore/rendering/RenderBlockLineLayout.cpp
Source/WebCore/rendering/RenderFlowThread.cpp
Source/WebCore/rendering/RenderFlowThread.h
Source/WebCore/rendering/RenderView.h
Source/WebCore/rendering/RootInlineBox.cpp
Source/WebCore/rendering/RootInlineBox.h