Index: cc/layer.h |
diff --git a/cc/layer.h b/cc/layer.h |
index 86cc650c9a7645b19ab156a2dcaff46eb722e93b..af5df0fc97281860b1ae3639d6025d1b8262b1a9 100644 |
--- a/cc/layer.h |
+++ b/cc/layer.h |
@@ -11,6 +11,7 @@ |
#include "base/memory/ref_counted.h" |
#include "cc/cc_export.h" |
+#include "cc/draw_properties.h" |
#include "cc/layer_animation_controller.h" |
#include "cc/occlusion_tracker.h" |
#include "cc/region.h" |
@@ -128,8 +129,23 @@ public: |
void setTransform(const gfx::Transform&); |
bool transformIsAnimating() const; |
- const gfx::Rect& visibleContentRect() const { return m_visibleContentRect; } |
- void setVisibleContentRect(const gfx::Rect& visibleContentRect) { m_visibleContentRect = visibleContentRect; } |
+ DrawProperties<Layer, RenderSurface>& drawProperties() { return m_drawProperties; } |
+ const DrawProperties<Layer, RenderSurface>& drawProperties() const { return m_drawProperties; } |
+ |
+ // The following are shortcut accessors to get various information from m_drawProperties |
+ const gfx::Transform& drawTransform() const { return m_drawProperties.target_space_transform; } |
+ const gfx::Transform& screenSpaceTransform() const { return m_drawProperties.screen_space_transform; } |
+ float drawOpacity() const { return m_drawProperties.opacity; } |
+ bool drawOpacityIsAnimating() const { return m_drawProperties.opacity_is_animating; } |
+ bool drawTransformIsAnimating() const { return m_drawProperties.target_space_transform_is_animating; } |
+ bool screenSpaceTransformIsAnimating() const { return m_drawProperties.screen_space_transform_is_animating; } |
+ bool isClipped() const { return m_drawProperties.is_clipped; } |
+ const gfx::Rect& clipRect() const { return m_drawProperties.clip_rect; } |
+ const gfx::Rect& drawableContentRect() const { return m_drawProperties.drawable_content_rect; } |
+ const gfx::Rect& visibleContentRect() const { return m_drawProperties.visible_content_rect; } |
+ Layer* renderTarget() { DCHECK(!m_drawProperties.render_target || m_drawProperties.render_target->renderSurface()); return m_drawProperties.render_target; } |
+ const Layer* renderTarget() const { DCHECK(!m_drawProperties.render_target || m_drawProperties.render_target->renderSurface()); return m_drawProperties.render_target; } |
+ RenderSurface* renderSurface() const { return m_drawProperties.render_surface.get(); } |
void setScrollOffset(gfx::Vector2d); |
gfx::Vector2d scrollOffset() const { return m_scrollOffset; } |
@@ -204,44 +220,9 @@ public: |
virtual void pushPropertiesTo(LayerImpl*); |
- void clearRenderSurface() { m_renderSurface.reset(); } |
- RenderSurface* renderSurface() const { return m_renderSurface.get(); } |
+ void clearRenderSurface() { m_drawProperties.render_surface.reset(); } |
void createRenderSurface(); |
- float drawOpacity() const { return m_drawOpacity; } |
- void setDrawOpacity(float opacity) { m_drawOpacity = opacity; } |
- |
- bool drawOpacityIsAnimating() const { return m_drawOpacityIsAnimating; } |
- void setDrawOpacityIsAnimating(bool drawOpacityIsAnimating) { m_drawOpacityIsAnimating = drawOpacityIsAnimating; } |
- |
- void setRenderTarget(Layer* target) { m_renderTarget = target; } |
- Layer* renderTarget() { DCHECK(!m_renderTarget || m_renderTarget->renderSurface()); return m_renderTarget; } |
- const Layer* renderTarget() const { DCHECK(!m_renderTarget || m_renderTarget->renderSurface()); return m_renderTarget; } |
- |
- bool drawTransformIsAnimating() const { return m_drawTransformIsAnimating; } |
- void setDrawTransformIsAnimating(bool animating) { m_drawTransformIsAnimating = animating; } |
- bool screenSpaceTransformIsAnimating() const { return m_screenSpaceTransformIsAnimating; } |
- void setScreenSpaceTransformIsAnimating(bool animating) { m_screenSpaceTransformIsAnimating = animating; } |
- |
- // This moves from layer space, with origin in the center to target space with origin in the top left. |
- // That is, it converts from logical, non-page-scaled, to target pixels (and if the target is the |
- // root render surface, then this converts to physical pixels). |
- const gfx::Transform& drawTransform() const { return m_drawTransform; } |
- void setDrawTransform(const gfx::Transform& matrix) { m_drawTransform = matrix; } |
- // This moves from content space, with origin the top left to screen space with origin in the top left. |
- // It converts logical, non-page-scaled pixels to physical pixels. |
- const gfx::Transform& screenSpaceTransform() const { return m_screenSpaceTransform; } |
- void setScreenSpaceTransform(const gfx::Transform& matrix) { m_screenSpaceTransform = matrix; } |
- |
- bool isClipped() const { return m_isClipped; } |
- void setIsClipped(bool isClipped) { m_isClipped = isClipped; } |
- |
- const gfx::Rect& clipRect() const { return m_clipRect; } |
- void setClipRect(const gfx::Rect& clipRect) { m_clipRect = clipRect; } |
- |
- const gfx::Rect& drawableContentRect() const { return m_drawableContentRect; } |
- void setDrawableContentRect(const gfx::Rect& rect) { m_drawableContentRect = rect; } |
- |
// The contentsScale converts from logical, non-page-scaled pixels to target pixels. |
// The contentsScale is 1 for the root layer as it is already in physical pixels. |
// By default contentsScale is forced to be 1 except for subclasses of ContentsScalingLayer. |
@@ -357,9 +338,6 @@ private: |
// Layer properties. |
gfx::Size m_bounds; |
- // Uses layer's content space. |
- gfx::Rect m_visibleContentRect; |
- |
gfx::Vector2d m_scrollOffset; |
gfx::Vector2d m_maxScrollOffset; |
bool m_scrollable; |
@@ -397,24 +375,6 @@ private: |
scoped_refptr<Layer> m_replicaLayer; |
// Transient properties. |
- scoped_ptr<RenderSurface> m_renderSurface; |
- float m_drawOpacity; |
- bool m_drawOpacityIsAnimating; |
- |
- Layer* m_renderTarget; |
- |
- gfx::Transform m_drawTransform; |
- gfx::Transform m_screenSpaceTransform; |
- bool m_drawTransformIsAnimating; |
- bool m_screenSpaceTransformIsAnimating; |
- |
- // Uses target surface space. |
- gfx::Rect m_drawableContentRect; |
- gfx::Rect m_clipRect; |
- |
- // True if the layer is clipped by m_clipRect |
- bool m_isClipped; |
- |
float m_rasterScale; |
bool m_automaticallyComputeRasterScale; |
bool m_boundsContainPageScale; |
@@ -423,6 +383,8 @@ private: |
WebKit::WebAnimationDelegate* m_layerAnimationDelegate; |
WebKit::WebLayerScrollClient* m_layerScrollClient; |
+ |
+ DrawProperties<Layer, RenderSurface> m_drawProperties; |
}; |
void sortLayers(std::vector<scoped_refptr<Layer> >::iterator, std::vector<scoped_refptr<Layer> >::iterator, void*); |