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

Side by Side Diff: third_party/WebKit/Source/core/paint/ObjectPaintProperties.h

Issue 1407543003: Preliminary paint property walk implementation for SPv2 (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: address some of the comments. Created 5 years, 2 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
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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 ObjectPaintProperties_h 5 #ifndef ObjectPaintProperties_h
6 #define ObjectPaintProperties_h 6 #define ObjectPaintProperties_h
7 7
8 #include "platform/graphics/paint/TransformPaintPropertyNode.h" 8 #include "platform/graphics/paint/TransformPaintPropertyNode.h"
9 #include "wtf/HashMap.h"
10 #include "wtf/OwnPtr.h"
11 #include "wtf/PassOwnPtr.h"
9 #include "wtf/PassRefPtr.h" 12 #include "wtf/PassRefPtr.h"
10 #include "wtf/RefPtr.h" 13 #include "wtf/RefPtr.h"
11 14
12 namespace blink { 15 namespace blink {
13 16
14 // The minimal set of paint properties created by a |LayoutObject|. These 17 // The minimal set of paint properties created by a |LayoutObject|. These
15 // properties encode a hierachy of transforms, clips, effects, etc, both between 18 // properties encode a hierachy of transforms, clips, effects, etc, both between
16 // LayoutObjects (each property has a parent) and among the properties of a 19 // LayoutObjects (each property has a parent) and among the properties of a
17 // single LayoutObject (e.g., transform and perspective with the correct parent 20 // single LayoutObject (e.g., transform and perspective with the correct parent
18 // relationship to represent ordering). 21 // relationship to represent ordering).
19 // 22 //
20 // This differs from |PaintChunkProperties| because it can store multiple 23 // This differs from |PaintChunkProperties| because it can store multiple
21 // properties of the same type (e.g., transform and perspective which are both 24 // properties of the same type (e.g., transform and perspective which are both
22 // transforms). 25 // transforms).
23 class ObjectPaintProperties { 26 class ObjectPaintProperties {
24 WTF_MAKE_NONCOPYABLE(ObjectPaintProperties); 27 WTF_MAKE_NONCOPYABLE(ObjectPaintProperties);
25 WTF_MAKE_FAST_ALLOCATED(ObjectPaintProperties); 28 WTF_MAKE_FAST_ALLOCATED(ObjectPaintProperties);
26 public: 29 public:
30 // This is intended to be inherited by FrameView and LayoutObject to hold ow nership to
pdr. 2015/10/15 04:53:52 Would it be possible to use a simpler approach to
pdr. 2015/10/15 22:05:59 Talked with Tien-Ren about this and wanted to brai
trchen 2015/10/15 23:24:31 Nah it's pretty simple to support. Also we always
31 // ObjectPaintProperties. Ideally we should simply use an OwnPtr but at this moment we
32 // use a global HashMap to avoid regressing non-SPv2 memory use. Thus we nee d this class
33 // to maintain RAII.
34 class Owner {
35 public:
36 ObjectPaintProperties* objectPaintProperties() const;
37 ObjectPaintProperties& ensureObjectPaintProperties();
38 void clearObjectPaintProperties();
39 protected:
40 ~Owner();
41 private:
42 typedef HashMap<const ObjectPaintProperties::Owner*, OwnPtr<ObjectPaintP roperties>> NodeMapping;
43 static NodeMapping* s_nodeMapping;
44 };
45
27 static PassOwnPtr<ObjectPaintProperties> create() 46 static PassOwnPtr<ObjectPaintProperties> create()
28 { 47 {
29 return adoptPtr(new ObjectPaintProperties()); 48 return adoptPtr(new ObjectPaintProperties());
30 } 49 }
31 50
32 bool hasTransform() const { return m_transform; } 51 void setTransformNodeForSelf(PassRefPtr<TransformPaintPropertyNode> node) { m_transformNodeForSelf = node; }
33 void setTransform(PassRefPtr<TransformPaintPropertyNode> transform) { m_tran sform = transform; } 52 const TransformPaintPropertyNode* transformNodeForSelf() const { return m_tr ansformNodeForSelf.get(); }
34 const TransformPaintPropertyNode* transform() const { return m_transform.get (); }
35 53
36 bool hasPerspective() const { return m_perspective; } 54 void setTransformNodeForDescendants(PassRefPtr<TransformPaintPropertyNode> n ode) { m_transformNodeForDescendants = node; }
37 void setPerspective(PassRefPtr<TransformPaintPropertyNode> perspective) { m_ perspective = perspective; } 55 const TransformPaintPropertyNode* transformNodeForDescendants() const { retu rn m_transformNodeForDescendants.get(); }
38 const TransformPaintPropertyNode* perspective() const { return m_perspective .get(); }
39 56
40 private: 57 private:
41 ObjectPaintProperties() { } 58 ObjectPaintProperties() { }
42 59
43 RefPtr<TransformPaintPropertyNode> m_transform; 60 RefPtr<TransformPaintPropertyNode> m_transformNodeForSelf;
44 RefPtr<TransformPaintPropertyNode> m_perspective; 61 RefPtr<TransformPaintPropertyNode> m_transformNodeForDescendants;
45 }; 62 };
46 63
47 } // namespace blink 64 } // namespace blink
48 65
49 #endif // ObjectPaintProperties_h 66 #endif // ObjectPaintProperties_h
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/core/layout/LayoutObject.h ('k') | third_party/WebKit/Source/core/paint/ObjectPaintProperties.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698