| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 #ifndef SKY_ENGINE_CORE_RENDERING_RENDERPARAGRAPH_H_ | 5 #ifndef SKY_ENGINE_CORE_RENDERING_RENDERPARAGRAPH_H_ |
| 6 #define SKY_ENGINE_CORE_RENDERING_RENDERPARAGRAPH_H_ | 6 #define SKY_ENGINE_CORE_RENDERING_RENDERPARAGRAPH_H_ |
| 7 | 7 |
| 8 #include "sky/engine/core/dom/ContainerNode.h" | 8 #include "sky/engine/core/dom/ContainerNode.h" |
| 9 #include "sky/engine/core/rendering/RenderBlockFlow.h" | 9 #include "sky/engine/core/rendering/RenderBlockFlow.h" |
| 10 | 10 |
| 11 namespace blink { | 11 namespace blink { |
| 12 | 12 |
| 13 class ContainerNode; | 13 class ContainerNode; |
| 14 | 14 |
| 15 class RenderParagraph final : public RenderBlockFlow { | 15 class RenderParagraph final : public RenderBlockFlow { |
| 16 public: | 16 public: |
| 17 explicit RenderParagraph(ContainerNode*); | 17 explicit RenderParagraph(ContainerNode*); |
| 18 virtual ~RenderParagraph(); | 18 virtual ~RenderParagraph(); |
| 19 | 19 |
| 20 static RenderParagraph* createAnonymous(Document&); | 20 static RenderParagraph* createAnonymous(Document&); |
| 21 | 21 |
| 22 bool isRenderParagraph() const override { return true; } | 22 bool isRenderParagraph() const override { return true; } |
| 23 | 23 |
| 24 protected: | 24 protected: |
| 25 void layoutChildren(bool relayoutChildren, SubtreeLayoutScope&, LayoutUnit&
paintInvalidationLogicalTop, LayoutUnit& paintInvalidationLogicalBottom, LayoutU
nit beforeEdge, LayoutUnit afterEdge) final; |
| 26 |
| 25 void addOverflowFromChildren() final; | 27 void addOverflowFromChildren() final; |
| 26 | 28 |
| 27 void simplifiedNormalFlowLayout() final; | 29 void simplifiedNormalFlowLayout() final; |
| 28 | 30 |
| 29 void paintContents(PaintInfo&, const LayoutPoint&) final; | 31 void paintContents(PaintInfo&, const LayoutPoint&) final; |
| 30 | 32 |
| 31 bool hitTestContents(const HitTestRequest&, HitTestResult&, const HitTestLoc
ation& locationInContainer, const LayoutPoint& accumulatedOffset, HitTestAction)
final; | 33 bool hitTestContents(const HitTestRequest&, HitTestResult&, const HitTestLoc
ation& locationInContainer, const LayoutPoint& accumulatedOffset, HitTestAction)
final; |
| 32 | 34 |
| 35 virtual ETextAlign textAlignmentForLine(bool endsWithSoftBreak) const; |
| 36 |
| 37 void computeIntrinsicLogicalWidths(LayoutUnit& minLogicalWidth, LayoutUnit&
maxLogicalWidth) const final; |
| 38 |
| 39 private: |
| 40 void markLinesDirtyInBlockRange(LayoutUnit logicalTop, LayoutUnit logicalBot
tom, RootInlineBox* highest = 0); |
| 41 |
| 42 InlineFlowBox* createLineBoxes(RenderObject*, const LineInfo&, InlineBox* ch
ildBox); |
| 43 RootInlineBox* constructLine(BidiRunList<BidiRun>&, const LineInfo&); |
| 44 void computeInlineDirectionPositionsForLine(RootInlineBox*, const LineInfo&,
BidiRun* firstRun, BidiRun* trailingSpaceRun, bool reachedEnd, GlyphOverflowAnd
FallbackFontsMap&, VerticalPositionCache&, WordMeasurements&); |
| 45 BidiRun* computeInlineDirectionPositionsForSegment(RootInlineBox*, const Lin
eInfo&, ETextAlign, float& logicalLeft, |
| 46 float& availableLogicalWidth, BidiRun* firstRun, BidiRun* trailingSpaceR
un, GlyphOverflowAndFallbackFontsMap& textBoxDataMap, VerticalPositionCache&, Wo
rdMeasurements&); |
| 47 void computeBlockDirectionPositionsForLine(RootInlineBox*, BidiRun*, GlyphOv
erflowAndFallbackFontsMap&, VerticalPositionCache&); |
| 48 // Helper function for layoutChildren() |
| 49 RootInlineBox* createLineBoxesFromBidiRuns(unsigned bidiLevel, BidiRunList<B
idiRun>&, const InlineIterator& end, LineInfo&, VerticalPositionCache&, BidiRun*
trailingSpaceRun, WordMeasurements&); |
| 50 void layoutRunsAndFloats(LineLayoutState&); |
| 51 void layoutRunsAndFloatsInRange(LineLayoutState&, InlineBidiResolver&, |
| 52 const InlineIterator& cleanLineStart, const BidiStatus& cleanLineBidiSta
tus); |
| 53 void linkToEndLineIfNeeded(LineLayoutState&); |
| 54 static void markDirtyFloatsForPaintInvalidation(Vector<FloatWithRect>& float
s); |
| 55 void checkFloatsInCleanLine(RootInlineBox*, Vector<FloatWithRect>&, size_t&
floatIndex, bool& encounteredNewFloat, bool& dirtiedByFloat); |
| 56 RootInlineBox* determineStartPosition(LineLayoutState&, InlineBidiResolver&)
; |
| 57 void determineEndPosition(LineLayoutState&, RootInlineBox* startBox, InlineI
terator& cleanLineStart, BidiStatus& cleanLineBidiStatus); |
| 58 bool checkPaginationAndFloatsAtEndLine(LineLayoutState&); |
| 59 bool matchedEndLine(LineLayoutState&, const InlineBidiResolver&, const Inlin
eIterator& endLineStart, const BidiStatus& endLineStatus); |
| 60 void deleteEllipsisLineBoxes(); |
| 61 void checkLinesForTextOverflow(); |
| 33 }; | 62 }; |
| 34 | 63 |
| 35 DEFINE_RENDER_OBJECT_TYPE_CASTS(RenderParagraph, isRenderParagraph()); | 64 DEFINE_RENDER_OBJECT_TYPE_CASTS(RenderParagraph, isRenderParagraph()); |
| 36 | 65 |
| 37 } // namespace blink | 66 } // namespace blink |
| 38 | 67 |
| 39 #endif // SKY_ENGINE_CORE_RENDERING_RENDERPARAGRAPH_H_ | 68 #endif // SKY_ENGINE_CORE_RENDERING_RENDERPARAGRAPH_H_ |
| OLD | NEW |