diff options
author | Lorry Tar Creator <lorry-tar-importer@lorry> | 2017-06-27 06:07:23 +0000 |
---|---|---|
committer | Lorry Tar Creator <lorry-tar-importer@lorry> | 2017-06-27 06:07:23 +0000 |
commit | 1bf1084f2b10c3b47fd1a588d85d21ed0eb41d0c (patch) | |
tree | 46dcd36c86e7fbc6e5df36deb463b33e9967a6f7 /Source/WebCore/rendering/RenderTableRow.h | |
parent | 32761a6cee1d0dee366b885b7b9c777e67885688 (diff) | |
download | WebKitGtk-tarball-master.tar.gz |
webkitgtk-2.16.5HEADwebkitgtk-2.16.5master
Diffstat (limited to 'Source/WebCore/rendering/RenderTableRow.h')
-rw-r--r-- | Source/WebCore/rendering/RenderTableRow.h | 134 |
1 files changed, 74 insertions, 60 deletions
diff --git a/Source/WebCore/rendering/RenderTableRow.h b/Source/WebCore/rendering/RenderTableRow.h index 6470e6f2b..0830c3b70 100644 --- a/Source/WebCore/rendering/RenderTableRow.h +++ b/Source/WebCore/rendering/RenderTableRow.h @@ -22,8 +22,7 @@ * Boston, MA 02110-1301, USA. */ -#ifndef RenderTableRow_h -#define RenderTableRow_h +#pragma once #include "RenderTableSection.h" @@ -34,8 +33,8 @@ static const unsigned maxRowIndex = 0x7FFFFFFE; // 2,147,483,646 class RenderTableRow final : public RenderBox { public: - RenderTableRow(Element&, PassRef<RenderStyle>); - RenderTableRow(Document&, PassRef<RenderStyle>); + RenderTableRow(Element&, RenderStyle&&); + RenderTableRow(Document&, RenderStyle&&); RenderTableRow* nextRow() const; RenderTableRow* previousRow() const; @@ -43,73 +42,50 @@ public: RenderTableCell* firstCell() const; RenderTableCell* lastCell() const; - RenderTableSection* section() const { return toRenderTableSection(parent()); } - RenderTable* table() const { return toRenderTable(parent()->parent()); } + RenderTable* table() const; void paintOutlineForRowIfNeeded(PaintInfo&, const LayoutPoint&); - static RenderTableRow* createAnonymousWithParentRenderer(const RenderObject*); - virtual RenderBox* createAnonymousBoxWithSameTypeAs(const RenderObject* parent) const override - { - return createAnonymousWithParentRenderer(parent); - } - - void setRowIndex(unsigned rowIndex) - { - if (UNLIKELY(rowIndex > maxRowIndex)) - CRASH(); - - m_rowIndex = rowIndex; - } + static std::unique_ptr<RenderTableRow> createAnonymousWithParentRenderer(const RenderTableSection&); + std::unique_ptr<RenderBox> createAnonymousBoxWithSameTypeAs(const RenderBox&) const override; + void setRowIndex(unsigned); bool rowIndexWasSet() const { return m_rowIndex != unsetRowIndex; } - unsigned rowIndex() const - { - ASSERT(rowIndexWasSet()); - return m_rowIndex; - } + unsigned rowIndex() const; - const BorderValue& borderAdjoiningTableStart() const - { - if (section()->hasSameDirectionAs(table())) - return style().borderStart(); - - return style().borderEnd(); - } + const BorderValue& borderAdjoiningTableStart() const; + const BorderValue& borderAdjoiningTableEnd() const; + const BorderValue& borderAdjoiningStartCell(const RenderTableCell&) const; + const BorderValue& borderAdjoiningEndCell(const RenderTableCell&) const; - const BorderValue& borderAdjoiningTableEnd() const - { - if (section()->hasSameDirectionAs(table())) - return style().borderEnd(); + void addChild(RenderObject* child, RenderObject* beforeChild = 0) override; - return style().borderStart(); - } + bool nodeAtPoint(const HitTestRequest&, HitTestResult&, const HitTestLocation& locationInContainer, const LayoutPoint& accumulatedOffset, HitTestAction) override; - const BorderValue& borderAdjoiningStartCell(const RenderTableCell*) const; - const BorderValue& borderAdjoiningEndCell(const RenderTableCell*) const; + void destroyAndCollapseAnonymousSiblingRows(); - virtual void addChild(RenderObject* child, RenderObject* beforeChild = 0) override; +private: + static std::unique_ptr<RenderTableRow> createTableRowWithStyle(Document&, const RenderStyle&); - virtual bool nodeAtPoint(const HitTestRequest&, HitTestResult&, const HitTestLocation& locationInContainer, const LayoutPoint& accumulatedOffset, HitTestAction) override; + const char* renderName() const override { return (isAnonymous() || isPseudoElement()) ? "RenderTableRow (anonymous)" : "RenderTableRow"; } -private: - virtual const char* renderName() const override { return (isAnonymous() || isPseudoElement()) ? "RenderTableRow (anonymous)" : "RenderTableRow"; } + bool isTableRow() const override { return true; } - virtual bool isTableRow() const override { return true; } + bool canHaveChildren() const override { return true; } + void willBeRemovedFromTree() override; - virtual bool canHaveChildren() const override { return true; } - virtual void willBeRemovedFromTree() override; + void layout() override; + LayoutRect clippedOverflowRectForRepaint(const RenderLayerModelObject* repaintContainer) const override; - virtual void layout() override; - virtual LayoutRect clippedOverflowRectForRepaint(const RenderLayerModelObject* repaintContainer) const override; + bool requiresLayer() const override { return hasOverflowClip() || hasTransformRelatedProperty() || hasHiddenBackface() || hasClipPath() || createsGroup() || isStickyPositioned(); } - virtual bool requiresLayer() const override { return hasOverflowClip() || hasTransform() || hasHiddenBackface() || hasClipPath() || createsGroup() || isStickyPositioned(); } + void paint(PaintInfo&, const LayoutPoint&) override; - virtual void paint(PaintInfo&, const LayoutPoint&) override; + void imageChanged(WrappedImagePtr, const IntRect* = 0) override; - virtual void imageChanged(WrappedImagePtr, const IntRect* = 0) override; + void styleDidChange(StyleDifference, const RenderStyle* oldStyle) override; - virtual void styleDidChange(StyleDifference, const RenderStyle* oldStyle) override; + RenderTableSection* section() const { return downcast<RenderTableSection>(parent()); } void firstChild() const = delete; void lastChild() const = delete; @@ -119,28 +95,66 @@ private: unsigned m_rowIndex : 31; }; -RENDER_OBJECT_TYPE_CASTS(RenderTableRow, isTableRow()) +inline void RenderTableRow::setRowIndex(unsigned rowIndex) +{ + if (UNLIKELY(rowIndex > maxRowIndex)) + CRASH(); + m_rowIndex = rowIndex; +} -inline RenderTableRow* RenderTableSection::firstRow() const +inline unsigned RenderTableRow::rowIndex() const { - return toRenderTableRow(RenderBox::firstChild()); + ASSERT(rowIndexWasSet()); + return m_rowIndex; } -inline RenderTableRow* RenderTableSection::lastRow() const +inline const BorderValue& RenderTableRow::borderAdjoiningTableStart() const +{ + if (isDirectionSame(section(), table())) + return style().borderStart(); + return style().borderEnd(); +} + +inline const BorderValue& RenderTableRow::borderAdjoiningTableEnd() const { - return toRenderTableRow(RenderBox::lastChild()); + if (isDirectionSame(section(), table())) + return style().borderEnd(); + return style().borderStart(); +} + +inline RenderTable* RenderTableRow::table() const +{ + RenderTableSection* section = this->section(); + if (!section) + return nullptr; + return downcast<RenderTable>(section->parent()); } inline RenderTableRow* RenderTableRow::nextRow() const { - return toRenderTableRow(RenderBox::nextSibling()); + return downcast<RenderTableRow>(RenderBox::nextSibling()); } inline RenderTableRow* RenderTableRow::previousRow() const { - return toRenderTableRow(RenderBox::previousSibling()); + return downcast<RenderTableRow>(RenderBox::previousSibling()); +} + +inline RenderTableRow* RenderTableSection::firstRow() const +{ + return downcast<RenderTableRow>(RenderBox::firstChild()); +} + +inline RenderTableRow* RenderTableSection::lastRow() const +{ + return downcast<RenderTableRow>(RenderBox::lastChild()); +} + +inline std::unique_ptr<RenderBox> RenderTableRow::createAnonymousBoxWithSameTypeAs(const RenderBox& renderer) const +{ + return RenderTableRow::createTableRowWithStyle(renderer.document(), renderer.style()); } } // namespace WebCore -#endif // RenderTableRow_h +SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderTableRow, isTableRow()) |