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

Side by Side Diff: cc/layer_impl.h

Issue 11280263: Organize internal properties of cc/ layer types (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Complete patch Created 8 years 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
1 // Copyright 2011 The Chromium Authors. All rights reserved. 1 // Copyright 2011 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 CC_LAYER_IMPL_H_ 5 #ifndef CC_LAYER_IMPL_H_
6 #define CC_LAYER_IMPL_H_ 6 #define CC_LAYER_IMPL_H_
7 7
8 #include <public/WebFilterOperations.h> 8 #include <public/WebFilterOperations.h>
9 #include <string> 9 #include <string>
10 10
11 #include "base/logging.h" 11 #include "base/logging.h"
12 #include "base/memory/scoped_ptr.h" 12 #include "base/memory/scoped_ptr.h"
13 #include "cc/cc_export.h" 13 #include "cc/cc_export.h"
14 #include "cc/draw_properties.h"
14 #include "cc/input_handler.h" 15 #include "cc/input_handler.h"
15 #include "cc/layer_animation_controller.h" 16 #include "cc/layer_animation_controller.h"
16 #include "cc/region.h" 17 #include "cc/region.h"
17 #include "cc/render_pass.h" 18 #include "cc/render_pass.h"
18 #include "cc/render_surface_impl.h" 19 #include "cc/render_surface_impl.h"
19 #include "cc/resource_provider.h" 20 #include "cc/resource_provider.h"
20 #include "cc/scoped_ptr_vector.h" 21 #include "cc/scoped_ptr_vector.h"
21 #include "cc/shared_quad_state.h" 22 #include "cc/shared_quad_state.h"
22 #include "third_party/skia/include/core/SkColor.h" 23 #include "third_party/skia/include/core/SkColor.h"
23 #include "ui/gfx/rect.h" 24 #include "ui/gfx/rect.h"
(...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after
155 // Debug layer name. 156 // Debug layer name.
156 void setDebugName(const std::string& debugName) { m_debugName = debugName; } 157 void setDebugName(const std::string& debugName) { m_debugName = debugName; }
157 std::string debugName() const { return m_debugName; } 158 std::string debugName() const { return m_debugName; }
158 159
159 bool showDebugBorders() const; 160 bool showDebugBorders() const;
160 161
161 RenderSurfaceImpl* renderSurface() const { return m_renderSurface.get(); } 162 RenderSurfaceImpl* renderSurface() const { return m_renderSurface.get(); }
162 void createRenderSurface(); 163 void createRenderSurface();
163 void clearRenderSurface() { m_renderSurface.reset(); } 164 void clearRenderSurface() { m_renderSurface.reset(); }
164 165
165 float drawOpacity() const { return m_drawOpacity; } 166 DrawProperties<LayerImpl>& drawProperties() { return m_drawProperties; }
166 void setDrawOpacity(float opacity) { m_drawOpacity = opacity; } 167 const DrawProperties<LayerImpl>& drawProperties() const { return m_drawPrope rties; }
167 168
168 bool drawOpacityIsAnimating() const { return m_drawOpacityIsAnimating; } 169 // The following are shortcut accessors to get various information from m_dr awProperties
169 void setDrawOpacityIsAnimating(bool drawOpacityIsAnimating) { m_drawOpacityI sAnimating = drawOpacityIsAnimating; } 170 const gfx::Transform& drawTransform() const { return m_drawProperties.drawTr ansform; }
170 171 const gfx::Transform& screenSpaceTransform() const { return m_drawProperties .screenSpaceTransform; }
171 void setRenderTarget(LayerImpl* target) { m_renderTarget = target; } 172 float drawOpacity() const { return m_drawProperties.drawOpacity; }
172 LayerImpl* renderTarget() { DCHECK(!m_renderTarget || m_renderTarget->render Surface()); return m_renderTarget; } 173 bool drawOpacityIsAnimating() const { return m_drawProperties.drawOpacityIsA nimating; }
173 const LayerImpl* renderTarget() const { DCHECK(!m_renderTarget || m_renderTa rget->renderSurface()); return m_renderTarget; } 174 bool drawTransformIsAnimating() const { return m_drawProperties.drawTransfor mIsAnimating; }
175 bool screenSpaceTransformIsAnimating() const { return m_drawProperties.scree nSpaceTransformIsAnimating; }
176 bool isClipped() const { return m_drawProperties.isClipped; }
177 const gfx::Rect& clipRect() const { return m_drawProperties.clipRect; }
178 const gfx::Rect& drawableContentRect() const { return m_drawProperties.drawa bleContentRect; }
179 const gfx::Rect& visibleContentRect() const { return m_drawProperties.visibl eContentRect; }
180 LayerImpl* renderTarget() { DCHECK(!m_drawProperties.renderTarget || m_drawP roperties.renderTarget->renderSurface()); return m_drawProperties.renderTarget; }
181 const LayerImpl* renderTarget() const { DCHECK(!m_drawProperties.renderTarge t || m_drawProperties.renderTarget->renderSurface()); return m_drawProperties.re nderTarget; }
174 182
175 // The client should be responsible for setting bounds, contentBounds and 183 // The client should be responsible for setting bounds, contentBounds and
176 // contentsScale to appropriate values. LayerImpl doesn't calculate any of 184 // contentsScale to appropriate values. LayerImpl doesn't calculate any of
177 // them from the other values. 185 // them from the other values.
178 186
179 void setBounds(const gfx::Size&); 187 void setBounds(const gfx::Size&);
180 const gfx::Size& bounds() const { return m_bounds; } 188 const gfx::Size& bounds() const { return m_bounds; }
181 189
182 // ContentBounds may be [0, 1) pixels larger than bounds * contentsScale. 190 // ContentBounds may be [0, 1) pixels larger than bounds * contentsScale.
183 // Don't calculate scale from it. Use contentsScale instead for accuracy. 191 // Don't calculate scale from it. Use contentsScale instead for accuracy.
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
219 void setNonFastScrollableRegion(const Region& region) { m_nonFastScrollableR egion = region; } 227 void setNonFastScrollableRegion(const Region& region) { m_nonFastScrollableR egion = region; }
220 228
221 const Region& touchEventHandlerRegion() const { return m_touchEventHandlerRe gion; } 229 const Region& touchEventHandlerRegion() const { return m_touchEventHandlerRe gion; }
222 void setTouchEventHandlerRegion(const Region& region) { m_touchEventHandlerR egion = region; } 230 void setTouchEventHandlerRegion(const Region& region) { m_touchEventHandlerR egion = region; }
223 231
224 void setDrawCheckerboardForMissingTiles(bool checkerboard) { m_drawCheckerbo ardForMissingTiles = checkerboard; } 232 void setDrawCheckerboardForMissingTiles(bool checkerboard) { m_drawCheckerbo ardForMissingTiles = checkerboard; }
225 bool drawCheckerboardForMissingTiles() const; 233 bool drawCheckerboardForMissingTiles() const;
226 234
227 InputHandlerClient::ScrollStatus tryScroll(const gfx::PointF& screenSpacePoi nt, InputHandlerClient::ScrollInputType) const; 235 InputHandlerClient::ScrollStatus tryScroll(const gfx::PointF& screenSpacePoi nt, InputHandlerClient::ScrollInputType) const;
228 236
229 const gfx::Rect& visibleContentRect() const { return m_visibleContentRect; }
230 void setVisibleContentRect(const gfx::Rect& visibleContentRect) { m_visibleC ontentRect = visibleContentRect; }
231
232 bool doubleSided() const { return m_doubleSided; } 237 bool doubleSided() const { return m_doubleSided; }
233 void setDoubleSided(bool); 238 void setDoubleSided(bool);
234 239
235 void setTransform(const gfx::Transform&); 240 void setTransform(const gfx::Transform&);
236 bool transformIsAnimating() const; 241 bool transformIsAnimating() const;
237 242
238 const gfx::Transform& drawTransform() const { return m_drawTransform; }
239 void setDrawTransform(const gfx::Transform& matrix) { m_drawTransform = matr ix; }
240 const gfx::Transform& screenSpaceTransform() const { return m_screenSpaceTra nsform; }
241 void setScreenSpaceTransform(const gfx::Transform& matrix) { m_screenSpaceTr ansform = matrix; }
242
243 bool drawTransformIsAnimating() const { return m_drawTransformIsAnimating; }
244 void setDrawTransformIsAnimating(bool animating) { m_drawTransformIsAnimatin g = animating; }
245 bool screenSpaceTransformIsAnimating() const { return m_screenSpaceTransform IsAnimating; }
246 void setScreenSpaceTransformIsAnimating(bool animating) { m_screenSpaceTrans formIsAnimating = animating; }
247
248 bool isClipped() const { return m_isClipped; }
249 void setIsClipped(bool isClipped) { m_isClipped = isClipped; }
250
251 const gfx::Rect& clipRect() const { return m_clipRect; }
252 void setClipRect(const gfx::Rect& clipRect) { m_clipRect = clipRect; }
253
254 const gfx::Rect& drawableContentRect() const { return m_drawableContentRect; }
255 void setDrawableContentRect(const gfx::Rect& rect) { m_drawableContentRect = rect; }
256
257 const gfx::RectF& updateRect() const { return m_updateRect; } 243 const gfx::RectF& updateRect() const { return m_updateRect; }
258 void setUpdateRect(const gfx::RectF& updateRect) { m_updateRect = updateRect ; } 244 void setUpdateRect(const gfx::RectF& updateRect) { m_updateRect = updateRect ; }
259 245
260 std::string layerTreeAsText() const; 246 std::string layerTreeAsText() const;
261 247
262 void setStackingOrderChanged(bool); 248 void setStackingOrderChanged(bool);
263 249
264 bool layerPropertyChanged() const { return m_layerPropertyChanged || layerIs AlwaysDamaged(); } 250 bool layerPropertyChanged() const { return m_layerPropertyChanged || layerIs AlwaysDamaged(); }
265 bool layerSurfacePropertyChanged() const; 251 bool layerSurfacePropertyChanged() const;
266 252
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after
347 333
348 // Tracks if drawing-related properties have changed since last redraw. 334 // Tracks if drawing-related properties have changed since last redraw.
349 bool m_layerPropertyChanged; 335 bool m_layerPropertyChanged;
350 336
351 // Indicates that a property has changed on this layer that would not 337 // Indicates that a property has changed on this layer that would not
352 // affect the pixels on its target surface, but would require redrawing 338 // affect the pixels on its target surface, but would require redrawing
353 // but would require redrawing the targetSurface onto its ancestor targetSur face. 339 // but would require redrawing the targetSurface onto its ancestor targetSur face.
354 // For layers that do not own a surface this flag acts as m_layerPropertyCha nged. 340 // For layers that do not own a surface this flag acts as m_layerPropertyCha nged.
355 bool m_layerSurfacePropertyChanged; 341 bool m_layerSurfacePropertyChanged;
356 342
357 // Uses layer's content space.
358 gfx::Rect m_visibleContentRect;
359 bool m_masksToBounds; 343 bool m_masksToBounds;
360 bool m_contentsOpaque; 344 bool m_contentsOpaque;
361 float m_opacity; 345 float m_opacity;
362 gfx::PointF m_position; 346 gfx::PointF m_position;
363 bool m_preserves3D; 347 bool m_preserves3D;
364 bool m_useParentBackfaceVisibility; 348 bool m_useParentBackfaceVisibility;
365 bool m_drawCheckerboardForMissingTiles; 349 bool m_drawCheckerboardForMissingTiles;
366 gfx::Transform m_sublayerTransform; 350 gfx::Transform m_sublayerTransform;
367 gfx::Transform m_transform; 351 gfx::Transform m_transform;
368 bool m_useLCDText; 352 bool m_useLCDText;
369 353
370 bool m_drawsContent; 354 bool m_drawsContent;
371 bool m_forceRenderSurface; 355 bool m_forceRenderSurface;
372 356
373 // Set for the layer that other layers are fixed to. 357 // Set for the layer that other layers are fixed to.
374 bool m_isContainerForFixedPositionLayers; 358 bool m_isContainerForFixedPositionLayers;
375 // This is true if the layer should be fixed to the closest ancestor contain er. 359 // This is true if the layer should be fixed to the closest ancestor contain er.
376 bool m_fixedToContainerLayer; 360 bool m_fixedToContainerLayer;
377 361
378 gfx::Vector2dF m_scrollDelta; 362 gfx::Vector2dF m_scrollDelta;
379 gfx::Vector2d m_sentScrollDelta; 363 gfx::Vector2d m_sentScrollDelta;
380 gfx::Vector2d m_maxScrollOffset; 364 gfx::Vector2d m_maxScrollOffset;
381 gfx::Transform m_implTransform; 365 gfx::Transform m_implTransform;
382 366
383 // The layer whose coordinate space this layer draws into. This can be
384 // either the same layer (m_renderTarget == this) or an ancestor of this
385 // layer.
386 LayerImpl* m_renderTarget;
387
388 // The global depth value of the center of the layer. This value is used 367 // The global depth value of the center of the layer. This value is used
389 // to sort layers from back to front. 368 // to sort layers from back to front.
390 float m_drawDepth; 369 float m_drawDepth;
391 float m_drawOpacity;
392 bool m_drawOpacityIsAnimating;
393 370
394 // Debug layer name. 371 // Debug layer name.
395 std::string m_debugName; 372 std::string m_debugName;
396 373
397 WebKit::WebFilterOperations m_filters; 374 WebKit::WebFilterOperations m_filters;
398 WebKit::WebFilterOperations m_backgroundFilters; 375 WebKit::WebFilterOperations m_backgroundFilters;
399 SkImageFilter* m_filter; 376 SkImageFilter* m_filter;
400 377
401 gfx::Transform m_drawTransform;
402 gfx::Transform m_screenSpaceTransform;
403 bool m_drawTransformIsAnimating;
404 bool m_screenSpaceTransformIsAnimating;
405
406 #ifndef NDEBUG 378 #ifndef NDEBUG
407 bool m_betweenWillDrawAndDidDraw; 379 bool m_betweenWillDrawAndDidDraw;
408 #endif 380 #endif
409 381
410 // Render surface associated with this layer. The layer and its descendants 382 // Render surface associated with this layer. The layer and its descendants
411 // will render to this surface. 383 // will render to this surface.
412 scoped_ptr<RenderSurfaceImpl> m_renderSurface; 384 scoped_ptr<RenderSurfaceImpl> m_renderSurface;
413 385
414 // Uses target surface's space.
415 gfx::Rect m_drawableContentRect;
416 gfx::Rect m_clipRect;
417
418 // True if the layer is clipped by m_clipRect.
419 bool m_isClipped;
420
421 // Rect indicating what was repainted/updated during update. 386 // Rect indicating what was repainted/updated during update.
422 // Note that plugin layers bypass this and leave it empty. 387 // Note that plugin layers bypass this and leave it empty.
423 // Uses layer's content space. 388 // Uses layer's content space.
424 gfx::RectF m_updateRect; 389 gfx::RectF m_updateRect;
425 390
426 // Manages animations for this layer. 391 // Manages animations for this layer.
427 scoped_ptr<LayerAnimationController> m_layerAnimationController; 392 scoped_ptr<LayerAnimationController> m_layerAnimationController;
428 393
429 // Manages scrollbars for this layer 394 // Manages scrollbars for this layer
430 scoped_ptr<ScrollbarAnimationController> m_scrollbarAnimationController; 395 scoped_ptr<ScrollbarAnimationController> m_scrollbarAnimationController;
431 396
397 // Group of properties that need to be computed based on the layer tree
398 // hierarchy before layers can be drawn.
399 DrawProperties<LayerImpl> m_drawProperties;
400
432 DISALLOW_COPY_AND_ASSIGN(LayerImpl); 401 DISALLOW_COPY_AND_ASSIGN(LayerImpl);
433 }; 402 };
434 403
435 void sortLayers(std::vector<LayerImpl*>::iterator first, std::vector<LayerImpl*> ::iterator end, LayerSorter*); 404 void sortLayers(std::vector<LayerImpl*>::iterator first, std::vector<LayerImpl*> ::iterator end, LayerSorter*);
436 405
437 } 406 }
438 407
439 #endif // CC_LAYER_IMPL_H_ 408 #endif // CC_LAYER_IMPL_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698