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

Side by Side Diff: Source/core/rendering/FlowThreadController.h

Issue 143323014: *** DO NOT LAND *** Attempt to understand Regions complexity Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 6 years, 11 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 /*
2 * Copyright (C) 2012 Adobe Systems Incorporated. All rights reserved.
3 *
4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions
6 * are met:
7 *
8 * 1. Redistributions of source code must retain the above
9 * copyright notice, this list of conditions and the following
10 * disclaimer.
11 * 2. Redistributions in binary form must reproduce the above
12 * copyright notice, this list of conditions and the following
13 * disclaimer in the documentation and/or other materials
14 * provided with the distribution.
15 *
16 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER "AS IS" AND ANY
17 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
19 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE
20 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
21 * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
22 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
23 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
25 * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
26 * THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
27 * SUCH DAMAGE.
28 */
29
30 #ifndef FlowThreadController_h
31 #define FlowThreadController_h
32
33 #include "core/rendering/RenderView.h"
34 #include "wtf/ListHashSet.h"
35 #include "wtf/OwnPtr.h"
36
37 namespace WebCore {
38
39 class RenderFlowThread;
40 class RenderNamedFlowThread;
41
42 typedef ListHashSet<RenderNamedFlowThread*> RenderNamedFlowThreadList;
43
44 class FlowThreadController {
45 WTF_MAKE_FAST_ALLOCATED;
46 public:
47 static PassOwnPtr<FlowThreadController> create(RenderView*);
48 ~FlowThreadController();
49
50 RenderFlowThread* currentRenderFlowThread() const { return m_currentRenderFl owThread; }
51 void setCurrentRenderFlowThread(RenderFlowThread* flowThread) { m_currentRen derFlowThread = flowThread; }
52
53 bool isRenderNamedFlowThreadOrderDirty() const { return m_isRenderNamedFlowT hreadOrderDirty; }
54 void setIsRenderNamedFlowThreadOrderDirty(bool dirty)
55 {
56 m_isRenderNamedFlowThreadOrderDirty = dirty;
57 if (dirty)
58 m_view->setNeedsLayout();
59 }
60
61 RenderNamedFlowThread* ensureRenderFlowThreadWithName(const AtomicString&);
62 const RenderNamedFlowThreadList* renderNamedFlowThreadList() const { return m_renderNamedFlowThreadList.get(); }
63 bool hasRenderNamedFlowThreads() const { return m_renderNamedFlowThreadList && !m_renderNamedFlowThreadList->isEmpty(); }
64 void layoutRenderNamedFlowThreads();
65 void styleDidChange();
66
67 void registerNamedFlowContentNode(Node*, RenderNamedFlowThread*);
68 void unregisterNamedFlowContentNode(Node*);
69 bool isContentNodeRegisteredWithAnyNamedFlow(const Node*) const;
70
71 bool hasFlowThreadsWithAutoLogicalHeightRegions() const { return m_flowThrea dsWithAutoLogicalHeightRegions; }
72 void incrementFlowThreadsWithAutoLogicalHeightRegions() { ++m_flowThreadsWit hAutoLogicalHeightRegions; }
73 void decrementFlowThreadsWithAutoLogicalHeightRegions() { ASSERT(m_flowThrea dsWithAutoLogicalHeightRegions > 0); --m_flowThreadsWithAutoLogicalHeightRegions ; }
74
75 bool updateFlowThreadsNeedingLayout();
76 bool updateFlowThreadsNeedingTwoStepLayout();
77 void updateFlowThreadsIntoConstrainedPhase();
78
79 #ifndef NDEBUG
80 bool isAutoLogicalHeightRegionsCountConsistent() const;
81 #endif
82
83 protected:
84 FlowThreadController(RenderView*);
85 void updateFlowThreadsChainIfNecessary();
86 void resetFlowThreadsWithAutoHeightRegions();
87
88 private:
89 RenderView* m_view;
90 RenderFlowThread* m_currentRenderFlowThread;
91 bool m_isRenderNamedFlowThreadOrderDirty;
92 unsigned m_flowThreadsWithAutoLogicalHeightRegions;
93 OwnPtr<RenderNamedFlowThreadList> m_renderNamedFlowThreadList;
94 // maps a content node to its render flow thread.
95 HashMap<const Node*, RenderNamedFlowThread*> m_mapNamedFlowContentNodes;
96 };
97
98 }
99
100 #endif
OLDNEW
« no previous file with comments | « Source/core/rendering/CompositedLayerMapping.cpp ('k') | Source/core/rendering/FlowThreadController.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698