// Copyright 2010 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef RenderSurfaceChromium_h #define RenderSurfaceChromium_h #if USE(ACCELERATED_COMPOSITING) #include "FloatRect.h" #include "IntRect.h" #include #include namespace cc { class LayerChromium; class RenderSurfaceChromium { WTF_MAKE_NONCOPYABLE(RenderSurfaceChromium); public: explicit RenderSurfaceChromium(LayerChromium*); ~RenderSurfaceChromium(); // Returns the rect that encloses the RenderSurface including any reflection. FloatRect drawableContentRect() const; const IntRect& contentRect() const { return m_contentRect; } void setContentRect(const IntRect& contentRect) { m_contentRect = contentRect; } float drawOpacity() const { return m_drawOpacity; } void setDrawOpacity(float drawOpacity) { m_drawOpacity = drawOpacity; } bool drawOpacityIsAnimating() const { return m_drawOpacityIsAnimating; } void setDrawOpacityIsAnimating(bool drawOpacityIsAnimating) { m_drawOpacityIsAnimating = drawOpacityIsAnimating; } // This goes from content space with the origin in the center of the rect being transformed to the target space with the origin in the top left of the // rect being transformed. Position the rect so that the origin is in the center of it before applying this transform. const WebKit::WebTransformationMatrix& drawTransform() const { return m_drawTransform; } void setDrawTransform(const WebKit::WebTransformationMatrix& drawTransform) { m_drawTransform = drawTransform; } const WebKit::WebTransformationMatrix& screenSpaceTransform() const { return m_screenSpaceTransform; } void setScreenSpaceTransform(const WebKit::WebTransformationMatrix& screenSpaceTransform) { m_screenSpaceTransform = screenSpaceTransform; } const WebKit::WebTransformationMatrix& replicaDrawTransform() const { return m_replicaDrawTransform; } void setReplicaDrawTransform(const WebKit::WebTransformationMatrix& replicaDrawTransform) { m_replicaDrawTransform = replicaDrawTransform; } const WebKit::WebTransformationMatrix& replicaScreenSpaceTransform() const { return m_replicaScreenSpaceTransform; } void setReplicaScreenSpaceTransform(const WebKit::WebTransformationMatrix& replicaScreenSpaceTransform) { m_replicaScreenSpaceTransform = replicaScreenSpaceTransform; } bool targetSurfaceTransformsAreAnimating() const { return m_targetSurfaceTransformsAreAnimating; } void setTargetSurfaceTransformsAreAnimating(bool animating) { m_targetSurfaceTransformsAreAnimating = animating; } bool screenSpaceTransformsAreAnimating() const { return m_screenSpaceTransformsAreAnimating; } void setScreenSpaceTransformsAreAnimating(bool animating) { m_screenSpaceTransformsAreAnimating = animating; } const IntRect& clipRect() const { return m_clipRect; } void setClipRect(const IntRect& clipRect) { m_clipRect = clipRect; } void clearLayerList() { m_layerList.clear(); } Vector >& layerList() { return m_layerList; } void setNearestAncestorThatMovesPixels(RenderSurfaceChromium* surface) { m_nearestAncestorThatMovesPixels = surface; } const RenderSurfaceChromium* nearestAncestorThatMovesPixels() const { return m_nearestAncestorThatMovesPixels; } private: LayerChromium* m_owningLayer; // Uses this surface's space. IntRect m_contentRect; float m_drawOpacity; bool m_drawOpacityIsAnimating; WebKit::WebTransformationMatrix m_drawTransform; WebKit::WebTransformationMatrix m_screenSpaceTransform; WebKit::WebTransformationMatrix m_replicaDrawTransform; WebKit::WebTransformationMatrix m_replicaScreenSpaceTransform; bool m_targetSurfaceTransformsAreAnimating; bool m_screenSpaceTransformsAreAnimating; // Uses the space of the surface's target surface. IntRect m_clipRect; Vector > m_layerList; // The nearest ancestor target surface that will contain the contents of this surface, and that is going // to move pixels within the surface (such as with a blur). This can point to itself. RenderSurfaceChromium* m_nearestAncestorThatMovesPixels; // For CCLayerIteratorActions int m_targetRenderSurfaceLayerIndexHistory; int m_currentLayerIndexHistory; friend struct CCLayerIteratorActions; }; } #endif // USE(ACCELERATED_COMPOSITING) #endif