Final part of "sync" to "flush" renaming
[WebKit-https.git] / Source / WebCore / platform / graphics / blackberry / GraphicsLayerBlackBerry.h
1 /*
2  * Copyright (C) 2010, 2011, 2012 Research In Motion Limited. All rights reserved.
3  * Copyright (C) 2010 Google Inc. All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions are
7  * met:
8  *
9  *     * Redistributions of source code must retain the above copyright
10  * notice, this list of conditions and the following disclaimer.
11  *     * Redistributions in binary form must reproduce the above
12  * copyright notice, this list of conditions and the following disclaimer
13  * in the documentation and/or other materials provided with the
14  * distribution.
15  *     * Neither the name of Google Inc. nor the names of its
16  * contributors may be used to endorse or promote products derived from
17  * this software without specific prior written permission.
18  *
19  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
20  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
21  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
22  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
23  * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
24  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
25  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
26  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
27  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
28  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
29  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30  */
31
32 #include "Platform.h"
33
34 #ifndef GraphicsLayerBlackBerry_h
35 #define GraphicsLayerBlackBerry_h
36
37 #if USE(ACCELERATED_COMPOSITING)
38
39 #include "FilterOperations.h"
40 #include "GraphicsLayer.h"
41 #include <wtf/Vector.h>
42
43 namespace WebCore {
44
45 class LayerAnimation;
46 class LayerWebKitThread;
47
48 class GraphicsLayerBlackBerry : public GraphicsLayer {
49 public:
50     GraphicsLayerBlackBerry(GraphicsLayerClient*);
51     virtual ~GraphicsLayerBlackBerry();
52
53     virtual void setName(const String&);
54
55     virtual bool setChildren(const Vector<GraphicsLayer*>&);
56     virtual void addChild(GraphicsLayer*);
57     virtual void addChildAtIndex(GraphicsLayer*, int index);
58     virtual void addChildAbove(GraphicsLayer*, GraphicsLayer* sibling);
59     virtual void addChildBelow(GraphicsLayer*, GraphicsLayer* sibling);
60     virtual bool replaceChild(GraphicsLayer* oldChild, GraphicsLayer* newChild);
61
62     virtual void removeFromParent();
63
64     virtual void setPosition(const FloatPoint&);
65     virtual void setAnchorPoint(const FloatPoint3D&);
66     virtual void setSize(const FloatSize&);
67
68     virtual void setTransform(const TransformationMatrix&);
69
70     virtual void setChildrenTransform(const TransformationMatrix&);
71
72     virtual void setPreserves3D(bool);
73     virtual void setMasksToBounds(bool);
74     virtual void setDrawsContent(bool);
75     virtual void setContentsVisible(bool);
76     virtual void setMaskLayer(GraphicsLayer*);
77     virtual void setReplicatedByLayer(GraphicsLayer*);
78     virtual void setFixedPosition(bool);
79     virtual void setHasFixedContainer(bool);
80     virtual void setHasFixedAncestorInDOMTree(bool);
81
82 #if ENABLE(CSS_FILTERS)
83     // Returns true if filter can be rendered by the compositor
84     virtual bool setFilters(const FilterOperations &);
85     const FilterOperations& filters() const { return m_filters; }
86 #endif
87
88     virtual void setBackgroundColor(const Color&);
89     virtual void clearBackgroundColor();
90
91     virtual void setContentsOpaque(bool);
92     virtual void setBackfaceVisibility(bool);
93
94     virtual void setOpacity(float);
95
96     virtual void setNeedsDisplay();
97     virtual void setNeedsDisplayInRect(const FloatRect&);
98
99     virtual void setContentsNeedsDisplay();
100
101     virtual void setContentsRect(const IntRect&);
102
103     virtual bool addAnimation(const KeyframeValueList&, const IntSize& boxSize, const Animation*, const String& animationName, double timeOffset);
104     virtual void pauseAnimation(const String& animationName, double timeOffset);
105     virtual void removeAnimation(const String& animationName);
106
107     virtual void suspendAnimations(double time);
108     virtual void resumeAnimations();
109
110     virtual void setContentsToImage(Image*);
111     virtual void setContentsToMedia(PlatformLayer*);
112     virtual void setContentsToCanvas(PlatformLayer*);
113
114     virtual PlatformLayer* platformLayer() const;
115
116     virtual void setDebugBackgroundColor(const Color&);
117     virtual void setDebugBorder(const Color&, float borderWidth);
118
119     void notifyFlushRequired()
120     {
121         if (m_client)
122             m_client->notifyFlushRequired(this);
123     }
124
125     void notifyAnimationStarted(double time)
126     {
127         if (m_client)
128             m_client->notifyAnimationStarted(this, time);
129     }
130
131     bool contentsVisible(const IntRect& contentRect) const;
132
133 private:
134     virtual void willBeDestroyed();
135
136     void updateOpacityOnLayer();
137
138     LayerWebKitThread* primaryLayer() const  { return m_transformLayer.get() ? m_transformLayer.get() : m_layer.get(); }
139     LayerWebKitThread* hostLayerForSublayers() const;
140     LayerWebKitThread* layerForSuperlayer() const;
141
142     void updateSublayerList();
143     void updateLayerPosition();
144     void updateLayerSize();
145     void updateAnchorPoint();
146     void updateTransform();
147     void updateChildrenTransform();
148     void updateMasksToBounds();
149     void updateContentsOpaque();
150     void updateBackfaceVisibility();
151     void updateLayerPreserves3D();
152     void updateLayerIsDrawable();
153     void updateFixedPosition();
154     void updateHasFixedContainer();
155     void updateHasFixedAncestorInDOMTree();
156     void updateLayerBackgroundColor();
157 #if ENABLE(CSS_FILTERS)
158     void updateFilters();
159 #endif
160     void updateAnimations();
161
162     void updateContentsImage(Image*);
163     void updateContentsVideo();
164     void updateContentsRect();
165
166     void setupContentsLayer(LayerWebKitThread*);
167     LayerWebKitThread* contentsLayer() const { return m_contentsLayer.get(); }
168
169     RefPtr<LayerWebKitThread> m_layer;
170     RefPtr<LayerWebKitThread> m_transformLayer;
171     RefPtr<LayerWebKitThread> m_contentsLayer;
172
173 #if ENABLE(CSS_FILTERS)
174     FilterOperations m_filters;
175 #endif
176
177     Vector<RefPtr<LayerAnimation> > m_runningAnimations;
178     Vector<RefPtr<LayerAnimation> > m_suspendedAnimations;
179     double m_suspendTime;
180
181     enum ContentsLayerPurpose {
182         NoContentsLayer = 0,
183         ContentsLayerForImage,
184         ContentsLayerForVideo,
185         ContentsLayerForCanvas,
186     };
187
188     ContentsLayerPurpose m_contentsLayerPurpose;
189     bool m_contentsLayerHasBackgroundColor : 1;
190 };
191
192 } // namespace WebCore
193
194 #endif // USE(ACCELERATED_COMPOSITING)
195
196 #endif