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

Unified Diff: sky/engine/core/rendering/RenderParagraph.h

Issue 1068683002: Delete RenderBlockFlow. (Closed) Base URL: https://github.com/domokit/mojo.git@block
Patch Set: Created 5 years, 8 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 side-by-side diff with in-line comments
Download patch
Index: sky/engine/core/rendering/RenderParagraph.h
diff --git a/sky/engine/core/rendering/RenderParagraph.h b/sky/engine/core/rendering/RenderParagraph.h
index 739e964791291ee451be9f928412cb42f27800cd..2c45a5aa412cb06ae44e4d82396e0d70f83b140a 100644
--- a/sky/engine/core/rendering/RenderParagraph.h
+++ b/sky/engine/core/rendering/RenderParagraph.h
@@ -6,30 +6,77 @@
#define SKY_ENGINE_CORE_RENDERING_RENDERPARAGRAPH_H_
#include "sky/engine/core/dom/ContainerNode.h"
-#include "sky/engine/core/rendering/RenderBlockFlow.h"
+#include "sky/engine/core/rendering/RenderBlock.h"
+#include "sky/engine/core/rendering/line/TrailingObjects.h"
namespace blink {
+struct BidiRun;
class ContainerNode;
+// class InlineBidiResolver;
+class InlineIterator;
-class RenderParagraph final : public RenderBlockFlow {
+class RenderParagraph final : public RenderBlock {
public:
explicit RenderParagraph(ContainerNode*);
virtual ~RenderParagraph();
static RenderParagraph* createAnonymous(Document&);
- bool isRenderParagraph() const override { return true; }
+ bool isRenderParagraph() const final { return true; }
+
+ void layout() final;
+
+ LayoutUnit logicalRightOffsetForLine(bool shouldIndentText) const
+ {
+ LayoutUnit right = logicalRightOffsetForContent();
+ if (shouldIndentText && !style()->isLeftToRightDirection())
+ right -= textIndentOffset();
+ return right;
+ }
+ LayoutUnit logicalLeftOffsetForLine(bool shouldIndentText) const
+ {
+ LayoutUnit left = logicalLeftOffsetForContent();
+ if (shouldIndentText && style()->isLeftToRightDirection())
+ left += textIndentOffset();
+ return left;
+ }
+
+ LayoutUnit logicalLeftSelectionOffset(RenderBlock* rootBlock, LayoutUnit position) final;
+ LayoutUnit logicalRightSelectionOffset(RenderBlock* rootBlock, LayoutUnit position) final;
virtual RootInlineBox* lineAtIndex(int) const;
virtual int lineCount(const RootInlineBox* = 0, bool* = 0) const;
+ void deleteLineBoxTree() final;
+
GapRects inlineSelectionGaps(RenderBlock* rootBlock, const LayoutPoint& rootBlockPhysicalPosition, const LayoutSize& offsetFromRootBlock,
LayoutUnit& lastLogicalTop, LayoutUnit& lastLogicalLeft, LayoutUnit& lastLogicalRight, const PaintInfo*);
-protected:
- void layoutChildren(bool relayoutChildren, SubtreeLayoutScope&, LayoutUnit beforeEdge, LayoutUnit afterEdge) final;
+ static bool shouldSkipCreatingRunsForObject(RenderObject* obj)
+ {
+ return obj->isOutOfFlowPositioned() && !obj->style()->isOriginalDisplayInlineType() && !obj->container()->isRenderInline();
+ }
+
+ // TODO(ojan): Remove the need for these.
+ using RenderBlock::lineBoxes;
+ using RenderBlock::firstLineBox;
+ using RenderBlock::lastRootBox;
+
+ struct FloatWithRect {
+ FloatWithRect(RenderBox* f)
+ : object(f)
+ , rect(LayoutRect(f->x() - f->marginLeft(), f->y() - f->marginTop(), f->width() + f->marginWidth(), f->height() + f->marginHeight()))
+ , everHadLayout(f->everHadLayout())
+ {
+ }
+
+ RenderBox* object;
+ LayoutRect rect;
+ bool everHadLayout;
+ };
+protected:
void addOverflowFromChildren() final;
void simplifiedNormalFlowLayout() final;
@@ -48,9 +95,16 @@ protected:
private:
virtual const char* renderName() const override;
+ void layoutChildren(bool relayoutChildren, SubtreeLayoutScope&, LayoutUnit beforeEdge, LayoutUnit afterEdge);
+
void markLinesDirtyInBlockRange(LayoutUnit logicalTop, LayoutUnit logicalBottom, RootInlineBox* highest = 0);
+ void updateLogicalWidthForAlignment(const ETextAlign&, const RootInlineBox*, BidiRun* trailingSpaceRun, float& logicalLeft, float& totalLogicalWidth, float& availableLogicalWidth, unsigned expansionOpportunityCount);
+
+ RootInlineBox* createAndAppendRootInlineBox();
+ RootInlineBox* createRootInlineBox();
InlineFlowBox* createLineBoxes(RenderObject*, const LineInfo&, InlineBox* childBox);
+ InlineBox* createInlineBoxForRenderer(RenderObject*, bool isRootLineBox, bool isOnlyRun = false);
RootInlineBox* constructLine(BidiRunList<BidiRun>&, const LineInfo&);
void computeInlineDirectionPositionsForLine(RootInlineBox*, const LineInfo&, BidiRun* firstRun, BidiRun* trailingSpaceRun, bool reachedEnd, GlyphOverflowAndFallbackFontsMap&, VerticalPositionCache&, WordMeasurements&);
BidiRun* computeInlineDirectionPositionsForSegment(RootInlineBox*, const LineInfo&, ETextAlign, float& logicalLeft,

Powered by Google App Engine
This is Rietveld 408576698