OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2009 Apple Inc. All rights reserved. | 2 * Copyright (C) 2009 Apple Inc. All rights reserved. |
3 * Copyright (C) 2013 Intel Corporation. All rights reserved. | 3 * Copyright (C) 2013 Intel Corporation. All rights reserved. |
4 * | 4 * |
5 * Redistribution and use in source and binary forms, with or without | 5 * Redistribution and use in source and binary forms, with or without |
6 * modification, are permitted provided that the following conditions | 6 * modification, are permitted provided that the following conditions |
7 * are met: | 7 * are met: |
8 * 1. Redistributions of source code must retain the above copyright | 8 * 1. Redistributions of source code must retain the above copyright |
9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
10 * 2. Redistributions in binary form must reproduce the above copyright | 10 * 2. Redistributions in binary form must reproduce the above copyright |
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
95 | 95 |
96 GraphicsLayerDebugInfo& debugInfo(); | 96 GraphicsLayerDebugInfo& debugInfo(); |
97 | 97 |
98 void setCompositingReasons(CompositingReasons); | 98 void setCompositingReasons(CompositingReasons); |
99 CompositingReasons compositingReasons() const { return m_debugInfo.compositi
ngReasons(); } | 99 CompositingReasons compositingReasons() const { return m_debugInfo.compositi
ngReasons(); } |
100 void setOwnerNodeId(int); | 100 void setOwnerNodeId(int); |
101 | 101 |
102 GraphicsLayer* parent() const { return m_parent; }; | 102 GraphicsLayer* parent() const { return m_parent; }; |
103 void setParent(GraphicsLayer*); // Internal use only. | 103 void setParent(GraphicsLayer*); // Internal use only. |
104 | 104 |
105 // Returns true if the layer has the given layer as an ancestor (excluding s
elf). | |
106 bool hasAncestor(GraphicsLayer*) const; | |
107 | |
108 const Vector<GraphicsLayer*>& children() const { return m_children; } | 105 const Vector<GraphicsLayer*>& children() const { return m_children; } |
109 // Returns true if the child list changed. | 106 // Returns true if the child list changed. |
110 bool setChildren(const GraphicsLayerVector&); | 107 bool setChildren(const GraphicsLayerVector&); |
111 | 108 |
112 // Add child layers. If the child is already parented, it will be removed fr
om its old parent. | 109 // Add child layers. If the child is already parented, it will be removed fr
om its old parent. |
113 void addChild(GraphicsLayer*); | 110 void addChild(GraphicsLayer*); |
114 void addChildAtIndex(GraphicsLayer*, int index); | 111 void addChildAtIndex(GraphicsLayer*, int index); |
115 void addChildAbove(GraphicsLayer*, GraphicsLayer* sibling); | 112 void addChildAbove(GraphicsLayer*, GraphicsLayer* sibling); |
116 void addChildBelow(GraphicsLayer*, GraphicsLayer* sibling); | 113 void addChildBelow(GraphicsLayer*, GraphicsLayer* sibling); |
117 bool replaceChild(GraphicsLayer* oldChild, GraphicsLayer* newChild); | 114 bool replaceChild(GraphicsLayer* oldChild, GraphicsLayer* newChild); |
118 | 115 |
119 void removeAllChildren(); | 116 void removeAllChildren(); |
120 void removeFromParent(); | 117 void removeFromParent(); |
121 | 118 |
122 GraphicsLayer* maskLayer() const { return m_maskLayer; } | 119 GraphicsLayer* maskLayer() const { return m_maskLayer; } |
123 void setMaskLayer(GraphicsLayer*); | 120 void setMaskLayer(GraphicsLayer*); |
124 | 121 |
125 GraphicsLayer* contentsClippingMaskLayer() const { return m_contentsClipping
MaskLayer; } | 122 GraphicsLayer* contentsClippingMaskLayer() const { return m_contentsClipping
MaskLayer; } |
126 void setContentsClippingMaskLayer(GraphicsLayer*); | 123 void setContentsClippingMaskLayer(GraphicsLayer*); |
127 | 124 |
128 // The given layer will replicate this layer and its children; the replica r
enders behind this layer. | 125 // The given layer will replicate this layer and its children; the replica r
enders behind this layer. |
129 void setReplicatedByLayer(GraphicsLayer*); | 126 void setReplicatedByLayer(GraphicsLayer*); |
130 // Whether this layer is being replicated by another layer. | |
131 bool isReplicated() const { return m_replicaLayer; } | |
132 // The layer that replicates this layer (if any). | 127 // The layer that replicates this layer (if any). |
133 GraphicsLayer* replicaLayer() const { return m_replicaLayer; } | 128 GraphicsLayer* replicaLayer() const { return m_replicaLayer; } |
134 // The layer being replicated. | 129 // The layer being replicated. |
135 GraphicsLayer* replicatedLayer() const { return m_replicatedLayer; } | 130 GraphicsLayer* replicatedLayer() const { return m_replicatedLayer; } |
136 | 131 |
137 enum ShouldSetNeedsDisplay { | 132 enum ShouldSetNeedsDisplay { |
138 DontSetNeedsDisplay, | 133 DontSetNeedsDisplay, |
139 SetNeedsDisplay | 134 SetNeedsDisplay |
140 }; | 135 }; |
141 | 136 |
(...skipping 11 matching lines...) Expand all Loading... |
153 // The size of the layer. | 148 // The size of the layer. |
154 const FloatSize& size() const { return m_size; } | 149 const FloatSize& size() const { return m_size; } |
155 void setSize(const FloatSize&); | 150 void setSize(const FloatSize&); |
156 | 151 |
157 // The boundOrigin affects the offset at which content is rendered, and subl
ayers are positioned. | 152 // The boundOrigin affects the offset at which content is rendered, and subl
ayers are positioned. |
158 const FloatPoint& boundsOrigin() const { return m_boundsOrigin; } | 153 const FloatPoint& boundsOrigin() const { return m_boundsOrigin; } |
159 void setBoundsOrigin(const FloatPoint& origin) { m_boundsOrigin = origin; } | 154 void setBoundsOrigin(const FloatPoint& origin) { m_boundsOrigin = origin; } |
160 | 155 |
161 const TransformationMatrix& transform() const { return m_transform; } | 156 const TransformationMatrix& transform() const { return m_transform; } |
162 void setTransform(const TransformationMatrix&); | 157 void setTransform(const TransformationMatrix&); |
163 | |
164 bool shouldFlattenTransform() const { return m_shouldFlattenTransform; } | |
165 void setShouldFlattenTransform(bool); | 158 void setShouldFlattenTransform(bool); |
166 | |
167 int renderingContext() const { return m_3dRenderingContext; } | |
168 void setRenderingContext(int id); | 159 void setRenderingContext(int id); |
169 | |
170 bool masksToBounds() const { return m_masksToBounds; } | |
171 void setMasksToBounds(bool); | 160 void setMasksToBounds(bool); |
172 | 161 |
173 bool drawsContent() const { return m_drawsContent; } | 162 bool drawsContent() const { return m_drawsContent; } |
174 void setDrawsContent(bool); | 163 void setDrawsContent(bool); |
175 | 164 |
176 bool contentsAreVisible() const { return m_contentsVisible; } | 165 bool contentsAreVisible() const { return m_contentsVisible; } |
177 void setContentsVisible(bool); | 166 void setContentsVisible(bool); |
178 | 167 |
179 void setScrollParent(blink::WebLayer*); | 168 void setScrollParent(blink::WebLayer*); |
180 void setClipParent(blink::WebLayer*); | 169 void setClipParent(blink::WebLayer*); |
181 | 170 |
182 // For special cases, e.g. drawing missing tiles on Android. | 171 // For special cases, e.g. drawing missing tiles on Android. |
183 // The compositor should never paint this color in normal cases because the
RenderLayer | 172 // The compositor should never paint this color in normal cases because the
RenderLayer |
184 // will paint background by itself. | 173 // will paint background by itself. |
185 const Color& backgroundColor() const { return m_backgroundColor; } | |
186 void setBackgroundColor(const Color&); | 174 void setBackgroundColor(const Color&); |
187 | 175 |
188 // opaque means that we know the layer contents have no alpha | 176 // opaque means that we know the layer contents have no alpha |
189 bool contentsOpaque() const { return m_contentsOpaque; } | 177 bool contentsOpaque() const { return m_contentsOpaque; } |
190 void setContentsOpaque(bool); | 178 void setContentsOpaque(bool); |
191 | 179 |
192 bool backfaceVisibility() const { return m_backfaceVisibility; } | 180 bool backfaceVisibility() const { return m_backfaceVisibility; } |
193 void setBackfaceVisibility(bool visible); | 181 void setBackfaceVisibility(bool visible); |
194 | 182 |
195 float opacity() const { return m_opacity; } | 183 float opacity() const { return m_opacity; } |
196 void setOpacity(float); | 184 void setOpacity(float); |
197 | 185 |
198 blink::WebBlendMode blendMode() const { return m_blendMode; } | |
199 void setBlendMode(blink::WebBlendMode); | 186 void setBlendMode(blink::WebBlendMode); |
200 | |
201 bool isRootForIsolatedGroup() const { return m_isRootForIsolatedGroup; } | |
202 void setIsRootForIsolatedGroup(bool); | 187 void setIsRootForIsolatedGroup(bool); |
203 | 188 |
204 const FilterOperations& filters() const { return m_filters; } | |
205 | |
206 // Returns true if filter can be rendered by the compositor | 189 // Returns true if filter can be rendered by the compositor |
207 bool setFilters(const FilterOperations&); | 190 bool setFilters(const FilterOperations&); |
208 void setBackgroundFilters(const FilterOperations&); | 191 void setBackgroundFilters(const FilterOperations&); |
209 | 192 |
210 // Some GraphicsLayers paint only the foreground or the background content | 193 // Some GraphicsLayers paint only the foreground or the background content |
211 GraphicsLayerPaintingPhase paintingPhase() const { return m_paintingPhase; } | |
212 void setPaintingPhase(GraphicsLayerPaintingPhase); | 194 void setPaintingPhase(GraphicsLayerPaintingPhase); |
213 | 195 |
214 void setNeedsDisplay(); | 196 void setNeedsDisplay(); |
215 // mark the given rect (in layer coords) as needing dispay. Never goes deep. | 197 // mark the given rect (in layer coords) as needing dispay. Never goes deep. |
216 void setNeedsDisplayInRect(const FloatRect&); | 198 void setNeedsDisplayInRect(const FloatRect&); |
217 | 199 |
218 void setContentsNeedsDisplay(); | 200 void setContentsNeedsDisplay(); |
219 | 201 |
220 // Set that the position/size of the contents (image or video). | 202 // Set that the position/size of the contents (image or video). |
221 IntRect contentsRect() const { return m_contentsRect; } | |
222 void setContentsRect(const IntRect&); | 203 void setContentsRect(const IntRect&); |
223 | 204 |
224 // Return true if the animation is handled by the compositing system. If thi
s returns | 205 // Return true if the animation is handled by the compositing system. If thi
s returns |
225 // false, the animation will be run by AnimationController. | 206 // false, the animation will be run by AnimationController. |
226 // These methods handle both transitions and keyframe animations. | 207 // These methods handle both transitions and keyframe animations. |
227 bool addAnimation(PassOwnPtr<blink::WebAnimation>); | 208 bool addAnimation(PassOwnPtr<blink::WebAnimation>); |
228 void pauseAnimation(int animationId, double /*timeOffset*/); | 209 void pauseAnimation(int animationId, double /*timeOffset*/); |
229 void removeAnimation(int animationId); | 210 void removeAnimation(int animationId); |
230 | 211 |
231 // Layer contents | 212 // Layer contents |
232 void setContentsToImage(Image*); | 213 void setContentsToImage(Image*); |
233 void setContentsToNinePatch(Image*, const IntRect& aperture); | 214 void setContentsToNinePatch(Image*, const IntRect& aperture); |
234 void setContentsToPlatformLayer(blink::WebLayer* layer) { setContentsTo(laye
r); } | 215 void setContentsToPlatformLayer(blink::WebLayer* layer) { setContentsTo(laye
r); } |
235 bool hasContentsLayer() const { return m_contentsLayer; } | 216 bool hasContentsLayer() const { return m_contentsLayer; } |
236 | 217 |
237 // Callback from the underlying graphics system to draw layer contents. | 218 // Callback from the underlying graphics system to draw layer contents. |
238 void paintGraphicsLayerContents(GraphicsContext&, const IntRect& clip); | 219 void paintGraphicsLayerContents(GraphicsContext&, const IntRect& clip); |
239 | 220 |
240 // For hosting this GraphicsLayer in a native layer hierarchy. | 221 // For hosting this GraphicsLayer in a native layer hierarchy. |
241 blink::WebLayer* platformLayer() const; | 222 blink::WebLayer* platformLayer() const; |
242 | 223 |
243 enum CompositingCoordinatesOrientation { CompositingCoordinatesTopDown, Comp
ositingCoordinatesBottomUp }; | |
244 | |
245 // Flippedness of the contents of this layer. Does not affect sublayer geome
try. | |
246 void setContentsOrientation(CompositingCoordinatesOrientation orientation) {
m_contentsOrientation = orientation; } | |
247 CompositingCoordinatesOrientation contentsOrientation() const { return m_con
tentsOrientation; } | |
248 | |
249 typedef HashMap<int, int> RenderingContextMap; | 224 typedef HashMap<int, int> RenderingContextMap; |
250 void dumpLayer(TextStream&, int indent, LayerTreeFlags, RenderingContextMap&
) const; | 225 void dumpLayer(TextStream&, int indent, LayerTreeFlags, RenderingContextMap&
) const; |
251 | 226 |
252 int paintCount() const { return m_paintCount; } | 227 int paintCount() const { return m_paintCount; } |
253 | 228 |
254 // z-position is the z-equivalent of position(). It's only used for debuggin
g purposes. | |
255 float zPosition() const { return m_zPosition; } | |
256 void setZPosition(float); | |
257 | |
258 // If the exposed rect of this layer changes, returns true if this or descen
dant layers need a flush, | |
259 // for example to allocate new tiles. | |
260 bool visibleRectChangeRequiresFlush(const FloatRect& /* clipRect */) const {
return false; } | |
261 | |
262 // Return a string with a human readable form of the layer tree, If debug is
true | 229 // Return a string with a human readable form of the layer tree, If debug is
true |
263 // pointers for the layers and timing data will be included in the returned
string. | 230 // pointers for the layers and timing data will be included in the returned
string. |
264 String layerTreeAsText(LayerTreeFlags = LayerTreeNormal) const; | 231 String layerTreeAsText(LayerTreeFlags = LayerTreeNormal) const; |
265 String debugName(blink::WebLayer*) const; | 232 String debugName(blink::WebLayer*) const; |
266 | 233 |
267 void resetTrackedRepaints(); | 234 void resetTrackedRepaints(); |
268 void addRepaintRect(const FloatRect&); | 235 void addRepaintRect(const FloatRect&); |
269 | 236 |
270 void collectTrackedRepaintRects(Vector<FloatRect>&) const; | 237 void collectTrackedRepaintRects(Vector<FloatRect>&) const; |
271 | 238 |
(...skipping 27 matching lines...) Expand all Loading... |
299 friend class blink::GraphicsLayerFactoryChromium; | 266 friend class blink::GraphicsLayerFactoryChromium; |
300 | 267 |
301 // Exposed for tests. | 268 // Exposed for tests. |
302 virtual blink::WebLayer* contentsLayer() const { return m_contentsLayer; } | 269 virtual blink::WebLayer* contentsLayer() const { return m_contentsLayer; } |
303 | 270 |
304 private: | 271 private: |
305 // Adds a child without calling updateChildList(), so that adding children | 272 // Adds a child without calling updateChildList(), so that adding children |
306 // can be batched before updating. | 273 // can be batched before updating. |
307 void addChildInternal(GraphicsLayer*); | 274 void addChildInternal(GraphicsLayer*); |
308 | 275 |
| 276 #if ASSERT_ENABLED |
| 277 bool hasAncestor(GraphicsLayer*) const; |
| 278 #endif |
| 279 |
309 // This method is used by platform GraphicsLayer classes to clear the filter
s | 280 // This method is used by platform GraphicsLayer classes to clear the filter
s |
310 // when compositing is not done in hardware. It is not virtual, so the calle
r | 281 // when compositing is not done in hardware. It is not virtual, so the calle
r |
311 // needs to notifiy the change to the platform layer as needed. | 282 // needs to notifiy the change to the platform layer as needed. |
312 void clearFilters() { m_filters.clear(); } | 283 void clearFilters() { m_filters.clear(); } |
313 | 284 |
314 void setReplicatedLayer(GraphicsLayer* layer) { m_replicatedLayer = layer; } | 285 void setReplicatedLayer(GraphicsLayer* layer) { m_replicatedLayer = layer; } |
315 | 286 |
316 int incrementPaintCount() { return ++m_paintCount; } | 287 int incrementPaintCount() { return ++m_paintCount; } |
317 | 288 |
318 void dumpProperties(TextStream&, int indent, LayerTreeFlags, RenderingContex
tMap&) const; | 289 void dumpProperties(TextStream&, int indent, LayerTreeFlags, RenderingContex
tMap&) const; |
(...skipping 16 matching lines...) Expand all Loading... |
335 // Position is relative to the parent GraphicsLayer | 306 // Position is relative to the parent GraphicsLayer |
336 FloatPoint m_position; | 307 FloatPoint m_position; |
337 FloatSize m_size; | 308 FloatSize m_size; |
338 FloatPoint m_boundsOrigin; | 309 FloatPoint m_boundsOrigin; |
339 | 310 |
340 TransformationMatrix m_transform; | 311 TransformationMatrix m_transform; |
341 FloatPoint3D m_transformOrigin; | 312 FloatPoint3D m_transformOrigin; |
342 | 313 |
343 Color m_backgroundColor; | 314 Color m_backgroundColor; |
344 float m_opacity; | 315 float m_opacity; |
345 float m_zPosition; | |
346 | 316 |
347 blink::WebBlendMode m_blendMode; | 317 blink::WebBlendMode m_blendMode; |
348 | 318 |
349 FilterOperations m_filters; | 319 FilterOperations m_filters; |
350 | 320 |
351 bool m_hasTransformOrigin : 1; | 321 bool m_hasTransformOrigin : 1; |
352 bool m_contentsOpaque : 1; | 322 bool m_contentsOpaque : 1; |
353 bool m_shouldFlattenTransform: 1; | 323 bool m_shouldFlattenTransform: 1; |
354 bool m_backfaceVisibility : 1; | 324 bool m_backfaceVisibility : 1; |
355 bool m_masksToBounds : 1; | 325 bool m_masksToBounds : 1; |
356 bool m_drawsContent : 1; | 326 bool m_drawsContent : 1; |
357 bool m_contentsVisible : 1; | 327 bool m_contentsVisible : 1; |
358 bool m_isRootForIsolatedGroup : 1; | 328 bool m_isRootForIsolatedGroup : 1; |
359 | 329 |
360 bool m_hasScrollParent : 1; | 330 bool m_hasScrollParent : 1; |
361 bool m_hasClipParent : 1; | 331 bool m_hasClipParent : 1; |
362 | 332 |
363 GraphicsLayerPaintingPhase m_paintingPhase; | 333 GraphicsLayerPaintingPhase m_paintingPhase; |
364 CompositingCoordinatesOrientation m_contentsOrientation; // affects orientat
ion of layer contents | |
365 | 334 |
366 Vector<GraphicsLayer*> m_children; | 335 Vector<GraphicsLayer*> m_children; |
367 GraphicsLayer* m_parent; | 336 GraphicsLayer* m_parent; |
368 | 337 |
369 GraphicsLayer* m_maskLayer; // Reference to mask layer. We don't own this. | 338 GraphicsLayer* m_maskLayer; // Reference to mask layer. We don't own this. |
370 GraphicsLayer* m_contentsClippingMaskLayer; // Reference to clipping mask la
yer. We don't own this. | 339 GraphicsLayer* m_contentsClippingMaskLayer; // Reference to clipping mask la
yer. We don't own this. |
371 | 340 |
372 GraphicsLayer* m_replicaLayer; // A layer that replicates this layer. We onl
y allow one, for now. | 341 GraphicsLayer* m_replicaLayer; // A layer that replicates this layer. We onl
y allow one, for now. |
373 // The replica is not parented; this is the p
rimary reference to it. | 342 // The replica is not parented; this is the p
rimary reference to it. |
374 GraphicsLayer* m_replicatedLayer; // For a replica layer, a reference to the
original layer. | 343 GraphicsLayer* m_replicatedLayer; // For a replica layer, a reference to the
original layer. |
(...skipping 23 matching lines...) Expand all Loading... |
398 }; | 367 }; |
399 | 368 |
400 } // namespace WebCore | 369 } // namespace WebCore |
401 | 370 |
402 #ifndef NDEBUG | 371 #ifndef NDEBUG |
403 // Outside the WebCore namespace for ease of invocation from gdb. | 372 // Outside the WebCore namespace for ease of invocation from gdb. |
404 void PLATFORM_EXPORT showGraphicsLayerTree(const WebCore::GraphicsLayer*); | 373 void PLATFORM_EXPORT showGraphicsLayerTree(const WebCore::GraphicsLayer*); |
405 #endif | 374 #endif |
406 | 375 |
407 #endif // GraphicsLayer_h | 376 #endif // GraphicsLayer_h |
OLD | NEW |