summaryrefslogtreecommitdiff
path: root/Source/WebCore/rendering/RenderNamedFlowThread.h
diff options
context:
space:
mode:
authorLorry Tar Creator <lorry-tar-importer@lorry>2017-06-27 06:07:23 +0000
committerLorry Tar Creator <lorry-tar-importer@lorry>2017-06-27 06:07:23 +0000
commit1bf1084f2b10c3b47fd1a588d85d21ed0eb41d0c (patch)
tree46dcd36c86e7fbc6e5df36deb463b33e9967a6f7 /Source/WebCore/rendering/RenderNamedFlowThread.h
parent32761a6cee1d0dee366b885b7b9c777e67885688 (diff)
downloadWebKitGtk-tarball-master.tar.gz
Diffstat (limited to 'Source/WebCore/rendering/RenderNamedFlowThread.h')
-rw-r--r--Source/WebCore/rendering/RenderNamedFlowThread.h90
1 files changed, 43 insertions, 47 deletions
diff --git a/Source/WebCore/rendering/RenderNamedFlowThread.h b/Source/WebCore/rendering/RenderNamedFlowThread.h
index a82efa3e0..185dc14b9 100644
--- a/Source/WebCore/rendering/RenderNamedFlowThread.h
+++ b/Source/WebCore/rendering/RenderNamedFlowThread.h
@@ -13,7 +13,7 @@
* THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
@@ -23,11 +23,10 @@
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-
-#ifndef RenderNamedFlowThread_h
-#define RenderNamedFlowThread_h
+#pragma once
#include "RenderFlowThread.h"
+#include "SelectionSubtreeRoot.h"
#include "Timer.h"
#include <wtf/HashCountedSet.h>
#include <wtf/ListHashSet.h>
@@ -43,34 +42,27 @@ typedef ListHashSet<RenderNamedFlowThread*> RenderNamedFlowThreadList;
typedef HashCountedSet<RenderNamedFlowThread*> RenderNamedFlowThreadCountedSet;
typedef ListHashSet<Element*> NamedFlowContentElements;
-class RenderNamedFlowThread final : public RenderFlowThread {
+class RenderNamedFlowThread final : public RenderFlowThread, public SelectionSubtreeRoot {
public:
- RenderNamedFlowThread(Document&, PassRef<RenderStyle>, PassRefPtr<WebKitNamedFlow>);
+ RenderNamedFlowThread(Document&, RenderStyle&&, Ref<WebKitNamedFlow>&&);
virtual ~RenderNamedFlowThread();
const AtomicString& flowThreadName() const;
const RenderRegionList& invalidRenderRegionList() const { return m_invalidRegionList; }
- RenderObject* nextRendererForNode(Node*) const;
- RenderObject* previousRendererForNode(Node*) const;
-
- void addFlowChild(RenderObject* newChild);
- void removeFlowChild(RenderObject*);
- bool hasChildren() const { return !m_flowThreadChildList->isEmpty(); }
-#ifndef NDEBUG
- bool hasChild(RenderObject* child) const { return m_flowThreadChildList->contains(child); }
-#endif
+ static RenderBlock* fragmentFromRenderBoxAsRenderBlock(RenderBox*, const IntPoint& absolutePoint, const RenderBox& flowedBox);
void pushDependencies(RenderNamedFlowThreadList&);
- virtual void addRegionToThread(RenderRegion*) override;
- virtual void removeRegionFromThread(RenderRegion*) override;
+ void addRegionToThread(RenderRegion*) override;
+ void removeRegionFromThread(RenderRegion*) override;
+
+ void regionChangedWritingMode(RenderRegion*) override;
- virtual void regionChangedWritingMode(RenderRegion*) override;
+ LayoutRect decorationsClipRectForBoxInNamedFlowFragment(const RenderBox&, RenderNamedFlowFragment&) const;
- bool overset() const { return m_overset; }
- void computeOversetStateForRegions(LayoutUnit oldClientAfterEdge);
+ RenderNamedFlowFragment* fragmentFromAbsolutePointAndBox(const IntPoint&, const RenderBox& flowedBox);
void registerNamedFlowContentElement(Element&);
void unregisterNamedFlowContentElement(Element&);
@@ -78,47 +70,57 @@ public:
bool hasContentElement(Element&) const;
bool isMarkedForDestruction() const;
- void getRanges(Vector<RefPtr<Range>>&, const RenderRegion*) const;
+ void getRanges(Vector<RefPtr<Range>>&, const RenderNamedFlowFragment*) const;
-#if USE(ACCELERATED_COMPOSITING)
- virtual bool collectsGraphicsLayersUnderRegions() const override;
-#endif
+ void applyBreakAfterContent(LayoutUnit) override;
+
+ bool collectsGraphicsLayersUnderRegions() const override;
// Check if the content is flown into at least a region with region styling rules.
bool hasRegionsWithStyling() const { return m_hasRegionsWithStyling; }
void checkRegionsWithStyling();
- void clearRenderObjectCustomStyle(const RenderObject*);
+ void clearRenderObjectCustomStyle(const RenderElement&);
+
+ void removeFlowChildInfo(RenderElement&) override;
+
+ LayoutUnit flowContentBottom() const { return m_flowContentBottom; }
+ void dispatchNamedFlowEvents();
- virtual void removeFlowChildInfo(RenderObject*) override final;
+ void setDispatchRegionOversetChangeEvent(bool value) { m_dispatchRegionOversetChangeEvent = value; }
+
+ bool absoluteQuadsForBox(Vector<FloatQuad>&, bool*, const RenderBox*, float, float) const override;
protected:
void setMarkForDestruction();
void resetMarkForDestruction();
private:
- virtual const char* renderName() const override;
- virtual bool isRenderNamedFlowThread() const override { return true; }
- virtual bool isChildAllowed(const RenderObject&, const RenderStyle&) const override;
+ void willBeDestroyed() override;
+ const char* renderName() const override;
+ bool isRenderNamedFlowThread() const override { return true; }
+ bool isChildAllowed(const RenderObject&, const RenderStyle&) const override;
+ void computeOverflow(LayoutUnit, bool = false) override;
+ void layout() override;
- virtual void dispatchRegionLayoutUpdateEvent() override;
- virtual void dispatchRegionOversetChangeEvent() override;
+ void dispatchRegionOversetChangeEventIfNeeded();
bool dependsOn(RenderNamedFlowThread* otherRenderFlowThread) const;
void addDependencyOnFlowThread(RenderNamedFlowThread*);
void removeDependencyOnFlowThread(RenderNamedFlowThread*);
- void addRegionToNamedFlowThread(RenderRegion*);
+ void addFragmentToNamedFlowThread(RenderNamedFlowFragment*);
void checkInvalidRegions();
bool canBeDestroyed() const { return m_invalidRegionList.isEmpty() && m_regionList.isEmpty() && m_contentElements.isEmpty(); }
- void regionLayoutUpdateEventTimerFired(Timer<RenderNamedFlowThread>&);
- void regionOversetChangeEventTimerFired(Timer<RenderNamedFlowThread>&);
+ void regionOversetChangeEventTimerFired();
void clearContentElements();
void updateWritingMode();
-private:
+ WebKitNamedFlow& namedFlow() { return m_namedFlow; }
+ const WebKitNamedFlow& namedFlow() const { return m_namedFlow; }
+
// Observer flow threads have invalid regions that depend on the state of this thread
// to re-validate their regions. Keeping a set of observer threads make it easy
// to notify them when a region was removed from this flow.
@@ -129,27 +131,21 @@ private:
// easy to sort the order of threads layout.
RenderNamedFlowThreadCountedSet m_layoutBeforeThreadsSet;
- // Holds the sorted children of a named flow. This is the only way we can get the ordering right.
- typedef ListHashSet<RenderObject*> FlowThreadChildList;
- OwnPtr<FlowThreadChildList> m_flowThreadChildList;
-
NamedFlowContentElements m_contentElements;
RenderRegionList m_invalidRegionList;
- bool m_overset : 1;
bool m_hasRegionsWithStyling : 1;
+ bool m_dispatchRegionOversetChangeEvent : 1;
// The DOM Object that represents a named flow.
- RefPtr<WebKitNamedFlow> m_namedFlow;
+ Ref<WebKitNamedFlow> m_namedFlow;
- Timer<RenderNamedFlowThread> m_regionLayoutUpdateEventTimer;
- Timer<RenderNamedFlowThread> m_regionOversetChangeEventTimer;
-};
+ Timer m_regionOversetChangeEventTimer;
-template<> inline bool isRendererOfType<const RenderNamedFlowThread>(const RenderObject& renderer) { return renderer.isRenderNamedFlowThread(); }
-RENDER_OBJECT_TYPE_CASTS(RenderNamedFlowThread, isRenderNamedFlowThread())
+ LayoutUnit m_flowContentBottom;
+};
} // namespace WebCore
-#endif // RenderNamedFlowThread_h
+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderNamedFlowThread, isRenderNamedFlowThread())