Index: cc/LayerChromium.h |
diff --git a/cc/LayerChromium.h b/cc/LayerChromium.h |
index a87caa0ca370dec51668a55af8c4690855328e9d..ea56428ac7f52415c5460abeeaf9322745bc16cd 100644 |
--- a/cc/LayerChromium.h |
+++ b/cc/LayerChromium.h |
@@ -1,390 +1,6 @@ |
-// Copyright 2010 The Chromium Authors. All rights reserved. |
+// Copyright 2012 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 LayerChromium_h |
-#define LayerChromium_h |
- |
-#if USE(ACCELERATED_COMPOSITING) |
- |
-#include "base/memory/ref_counted.h" |
-#include "CCLayerAnimationController.h" |
-#include "CCOcclusionTracker.h" |
-#include "FloatPoint.h" |
-#include "Region.h" |
-#include "RenderSurfaceChromium.h" |
-#include "SkColor.h" |
-#include <public/WebFilterOperations.h> |
-#include <public/WebTransformationMatrix.h> |
-#include <string> |
-#include <vector> |
- |
-namespace WebKit { |
-class WebAnimationDelegate; |
-class WebLayerScrollClient; |
-} |
- |
-namespace cc { |
- |
-class CCActiveAnimation; |
-struct CCAnimationEvent; |
-class CCLayerAnimationDelegate; |
-class CCLayerImpl; |
-class CCLayerTreeHost; |
-class CCPriorityCalculator; |
-class CCTextureUpdateQueue; |
-class ScrollbarLayerChromium; |
-struct CCAnimationEvent; |
-struct CCRenderingStats; |
- |
-// Base class for composited layers. Special layer types are derived from |
-// this class. |
-class LayerChromium : public base::RefCounted<LayerChromium>, public CCLayerAnimationControllerClient { |
-public: |
- typedef std::vector<scoped_refptr<LayerChromium> > LayerList; |
- |
- static scoped_refptr<LayerChromium> create(); |
- |
- // CCLayerAnimationControllerClient implementation |
- virtual int id() const OVERRIDE; |
- virtual void setOpacityFromAnimation(float) OVERRIDE; |
- virtual float opacity() const OVERRIDE; |
- virtual void setTransformFromAnimation(const WebKit::WebTransformationMatrix&) OVERRIDE; |
- // A layer's transform operates layer space. That is, entirely in logical, |
- // non-page-scaled pixels (that is, they have page zoom baked in, but not page scale). |
- // The root layer is a special case -- it operates in physical pixels. |
- virtual const WebKit::WebTransformationMatrix& transform() const OVERRIDE; |
- |
- LayerChromium* rootLayer(); |
- LayerChromium* parent() const; |
- void addChild(scoped_refptr<LayerChromium>); |
- void insertChild(scoped_refptr<LayerChromium>, size_t index); |
- void replaceChild(LayerChromium* reference, scoped_refptr<LayerChromium> newLayer); |
- void removeFromParent(); |
- void removeAllChildren(); |
- void setChildren(const LayerList&); |
- |
- const LayerList& children() const { return m_children; } |
- |
- void setAnchorPoint(const FloatPoint&); |
- FloatPoint anchorPoint() const { return m_anchorPoint; } |
- |
- void setAnchorPointZ(float); |
- float anchorPointZ() const { return m_anchorPointZ; } |
- |
- void setBackgroundColor(SkColor); |
- SkColor backgroundColor() const { return m_backgroundColor; } |
- |
- // A layer's bounds are in logical, non-page-scaled pixels (however, the |
- // root layer's bounds are in physical pixels). |
- void setBounds(const IntSize&); |
- const IntSize& bounds() const { return m_bounds; } |
- virtual IntSize contentBounds() const; |
- |
- void setMasksToBounds(bool); |
- bool masksToBounds() const { return m_masksToBounds; } |
- |
- void setMaskLayer(LayerChromium*); |
- LayerChromium* maskLayer() const { return m_maskLayer.get(); } |
- |
- virtual void setNeedsDisplayRect(const FloatRect& dirtyRect); |
- void setNeedsDisplay() { setNeedsDisplayRect(FloatRect(FloatPoint(), bounds())); } |
- virtual bool needsDisplay() const; |
- |
- void setOpacity(float); |
- bool opacityIsAnimating() const; |
- |
- void setFilters(const WebKit::WebFilterOperations&); |
- const WebKit::WebFilterOperations& filters() const { return m_filters; } |
- |
- // Background filters are filters applied to what is behind this layer, when they are viewed through non-opaque |
- // regions in this layer. They are used through the WebLayer interface, and are not exposed to HTML. |
- void setBackgroundFilters(const WebKit::WebFilterOperations&); |
- const WebKit::WebFilterOperations& backgroundFilters() const { return m_backgroundFilters; } |
- |
- virtual void setContentsOpaque(bool); |
- bool contentsOpaque() const { return m_contentsOpaque; } |
- |
- void setPosition(const FloatPoint&); |
- FloatPoint position() const { return m_position; } |
- |
- void setIsContainerForFixedPositionLayers(bool); |
- bool isContainerForFixedPositionLayers() const { return m_isContainerForFixedPositionLayers; } |
- |
- void setFixedToContainerLayer(bool); |
- bool fixedToContainerLayer() const { return m_fixedToContainerLayer; } |
- |
- void setSublayerTransform(const WebKit::WebTransformationMatrix&); |
- const WebKit::WebTransformationMatrix& sublayerTransform() const { return m_sublayerTransform; } |
- |
- void setTransform(const WebKit::WebTransformationMatrix&); |
- bool transformIsAnimating() const; |
- |
- const IntRect& visibleContentRect() const { return m_visibleContentRect; } |
- void setVisibleContentRect(const IntRect& visibleContentRect) { m_visibleContentRect = visibleContentRect; } |
- |
- void setScrollPosition(const IntPoint&); |
- const IntPoint& scrollPosition() const { return m_scrollPosition; } |
- |
- void setMaxScrollPosition(const IntSize&); |
- const IntSize& maxScrollPosition() const { return m_maxScrollPosition; } |
- |
- void setScrollable(bool); |
- bool scrollable() const { return m_scrollable; } |
- |
- void setShouldScrollOnMainThread(bool); |
- bool shouldScrollOnMainThread() const { return m_shouldScrollOnMainThread; } |
- |
- void setHaveWheelEventHandlers(bool); |
- bool haveWheelEventHandlers() const { return m_haveWheelEventHandlers; } |
- |
- void setNonFastScrollableRegion(const Region&); |
- void setNonFastScrollableRegionChanged() { m_nonFastScrollableRegionChanged = true; } |
- const Region& nonFastScrollableRegion() const { return m_nonFastScrollableRegion; } |
- |
- void setLayerScrollClient(WebKit::WebLayerScrollClient* layerScrollClient) { m_layerScrollClient = layerScrollClient; } |
- |
- void setDrawCheckerboardForMissingTiles(bool); |
- bool drawCheckerboardForMissingTiles() const { return m_drawCheckerboardForMissingTiles; } |
- |
- bool forceRenderSurface() const { return m_forceRenderSurface; } |
- void setForceRenderSurface(bool); |
- |
- IntSize scrollDelta() const { return IntSize(); } |
- |
- void setImplTransform(const WebKit::WebTransformationMatrix&); |
- const WebKit::WebTransformationMatrix& implTransform() const { return m_implTransform; } |
- |
- void setDoubleSided(bool); |
- bool doubleSided() const { return m_doubleSided; } |
- |
- void setPreserves3D(bool preserve3D) { m_preserves3D = preserve3D; } |
- bool preserves3D() const { return m_preserves3D; } |
- |
- void setUseParentBackfaceVisibility(bool useParentBackfaceVisibility) { m_useParentBackfaceVisibility = useParentBackfaceVisibility; } |
- bool useParentBackfaceVisibility() const { return m_useParentBackfaceVisibility; } |
- |
- virtual void setUseLCDText(bool); |
- bool useLCDText() const { return m_useLCDText; } |
- |
- virtual void setLayerTreeHost(CCLayerTreeHost*); |
- |
- bool hasContributingDelegatedRenderPasses() const { return false; } |
- |
- void setIsDrawable(bool); |
- |
- void setReplicaLayer(LayerChromium*); |
- LayerChromium* replicaLayer() const { return m_replicaLayer.get(); } |
- |
- bool hasMask() const { return m_maskLayer; } |
- bool hasReplica() const { return m_replicaLayer; } |
- bool replicaHasMask() const { return m_replicaLayer && (m_maskLayer || m_replicaLayer->m_maskLayer); } |
- |
- // These methods typically need to be overwritten by derived classes. |
- virtual bool drawsContent() const; |
- virtual void update(CCTextureUpdateQueue&, const CCOcclusionTracker*, CCRenderingStats&) { } |
- virtual bool needMoreUpdates(); |
- virtual void setIsMask(bool) { } |
- virtual void bindContentsTexture() { } |
- virtual bool needsContentsScale() const; |
- |
- void setDebugBorderColor(SkColor); |
- void setDebugBorderWidth(float); |
- void setDebugName(const std::string&); |
- |
- virtual void pushPropertiesTo(CCLayerImpl*); |
- |
- void clearRenderSurface() { m_renderSurface.reset(); } |
- RenderSurfaceChromium* renderSurface() const { return m_renderSurface.get(); } |
- 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; } |
- |
- LayerChromium* renderTarget() const { ASSERT(!m_renderTarget || m_renderTarget->renderSurface()); return m_renderTarget; } |
- void setRenderTarget(LayerChromium* target) { m_renderTarget = target; } |
- |
- 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 WebKit::WebTransformationMatrix& drawTransform() const { return m_drawTransform; } |
- void setDrawTransform(const WebKit::WebTransformationMatrix& 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 WebKit::WebTransformationMatrix& screenSpaceTransform() const { return m_screenSpaceTransform; } |
- void setScreenSpaceTransform(const WebKit::WebTransformationMatrix& matrix) { m_screenSpaceTransform = matrix; } |
- const IntRect& drawableContentRect() const { return m_drawableContentRect; } |
- void setDrawableContentRect(const IntRect& 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. |
- float contentsScale() const { return m_contentsScale; } |
- void setContentsScale(float); |
- |
- // When true, the layer's contents are not scaled by the current page scale factor. |
- // setBoundsContainPageScale recursively sets the value on all child layers. |
- void setBoundsContainPageScale(bool); |
- bool boundsContainPageScale() const { return m_boundsContainPageScale; } |
- |
- // Returns true if any of the layer's descendants has content to draw. |
- bool descendantDrawsContent(); |
- |
- CCLayerTreeHost* layerTreeHost() const { return m_layerTreeHost; } |
- |
- // Set the priority of all desired textures in this layer. |
- virtual void setTexturePriorities(const CCPriorityCalculator&) { } |
- |
- bool addAnimation(scoped_ptr<CCActiveAnimation>); |
- void pauseAnimation(int animationId, double timeOffset); |
- void removeAnimation(int animationId); |
- |
- void suspendAnimations(double monotonicTime); |
- void resumeAnimations(double monotonicTime); |
- |
- CCLayerAnimationController* layerAnimationController() { return m_layerAnimationController.get(); } |
- void setLayerAnimationController(scoped_ptr<CCLayerAnimationController>); |
- scoped_ptr<CCLayerAnimationController> releaseLayerAnimationController(); |
- |
- void setLayerAnimationDelegate(WebKit::WebAnimationDelegate* layerAnimationDelegate) { m_layerAnimationDelegate = layerAnimationDelegate; } |
- |
- bool hasActiveAnimation() const; |
- |
- virtual void notifyAnimationStarted(const CCAnimationEvent&, double wallClockTime); |
- virtual void notifyAnimationFinished(double wallClockTime); |
- |
- virtual Region visibleContentOpaqueRegion() const; |
- |
- virtual ScrollbarLayerChromium* toScrollbarLayerChromium(); |
- |
-protected: |
- friend class CCLayerImpl; |
- friend class TreeSynchronizer; |
- virtual ~LayerChromium(); |
- |
- LayerChromium(); |
- |
- void setNeedsCommit(); |
- |
- IntRect layerRectToContentRect(const WebKit::WebRect& layerRect); |
- |
- // This flag is set when layer need repainting/updating. |
- bool m_needsDisplay; |
- |
- // Tracks whether this layer may have changed stacking order with its siblings. |
- bool m_stackingOrderChanged; |
- |
- // The update rect is the region of the compositor resource that was actually updated by the compositor. |
- // For layers that may do updating outside the compositor's control (i.e. plugin layers), this information |
- // is not available and the update rect will remain empty. |
- // Note this rect is in layer space (not content space). |
- FloatRect m_updateRect; |
- |
- scoped_refptr<LayerChromium> m_maskLayer; |
- |
- // Constructs a CCLayerImpl of the correct runtime type for this LayerChromium type. |
- virtual scoped_ptr<CCLayerImpl> createCCLayerImpl(); |
- int m_layerId; |
- |
-private: |
- friend class base::RefCounted<LayerChromium>; |
- |
- void setParent(LayerChromium*); |
- bool hasAncestor(LayerChromium*) const; |
- bool descendantIsFixedToContainerLayer() const; |
- |
- size_t numChildren() const { return m_children.size(); } |
- |
- // Returns the index of the child or -1 if not found. |
- int indexOfChild(const LayerChromium*); |
- |
- // This should only be called from removeFromParent. |
- void removeChild(LayerChromium*); |
- |
- LayerList m_children; |
- LayerChromium* m_parent; |
- |
- // LayerChromium instances have a weak pointer to their CCLayerTreeHost. |
- // This pointer value is nil when a LayerChromium is not in a tree and is |
- // updated via setLayerTreeHost() if a layer moves between trees. |
- CCLayerTreeHost* m_layerTreeHost; |
- |
- scoped_ptr<CCLayerAnimationController> m_layerAnimationController; |
- |
- // Layer properties. |
- IntSize m_bounds; |
- |
- // Uses layer's content space. |
- IntRect m_visibleContentRect; |
- |
- IntPoint m_scrollPosition; |
- IntSize m_maxScrollPosition; |
- bool m_scrollable; |
- bool m_shouldScrollOnMainThread; |
- bool m_haveWheelEventHandlers; |
- Region m_nonFastScrollableRegion; |
- bool m_nonFastScrollableRegionChanged; |
- FloatPoint m_position; |
- FloatPoint m_anchorPoint; |
- SkColor m_backgroundColor; |
- SkColor m_debugBorderColor; |
- float m_debugBorderWidth; |
- std::string m_debugName; |
- float m_opacity; |
- WebKit::WebFilterOperations m_filters; |
- WebKit::WebFilterOperations m_backgroundFilters; |
- float m_anchorPointZ; |
- bool m_isContainerForFixedPositionLayers; |
- bool m_fixedToContainerLayer; |
- bool m_isDrawable; |
- bool m_masksToBounds; |
- bool m_contentsOpaque; |
- bool m_doubleSided; |
- bool m_useLCDText; |
- bool m_preserves3D; |
- bool m_useParentBackfaceVisibility; |
- bool m_drawCheckerboardForMissingTiles; |
- bool m_forceRenderSurface; |
- |
- WebKit::WebTransformationMatrix m_transform; |
- WebKit::WebTransformationMatrix m_sublayerTransform; |
- |
- // Replica layer used for reflections. |
- scoped_refptr<LayerChromium> m_replicaLayer; |
- |
- // Transient properties. |
- scoped_ptr<RenderSurfaceChromium> m_renderSurface; |
- float m_drawOpacity; |
- bool m_drawOpacityIsAnimating; |
- |
- LayerChromium* m_renderTarget; |
- |
- WebKit::WebTransformationMatrix m_drawTransform; |
- WebKit::WebTransformationMatrix m_screenSpaceTransform; |
- bool m_drawTransformIsAnimating; |
- bool m_screenSpaceTransformIsAnimating; |
- |
- // Uses target surface space. |
- IntRect m_drawableContentRect; |
- float m_contentsScale; |
- bool m_boundsContainPageScale; |
- |
- WebKit::WebTransformationMatrix m_implTransform; |
- |
- WebKit::WebAnimationDelegate* m_layerAnimationDelegate; |
- WebKit::WebLayerScrollClient* m_layerScrollClient; |
-}; |
- |
-void sortLayers(std::vector<scoped_refptr<LayerChromium> >::iterator, std::vector<scoped_refptr<LayerChromium> >::iterator, void*); |
- |
-} |
-#endif // USE(ACCELERATED_COMPOSITING) |
- |
-#endif |
+// Temporary forwarding header |
+#include "cc/layer.h" |