Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2010 The Chromium Authors. All rights reserved. | 1 // Copyright 2010 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_H_ | 5 #ifndef CC_LAYER_H_ |
| 6 #define CC_LAYER_H_ | 6 #define CC_LAYER_H_ |
| 7 | 7 |
| 8 #include <public/WebFilterOperations.h> | 8 #include <public/WebFilterOperations.h> |
| 9 #include <string> | 9 #include <string> |
| 10 #include <vector> | 10 #include <vector> |
| 11 | 11 |
| 12 #include "base/memory/ref_counted.h" | 12 #include "base/memory/ref_counted.h" |
| 13 #include "cc/cc_export.h" | 13 #include "cc/cc_export.h" |
| 14 #include "cc/draw_properties.h" | |
| 14 #include "cc/layer_animation_controller.h" | 15 #include "cc/layer_animation_controller.h" |
| 15 #include "cc/occlusion_tracker.h" | 16 #include "cc/occlusion_tracker.h" |
| 16 #include "cc/region.h" | 17 #include "cc/region.h" |
| 17 #include "cc/render_surface.h" | 18 #include "cc/render_surface.h" |
| 18 #include "third_party/skia/include/core/SkColor.h" | 19 #include "third_party/skia/include/core/SkColor.h" |
| 19 #include "ui/gfx/rect.h" | 20 #include "ui/gfx/rect.h" |
| 20 #include "ui/gfx/rect_f.h" | 21 #include "ui/gfx/rect_f.h" |
| 21 #include "ui/gfx/transform.h" | 22 #include "ui/gfx/transform.h" |
| 22 | 23 |
| 23 namespace WebKit { | 24 namespace WebKit { |
| (...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 121 | 122 |
| 122 void setFixedToContainerLayer(bool); | 123 void setFixedToContainerLayer(bool); |
| 123 bool fixedToContainerLayer() const { return m_fixedToContainerLayer; } | 124 bool fixedToContainerLayer() const { return m_fixedToContainerLayer; } |
| 124 | 125 |
| 125 void setSublayerTransform(const gfx::Transform&); | 126 void setSublayerTransform(const gfx::Transform&); |
| 126 const gfx::Transform& sublayerTransform() const { return m_sublayerTransform ; } | 127 const gfx::Transform& sublayerTransform() const { return m_sublayerTransform ; } |
| 127 | 128 |
| 128 void setTransform(const gfx::Transform&); | 129 void setTransform(const gfx::Transform&); |
| 129 bool transformIsAnimating() const; | 130 bool transformIsAnimating() const; |
| 130 | 131 |
| 131 const gfx::Rect& visibleContentRect() const { return m_visibleContentRect; } | 132 DrawProperties<Layer>& drawProperties() { return m_drawProperties; } |
| 132 void setVisibleContentRect(const gfx::Rect& visibleContentRect) { m_visibleC ontentRect = visibleContentRect; } | 133 const DrawProperties<Layer>& drawProperties() const { return m_drawPropertie s; } |
| 134 | |
| 135 // The following are shortcut accessors to get various information from m_dr awProperties | |
| 136 const gfx::Transform& drawTransform() const { return m_drawProperties.drawTr ansform; } | |
| 137 const gfx::Transform& screenSpaceTransform() const { return m_drawProperties .screenSpaceTransform; } | |
| 138 float drawOpacity() const { return m_drawProperties.drawOpacity; } | |
| 139 bool drawOpacityIsAnimating() const { return m_drawProperties.drawOpacityIsA nimating; } | |
| 140 bool drawTransformIsAnimating() const { return m_drawProperties.drawTransfor mIsAnimating; } | |
| 141 bool screenSpaceTransformIsAnimating() const { return m_drawProperties.scree nSpaceTransformIsAnimating; } | |
| 142 bool isClipped() const { return m_drawProperties.isClipped; } | |
| 143 const gfx::Rect& clipRect() const { return m_drawProperties.clipRect; } | |
| 144 const gfx::Rect& drawableContentRect() const { return m_drawProperties.drawa bleContentRect; } | |
| 145 const gfx::Rect& visibleContentRect() const { return m_drawProperties.visibl eContentRect; } | |
| 146 Layer* renderTarget() { DCHECK(!m_drawProperties.renderTarget || m_drawPrope rties.renderTarget->renderSurface()); return m_drawProperties.renderTarget; } | |
| 147 const Layer* renderTarget() const { DCHECK(!m_drawProperties.renderTarget || m_drawProperties.renderTarget->renderSurface()); return m_drawProperties.render Target; } | |
| 133 | 148 |
| 134 void setScrollOffset(gfx::Vector2d); | 149 void setScrollOffset(gfx::Vector2d); |
| 135 gfx::Vector2d scrollOffset() const { return m_scrollOffset; } | 150 gfx::Vector2d scrollOffset() const { return m_scrollOffset; } |
| 136 | 151 |
| 137 void setMaxScrollOffset(gfx::Vector2d); | 152 void setMaxScrollOffset(gfx::Vector2d); |
| 138 gfx::Vector2d maxScrollOffset() const { return m_maxScrollOffset; } | 153 gfx::Vector2d maxScrollOffset() const { return m_maxScrollOffset; } |
| 139 | 154 |
| 140 void setScrollable(bool); | 155 void setScrollable(bool); |
| 141 bool scrollable() const { return m_scrollable; } | 156 bool scrollable() const { return m_scrollable; } |
| 142 | 157 |
| (...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 201 virtual void bindContentsTexture() { } | 216 virtual void bindContentsTexture() { } |
| 202 | 217 |
| 203 void setDebugName(const std::string&); | 218 void setDebugName(const std::string&); |
| 204 | 219 |
| 205 virtual void pushPropertiesTo(LayerImpl*); | 220 virtual void pushPropertiesTo(LayerImpl*); |
| 206 | 221 |
| 207 void clearRenderSurface() { m_renderSurface.reset(); } | 222 void clearRenderSurface() { m_renderSurface.reset(); } |
| 208 RenderSurface* renderSurface() const { return m_renderSurface.get(); } | 223 RenderSurface* renderSurface() const { return m_renderSurface.get(); } |
| 209 void createRenderSurface(); | 224 void createRenderSurface(); |
| 210 | 225 |
| 211 float drawOpacity() const { return m_drawOpacity; } | |
| 212 void setDrawOpacity(float opacity) { m_drawOpacity = opacity; } | |
| 213 | |
| 214 bool drawOpacityIsAnimating() const { return m_drawOpacityIsAnimating; } | |
| 215 void setDrawOpacityIsAnimating(bool drawOpacityIsAnimating) { m_drawOpacityI sAnimating = drawOpacityIsAnimating; } | |
| 216 | |
| 217 void setRenderTarget(Layer* target) { m_renderTarget = target; } | |
| 218 Layer* renderTarget() { DCHECK(!m_renderTarget || m_renderTarget->renderSurf ace()); return m_renderTarget; } | |
| 219 const Layer* renderTarget() const { DCHECK(!m_renderTarget || m_renderTarget ->renderSurface()); return m_renderTarget; } | |
| 220 | |
| 221 bool drawTransformIsAnimating() const { return m_drawTransformIsAnimating; } | |
| 222 void setDrawTransformIsAnimating(bool animating) { m_drawTransformIsAnimatin g = animating; } | |
| 223 bool screenSpaceTransformIsAnimating() const { return m_screenSpaceTransform IsAnimating; } | |
| 224 void setScreenSpaceTransformIsAnimating(bool animating) { m_screenSpaceTrans formIsAnimating = animating; } | |
| 225 | |
| 226 // This moves from layer space, with origin in the center to target space wi th origin in the top left. | |
| 227 // That is, it converts from logical, non-page-scaled, to target pixels (and if the target is the | |
| 228 // root render surface, then this converts to physical pixels). | |
| 229 const gfx::Transform& drawTransform() const { return m_drawTransform; } | |
| 230 void setDrawTransform(const gfx::Transform& matrix) { m_drawTransform = matr ix; } | |
| 231 // This moves from content space, with origin the top left to screen space w ith origin in the top left. | |
| 232 // It converts logical, non-page-scaled pixels to physical pixels. | |
| 233 const gfx::Transform& screenSpaceTransform() const { return m_screenSpaceTra nsform; } | |
| 234 void setScreenSpaceTransform(const gfx::Transform& matrix) { m_screenSpaceTr ansform = matrix; } | |
| 235 | |
| 236 bool isClipped() const { return m_isClipped; } | |
| 237 void setIsClipped(bool isClipped) { m_isClipped = isClipped; } | |
| 238 | |
| 239 const gfx::Rect& clipRect() const { return m_clipRect; } | |
| 240 void setClipRect(const gfx::Rect& clipRect) { m_clipRect = clipRect; } | |
| 241 | |
| 242 const gfx::Rect& drawableContentRect() const { return m_drawableContentRect; } | |
| 243 void setDrawableContentRect(const gfx::Rect& rect) { m_drawableContentRect = rect; } | |
| 244 | |
| 245 // The contentsScale converts from logical, non-page-scaled pixels to target pixels. | 226 // The contentsScale converts from logical, non-page-scaled pixels to target pixels. |
| 246 // The contentsScale is 1 for the root layer as it is already in physical pi xels. | 227 // The contentsScale is 1 for the root layer as it is already in physical pi xels. |
| 247 // By default contentsScale is forced to be 1 except for subclasses of Conte ntsScalingLayer. | 228 // By default contentsScale is forced to be 1 except for subclasses of Conte ntsScalingLayer. |
| 248 virtual float contentsScaleX() const; | 229 virtual float contentsScaleX() const; |
| 249 virtual float contentsScaleY() const; | 230 virtual float contentsScaleY() const; |
| 250 virtual void setContentsScale(float contentsScale) { } | 231 virtual void setContentsScale(float contentsScale) { } |
|
danakj
2012/12/03 18:54:36
setContentsScale is called from calcDrawEtc on the
shawnsingh
2012/12/03 19:27:44
Been meaning to discuss this with you offline =)
enne (OOO)
2012/12/03 21:18:14
Given that contentsScale isn't stored on Layer in
danakj
2012/12/03 21:29:45
Oh, good point! Putting it in the struct is a bit
| |
| 251 | 232 |
| 252 // The scale at which contents should be rastered, to match the scale at | 233 // The scale at which contents should be rastered, to match the scale at |
| 253 // which they will drawn to the screen. This scale is a component of the | 234 // which they will drawn to the screen. This scale is a component of the |
| 254 // contentsScale() but does not include page/device scale factors. | 235 // contentsScale() but does not include page/device scale factors. |
| 255 float rasterScale() const { return m_rasterScale; } | 236 float rasterScale() const { return m_rasterScale; } |
| 256 void setRasterScale(float scale); | 237 void setRasterScale(float scale); |
| 257 | 238 |
| 258 // When true, the rasterScale() will be set by the compositor. If false, it | 239 // When true, the rasterScale() will be set by the compositor. If false, it |
| 259 // will use whatever value is given to it by the embedder. | 240 // will use whatever value is given to it by the embedder. |
| 260 bool automaticallyComputeRasterScale() { return m_automaticallyComputeRaster Scale; } | 241 bool automaticallyComputeRasterScale() { return m_automaticallyComputeRaster Scale; } |
| (...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 349 // Layer instances have a weak pointer to their LayerTreeHost. | 330 // Layer instances have a weak pointer to their LayerTreeHost. |
| 350 // This pointer value is nil when a Layer is not in a tree and is | 331 // This pointer value is nil when a Layer is not in a tree and is |
| 351 // updated via setLayerTreeHost() if a layer moves between trees. | 332 // updated via setLayerTreeHost() if a layer moves between trees. |
| 352 LayerTreeHost* m_layerTreeHost; | 333 LayerTreeHost* m_layerTreeHost; |
| 353 | 334 |
| 354 scoped_ptr<LayerAnimationController> m_layerAnimationController; | 335 scoped_ptr<LayerAnimationController> m_layerAnimationController; |
| 355 | 336 |
| 356 // Layer properties. | 337 // Layer properties. |
| 357 gfx::Size m_bounds; | 338 gfx::Size m_bounds; |
| 358 | 339 |
| 359 // Uses layer's content space. | |
| 360 gfx::Rect m_visibleContentRect; | |
| 361 | |
| 362 gfx::Vector2d m_scrollOffset; | 340 gfx::Vector2d m_scrollOffset; |
| 363 gfx::Vector2d m_maxScrollOffset; | 341 gfx::Vector2d m_maxScrollOffset; |
| 364 bool m_scrollable; | 342 bool m_scrollable; |
| 365 bool m_shouldScrollOnMainThread; | 343 bool m_shouldScrollOnMainThread; |
| 366 bool m_haveWheelEventHandlers; | 344 bool m_haveWheelEventHandlers; |
| 367 Region m_nonFastScrollableRegion; | 345 Region m_nonFastScrollableRegion; |
| 368 bool m_nonFastScrollableRegionChanged; | 346 bool m_nonFastScrollableRegionChanged; |
| 369 Region m_touchEventHandlerRegion; | 347 Region m_touchEventHandlerRegion; |
| 370 bool m_touchEventHandlerRegionChanged; | 348 bool m_touchEventHandlerRegionChanged; |
| 371 gfx::PointF m_position; | 349 gfx::PointF m_position; |
| (...skipping 17 matching lines...) Expand all Loading... | |
| 389 bool m_drawCheckerboardForMissingTiles; | 367 bool m_drawCheckerboardForMissingTiles; |
| 390 bool m_forceRenderSurface; | 368 bool m_forceRenderSurface; |
| 391 | 369 |
| 392 gfx::Transform m_transform; | 370 gfx::Transform m_transform; |
| 393 gfx::Transform m_sublayerTransform; | 371 gfx::Transform m_sublayerTransform; |
| 394 | 372 |
| 395 // Replica layer used for reflections. | 373 // Replica layer used for reflections. |
| 396 scoped_refptr<Layer> m_replicaLayer; | 374 scoped_refptr<Layer> m_replicaLayer; |
| 397 | 375 |
| 398 // Transient properties. | 376 // Transient properties. |
| 399 scoped_ptr<RenderSurface> m_renderSurface; | 377 scoped_ptr<RenderSurface> m_renderSurface; |
|
danakj
2012/12/03 18:54:36
render surface is created/assigned in calcDraw. Sh
shawnsingh
2012/12/03 19:27:44
Agreed, I'll move it over
| |
| 400 float m_drawOpacity; | |
| 401 bool m_drawOpacityIsAnimating; | |
| 402 | |
| 403 Layer* m_renderTarget; | |
| 404 | |
| 405 gfx::Transform m_drawTransform; | |
| 406 gfx::Transform m_screenSpaceTransform; | |
| 407 bool m_drawTransformIsAnimating; | |
| 408 bool m_screenSpaceTransformIsAnimating; | |
| 409 | |
| 410 // Uses target surface space. | |
| 411 gfx::Rect m_drawableContentRect; | |
| 412 gfx::Rect m_clipRect; | |
| 413 | |
| 414 // True if the layer is clipped by m_clipRect | |
| 415 bool m_isClipped; | |
| 416 | 378 |
| 417 float m_rasterScale; | 379 float m_rasterScale; |
| 418 bool m_automaticallyComputeRasterScale; | 380 bool m_automaticallyComputeRasterScale; |
| 419 bool m_boundsContainPageScale; | 381 bool m_boundsContainPageScale; |
| 420 | 382 |
| 421 gfx::Transform m_implTransform; | 383 gfx::Transform m_implTransform; |
| 422 | 384 |
| 423 WebKit::WebAnimationDelegate* m_layerAnimationDelegate; | 385 WebKit::WebAnimationDelegate* m_layerAnimationDelegate; |
| 424 WebKit::WebLayerScrollClient* m_layerScrollClient; | 386 WebKit::WebLayerScrollClient* m_layerScrollClient; |
| 387 | |
| 388 DrawProperties<Layer> m_drawProperties; | |
| 425 }; | 389 }; |
| 426 | 390 |
| 427 void sortLayers(std::vector<scoped_refptr<Layer> >::iterator, std::vector<scoped _refptr<Layer> >::iterator, void*); | 391 void sortLayers(std::vector<scoped_refptr<Layer> >::iterator, std::vector<scoped _refptr<Layer> >::iterator, void*); |
| 428 | 392 |
| 429 } // namespace cc | 393 } // namespace cc |
| 430 | 394 |
| 431 #endif // CC_LAYER_H_ | 395 #endif // CC_LAYER_H_ |
| OLD | NEW |