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

Side by Side Diff: cc/LayerChromium.h

Issue 11122003: [cc] Rename all cc/ filenames to Chromium style (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 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 | Annotate | Revision Log
« no previous file with comments | « cc/ImageLayerChromium.cpp ('k') | cc/LayerChromium.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2010 The Chromium Authors. All rights reserved. 1 // Copyright 2012 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 5 // Temporary forwarding header
6 #ifndef LayerChromium_h 6 #include "cc/layer.h"
7 #define LayerChromium_h
8
9 #if USE(ACCELERATED_COMPOSITING)
10
11 #include "base/memory/ref_counted.h"
12 #include "CCLayerAnimationController.h"
13 #include "CCOcclusionTracker.h"
14 #include "FloatPoint.h"
15 #include "Region.h"
16 #include "RenderSurfaceChromium.h"
17 #include "SkColor.h"
18 #include <public/WebFilterOperations.h>
19 #include <public/WebTransformationMatrix.h>
20 #include <string>
21 #include <vector>
22
23 namespace WebKit {
24 class WebAnimationDelegate;
25 class WebLayerScrollClient;
26 }
27
28 namespace cc {
29
30 class CCActiveAnimation;
31 struct CCAnimationEvent;
32 class CCLayerAnimationDelegate;
33 class CCLayerImpl;
34 class CCLayerTreeHost;
35 class CCPriorityCalculator;
36 class CCTextureUpdateQueue;
37 class ScrollbarLayerChromium;
38 struct CCAnimationEvent;
39 struct CCRenderingStats;
40
41 // Base class for composited layers. Special layer types are derived from
42 // this class.
43 class LayerChromium : public base::RefCounted<LayerChromium>, public CCLayerAnim ationControllerClient {
44 public:
45 typedef std::vector<scoped_refptr<LayerChromium> > LayerList;
46
47 static scoped_refptr<LayerChromium> create();
48
49 // CCLayerAnimationControllerClient implementation
50 virtual int id() const OVERRIDE;
51 virtual void setOpacityFromAnimation(float) OVERRIDE;
52 virtual float opacity() const OVERRIDE;
53 virtual void setTransformFromAnimation(const WebKit::WebTransformationMatrix &) OVERRIDE;
54 // A layer's transform operates layer space. That is, entirely in logical,
55 // non-page-scaled pixels (that is, they have page zoom baked in, but not pa ge scale).
56 // The root layer is a special case -- it operates in physical pixels.
57 virtual const WebKit::WebTransformationMatrix& transform() const OVERRIDE;
58
59 LayerChromium* rootLayer();
60 LayerChromium* parent() const;
61 void addChild(scoped_refptr<LayerChromium>);
62 void insertChild(scoped_refptr<LayerChromium>, size_t index);
63 void replaceChild(LayerChromium* reference, scoped_refptr<LayerChromium> new Layer);
64 void removeFromParent();
65 void removeAllChildren();
66 void setChildren(const LayerList&);
67
68 const LayerList& children() const { return m_children; }
69
70 void setAnchorPoint(const FloatPoint&);
71 FloatPoint anchorPoint() const { return m_anchorPoint; }
72
73 void setAnchorPointZ(float);
74 float anchorPointZ() const { return m_anchorPointZ; }
75
76 void setBackgroundColor(SkColor);
77 SkColor backgroundColor() const { return m_backgroundColor; }
78
79 // A layer's bounds are in logical, non-page-scaled pixels (however, the
80 // root layer's bounds are in physical pixels).
81 void setBounds(const IntSize&);
82 const IntSize& bounds() const { return m_bounds; }
83 virtual IntSize contentBounds() const;
84
85 void setMasksToBounds(bool);
86 bool masksToBounds() const { return m_masksToBounds; }
87
88 void setMaskLayer(LayerChromium*);
89 LayerChromium* maskLayer() const { return m_maskLayer.get(); }
90
91 virtual void setNeedsDisplayRect(const FloatRect& dirtyRect);
92 void setNeedsDisplay() { setNeedsDisplayRect(FloatRect(FloatPoint(), bounds( ))); }
93 virtual bool needsDisplay() const;
94
95 void setOpacity(float);
96 bool opacityIsAnimating() const;
97
98 void setFilters(const WebKit::WebFilterOperations&);
99 const WebKit::WebFilterOperations& filters() const { return m_filters; }
100
101 // Background filters are filters applied to what is behind this layer, when they are viewed through non-opaque
102 // regions in this layer. They are used through the WebLayer interface, and are not exposed to HTML.
103 void setBackgroundFilters(const WebKit::WebFilterOperations&);
104 const WebKit::WebFilterOperations& backgroundFilters() const { return m_back groundFilters; }
105
106 virtual void setContentsOpaque(bool);
107 bool contentsOpaque() const { return m_contentsOpaque; }
108
109 void setPosition(const FloatPoint&);
110 FloatPoint position() const { return m_position; }
111
112 void setIsContainerForFixedPositionLayers(bool);
113 bool isContainerForFixedPositionLayers() const { return m_isContainerForFixe dPositionLayers; }
114
115 void setFixedToContainerLayer(bool);
116 bool fixedToContainerLayer() const { return m_fixedToContainerLayer; }
117
118 void setSublayerTransform(const WebKit::WebTransformationMatrix&);
119 const WebKit::WebTransformationMatrix& sublayerTransform() const { return m_ sublayerTransform; }
120
121 void setTransform(const WebKit::WebTransformationMatrix&);
122 bool transformIsAnimating() const;
123
124 const IntRect& visibleContentRect() const { return m_visibleContentRect; }
125 void setVisibleContentRect(const IntRect& visibleContentRect) { m_visibleCon tentRect = visibleContentRect; }
126
127 void setScrollPosition(const IntPoint&);
128 const IntPoint& scrollPosition() const { return m_scrollPosition; }
129
130 void setMaxScrollPosition(const IntSize&);
131 const IntSize& maxScrollPosition() const { return m_maxScrollPosition; }
132
133 void setScrollable(bool);
134 bool scrollable() const { return m_scrollable; }
135
136 void setShouldScrollOnMainThread(bool);
137 bool shouldScrollOnMainThread() const { return m_shouldScrollOnMainThread; }
138
139 void setHaveWheelEventHandlers(bool);
140 bool haveWheelEventHandlers() const { return m_haveWheelEventHandlers; }
141
142 void setNonFastScrollableRegion(const Region&);
143 void setNonFastScrollableRegionChanged() { m_nonFastScrollableRegionChanged = true; }
144 const Region& nonFastScrollableRegion() const { return m_nonFastScrollableRe gion; }
145
146 void setLayerScrollClient(WebKit::WebLayerScrollClient* layerScrollClient) { m_layerScrollClient = layerScrollClient; }
147
148 void setDrawCheckerboardForMissingTiles(bool);
149 bool drawCheckerboardForMissingTiles() const { return m_drawCheckerboardForM issingTiles; }
150
151 bool forceRenderSurface() const { return m_forceRenderSurface; }
152 void setForceRenderSurface(bool);
153
154 IntSize scrollDelta() const { return IntSize(); }
155
156 void setImplTransform(const WebKit::WebTransformationMatrix&);
157 const WebKit::WebTransformationMatrix& implTransform() const { return m_impl Transform; }
158
159 void setDoubleSided(bool);
160 bool doubleSided() const { return m_doubleSided; }
161
162 void setPreserves3D(bool preserve3D) { m_preserves3D = preserve3D; }
163 bool preserves3D() const { return m_preserves3D; }
164
165 void setUseParentBackfaceVisibility(bool useParentBackfaceVisibility) { m_us eParentBackfaceVisibility = useParentBackfaceVisibility; }
166 bool useParentBackfaceVisibility() const { return m_useParentBackfaceVisibil ity; }
167
168 virtual void setUseLCDText(bool);
169 bool useLCDText() const { return m_useLCDText; }
170
171 virtual void setLayerTreeHost(CCLayerTreeHost*);
172
173 bool hasContributingDelegatedRenderPasses() const { return false; }
174
175 void setIsDrawable(bool);
176
177 void setReplicaLayer(LayerChromium*);
178 LayerChromium* replicaLayer() const { return m_replicaLayer.get(); }
179
180 bool hasMask() const { return m_maskLayer; }
181 bool hasReplica() const { return m_replicaLayer; }
182 bool replicaHasMask() const { return m_replicaLayer && (m_maskLayer || m_rep licaLayer->m_maskLayer); }
183
184 // These methods typically need to be overwritten by derived classes.
185 virtual bool drawsContent() const;
186 virtual void update(CCTextureUpdateQueue&, const CCOcclusionTracker*, CCRend eringStats&) { }
187 virtual bool needMoreUpdates();
188 virtual void setIsMask(bool) { }
189 virtual void bindContentsTexture() { }
190 virtual bool needsContentsScale() const;
191
192 void setDebugBorderColor(SkColor);
193 void setDebugBorderWidth(float);
194 void setDebugName(const std::string&);
195
196 virtual void pushPropertiesTo(CCLayerImpl*);
197
198 void clearRenderSurface() { m_renderSurface.reset(); }
199 RenderSurfaceChromium* renderSurface() const { return m_renderSurface.get(); }
200 void createRenderSurface();
201
202 float drawOpacity() const { return m_drawOpacity; }
203 void setDrawOpacity(float opacity) { m_drawOpacity = opacity; }
204
205 bool drawOpacityIsAnimating() const { return m_drawOpacityIsAnimating; }
206 void setDrawOpacityIsAnimating(bool drawOpacityIsAnimating) { m_drawOpacityI sAnimating = drawOpacityIsAnimating; }
207
208 LayerChromium* renderTarget() const { ASSERT(!m_renderTarget || m_renderTarg et->renderSurface()); return m_renderTarget; }
209 void setRenderTarget(LayerChromium* target) { m_renderTarget = target; }
210
211 bool drawTransformIsAnimating() const { return m_drawTransformIsAnimating; }
212 void setDrawTransformIsAnimating(bool animating) { m_drawTransformIsAnimatin g = animating; }
213 bool screenSpaceTransformIsAnimating() const { return m_screenSpaceTransform IsAnimating; }
214 void setScreenSpaceTransformIsAnimating(bool animating) { m_screenSpaceTrans formIsAnimating = animating; }
215
216 // This moves from layer space, with origin in the center to target space wi th origin in the top left.
217 // That is, it converts from logical, non-page-scaled, to target pixels (and if the target is the
218 // root render surface, then this converts to physical pixels).
219 const WebKit::WebTransformationMatrix& drawTransform() const { return m_draw Transform; }
220 void setDrawTransform(const WebKit::WebTransformationMatrix& matrix) { m_dra wTransform = matrix; }
221 // This moves from content space, with origin the top left to screen space w ith origin in the top left.
222 // It converts logical, non-page-scaled pixels to physical pixels.
223 const WebKit::WebTransformationMatrix& screenSpaceTransform() const { return m_screenSpaceTransform; }
224 void setScreenSpaceTransform(const WebKit::WebTransformationMatrix& matrix) { m_screenSpaceTransform = matrix; }
225 const IntRect& drawableContentRect() const { return m_drawableContentRect; }
226 void setDrawableContentRect(const IntRect& rect) { m_drawableContentRect = r ect; }
227 // The contentsScale converts from logical, non-page-scaled pixels to target pixels.
228 // The contentsScale is 1 for the root layer as it is already in physical pi xels.
229 float contentsScale() const { return m_contentsScale; }
230 void setContentsScale(float);
231
232 // When true, the layer's contents are not scaled by the current page scale factor.
233 // setBoundsContainPageScale recursively sets the value on all child layers.
234 void setBoundsContainPageScale(bool);
235 bool boundsContainPageScale() const { return m_boundsContainPageScale; }
236
237 // Returns true if any of the layer's descendants has content to draw.
238 bool descendantDrawsContent();
239
240 CCLayerTreeHost* layerTreeHost() const { return m_layerTreeHost; }
241
242 // Set the priority of all desired textures in this layer.
243 virtual void setTexturePriorities(const CCPriorityCalculator&) { }
244
245 bool addAnimation(scoped_ptr<CCActiveAnimation>);
246 void pauseAnimation(int animationId, double timeOffset);
247 void removeAnimation(int animationId);
248
249 void suspendAnimations(double monotonicTime);
250 void resumeAnimations(double monotonicTime);
251
252 CCLayerAnimationController* layerAnimationController() { return m_layerAnima tionController.get(); }
253 void setLayerAnimationController(scoped_ptr<CCLayerAnimationController>);
254 scoped_ptr<CCLayerAnimationController> releaseLayerAnimationController();
255
256 void setLayerAnimationDelegate(WebKit::WebAnimationDelegate* layerAnimationD elegate) { m_layerAnimationDelegate = layerAnimationDelegate; }
257
258 bool hasActiveAnimation() const;
259
260 virtual void notifyAnimationStarted(const CCAnimationEvent&, double wallCloc kTime);
261 virtual void notifyAnimationFinished(double wallClockTime);
262
263 virtual Region visibleContentOpaqueRegion() const;
264
265 virtual ScrollbarLayerChromium* toScrollbarLayerChromium();
266
267 protected:
268 friend class CCLayerImpl;
269 friend class TreeSynchronizer;
270 virtual ~LayerChromium();
271
272 LayerChromium();
273
274 void setNeedsCommit();
275
276 IntRect layerRectToContentRect(const WebKit::WebRect& layerRect);
277
278 // This flag is set when layer need repainting/updating.
279 bool m_needsDisplay;
280
281 // Tracks whether this layer may have changed stacking order with its siblin gs.
282 bool m_stackingOrderChanged;
283
284 // The update rect is the region of the compositor resource that was actuall y updated by the compositor.
285 // For layers that may do updating outside the compositor's control (i.e. pl ugin layers), this information
286 // is not available and the update rect will remain empty.
287 // Note this rect is in layer space (not content space).
288 FloatRect m_updateRect;
289
290 scoped_refptr<LayerChromium> m_maskLayer;
291
292 // Constructs a CCLayerImpl of the correct runtime type for this LayerChromi um type.
293 virtual scoped_ptr<CCLayerImpl> createCCLayerImpl();
294 int m_layerId;
295
296 private:
297 friend class base::RefCounted<LayerChromium>;
298
299 void setParent(LayerChromium*);
300 bool hasAncestor(LayerChromium*) const;
301 bool descendantIsFixedToContainerLayer() const;
302
303 size_t numChildren() const { return m_children.size(); }
304
305 // Returns the index of the child or -1 if not found.
306 int indexOfChild(const LayerChromium*);
307
308 // This should only be called from removeFromParent.
309 void removeChild(LayerChromium*);
310
311 LayerList m_children;
312 LayerChromium* m_parent;
313
314 // LayerChromium instances have a weak pointer to their CCLayerTreeHost.
315 // This pointer value is nil when a LayerChromium is not in a tree and is
316 // updated via setLayerTreeHost() if a layer moves between trees.
317 CCLayerTreeHost* m_layerTreeHost;
318
319 scoped_ptr<CCLayerAnimationController> m_layerAnimationController;
320
321 // Layer properties.
322 IntSize m_bounds;
323
324 // Uses layer's content space.
325 IntRect m_visibleContentRect;
326
327 IntPoint m_scrollPosition;
328 IntSize m_maxScrollPosition;
329 bool m_scrollable;
330 bool m_shouldScrollOnMainThread;
331 bool m_haveWheelEventHandlers;
332 Region m_nonFastScrollableRegion;
333 bool m_nonFastScrollableRegionChanged;
334 FloatPoint m_position;
335 FloatPoint m_anchorPoint;
336 SkColor m_backgroundColor;
337 SkColor m_debugBorderColor;
338 float m_debugBorderWidth;
339 std::string m_debugName;
340 float m_opacity;
341 WebKit::WebFilterOperations m_filters;
342 WebKit::WebFilterOperations m_backgroundFilters;
343 float m_anchorPointZ;
344 bool m_isContainerForFixedPositionLayers;
345 bool m_fixedToContainerLayer;
346 bool m_isDrawable;
347 bool m_masksToBounds;
348 bool m_contentsOpaque;
349 bool m_doubleSided;
350 bool m_useLCDText;
351 bool m_preserves3D;
352 bool m_useParentBackfaceVisibility;
353 bool m_drawCheckerboardForMissingTiles;
354 bool m_forceRenderSurface;
355
356 WebKit::WebTransformationMatrix m_transform;
357 WebKit::WebTransformationMatrix m_sublayerTransform;
358
359 // Replica layer used for reflections.
360 scoped_refptr<LayerChromium> m_replicaLayer;
361
362 // Transient properties.
363 scoped_ptr<RenderSurfaceChromium> m_renderSurface;
364 float m_drawOpacity;
365 bool m_drawOpacityIsAnimating;
366
367 LayerChromium* m_renderTarget;
368
369 WebKit::WebTransformationMatrix m_drawTransform;
370 WebKit::WebTransformationMatrix m_screenSpaceTransform;
371 bool m_drawTransformIsAnimating;
372 bool m_screenSpaceTransformIsAnimating;
373
374 // Uses target surface space.
375 IntRect m_drawableContentRect;
376 float m_contentsScale;
377 bool m_boundsContainPageScale;
378
379 WebKit::WebTransformationMatrix m_implTransform;
380
381 WebKit::WebAnimationDelegate* m_layerAnimationDelegate;
382 WebKit::WebLayerScrollClient* m_layerScrollClient;
383 };
384
385 void sortLayers(std::vector<scoped_refptr<LayerChromium> >::iterator, std::vecto r<scoped_refptr<LayerChromium> >::iterator, void*);
386
387 }
388 #endif // USE(ACCELERATED_COMPOSITING)
389
390 #endif
OLDNEW
« no previous file with comments | « cc/ImageLayerChromium.cpp ('k') | cc/LayerChromium.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698