summaryrefslogtreecommitdiffstats
path: root/cc/CCLayerImpl.h
diff options
context:
space:
mode:
Diffstat (limited to 'cc/CCLayerImpl.h')
-rw-r--r--cc/CCLayerImpl.h399
1 files changed, 3 insertions, 396 deletions
diff --git a/cc/CCLayerImpl.h b/cc/CCLayerImpl.h
index e34ccc8..2f36527 100644
--- a/cc/CCLayerImpl.h
+++ b/cc/CCLayerImpl.h
@@ -1,399 +1,6 @@
-// Copyright 2011 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 CCLayerImpl_h
-#define CCLayerImpl_h
-
-#include "base/memory/scoped_ptr.h"
-#include "cc/scoped_ptr_vector.h"
-#include "CCInputHandler.h"
-#include "CCLayerAnimationController.h"
-#include "CCRenderPass.h"
-#include "CCRenderSurface.h"
-#include "CCResourceProvider.h"
-#include "CCSharedQuadState.h"
-#include "FloatRect.h"
-#include "IntRect.h"
-#include "Region.h"
-#include "SkColor.h"
-#include <public/WebFilterOperations.h>
-#include <public/WebTransformationMatrix.h>
-#include <string>
-#include <wtf/OwnPtr.h>
-
-namespace cc {
-
-class CCLayerSorter;
-class CCLayerTreeHostImpl;
-class CCQuadSink;
-class CCRenderer;
-class CCScrollbarAnimationController;
-class CCScrollbarLayerImpl;
-class LayerChromium;
-
-struct CCAppendQuadsData;
-
-class CCLayerImpl : public CCLayerAnimationControllerClient {
-public:
- static scoped_ptr<CCLayerImpl> create(int id)
- {
- return make_scoped_ptr(new CCLayerImpl(id));
- }
-
- virtual ~CCLayerImpl();
-
- // CCLayerAnimationControllerClient implementation.
- virtual int id() const OVERRIDE;
- virtual void setOpacityFromAnimation(float) OVERRIDE;
- virtual float opacity() const OVERRIDE;
- virtual void setTransformFromAnimation(const WebKit::WebTransformationMatrix&) OVERRIDE;
- virtual const WebKit::WebTransformationMatrix& transform() const OVERRIDE;
-
- // Tree structure.
- CCLayerImpl* parent() const { return m_parent; }
- const ScopedPtrVector<CCLayerImpl>& children() const { return m_children; }
- void addChild(scoped_ptr<CCLayerImpl>);
- void removeFromParent();
- void removeAllChildren();
-
- void setMaskLayer(scoped_ptr<CCLayerImpl>);
- CCLayerImpl* maskLayer() const { return m_maskLayer.get(); }
-
- void setReplicaLayer(scoped_ptr<CCLayerImpl>);
- CCLayerImpl* 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); }
-
- CCLayerTreeHostImpl* layerTreeHostImpl() const { return m_layerTreeHostImpl; }
- void setLayerTreeHostImpl(CCLayerTreeHostImpl* hostImpl) { m_layerTreeHostImpl = hostImpl; }
-
- scoped_ptr<CCSharedQuadState> createSharedQuadState() const;
- // willDraw must be called before appendQuads. If willDraw is called,
- // didDraw is guaranteed to be called before another willDraw or before
- // the layer is destroyed. To enforce this, any class that overrides
- // willDraw/didDraw must call the base class version.
- virtual void willDraw(CCResourceProvider*);
- virtual void appendQuads(CCQuadSink&, CCAppendQuadsData&) { }
- virtual void didDraw(CCResourceProvider*);
-
- virtual CCResourceProvider::ResourceId contentsResourceId() const;
-
- virtual bool hasContributingDelegatedRenderPasses() const;
- virtual CCRenderPass::Id firstContributingRenderPassId() const;
- virtual CCRenderPass::Id nextContributingRenderPassId(CCRenderPass::Id) const;
-
- // Returns true if this layer has content to draw.
- void setDrawsContent(bool);
- bool drawsContent() const { return m_drawsContent; }
-
- bool forceRenderSurface() const { return m_forceRenderSurface; }
- void setForceRenderSurface(bool force) { m_forceRenderSurface = force; }
-
- // Returns true if any of the layer's descendants has content to draw.
- virtual bool descendantDrawsContent();
-
- void setAnchorPoint(const FloatPoint&);
- const FloatPoint& anchorPoint() const { return m_anchorPoint; }
-
- void setAnchorPointZ(float);
- float anchorPointZ() const { return m_anchorPointZ; }
-
- void setBackgroundColor(SkColor);
- SkColor backgroundColor() const { return m_backgroundColor; }
-
- void setFilters(const WebKit::WebFilterOperations&);
- const WebKit::WebFilterOperations& filters() const { return m_filters; }
-
- void setBackgroundFilters(const WebKit::WebFilterOperations&);
- const WebKit::WebFilterOperations& backgroundFilters() const { return m_backgroundFilters; }
-
- void setMasksToBounds(bool);
- bool masksToBounds() const { return m_masksToBounds; }
-
- void setContentsOpaque(bool);
- bool contentsOpaque() const { return m_contentsOpaque; }
-
- void setOpacity(float);
- bool opacityIsAnimating() const;
-
- void setPosition(const FloatPoint&);
- const FloatPoint& position() const { return m_position; }
-
- void setIsContainerForFixedPositionLayers(bool isContainerForFixedPositionLayers) { m_isContainerForFixedPositionLayers = isContainerForFixedPositionLayers; }
- bool isContainerForFixedPositionLayers() const { return m_isContainerForFixedPositionLayers; }
-
- void setFixedToContainerLayer(bool fixedToContainerLayer = true) { m_fixedToContainerLayer = fixedToContainerLayer;}
- bool fixedToContainerLayer() const { return m_fixedToContainerLayer; }
-
- void setPreserves3D(bool);
- bool preserves3D() const { return m_preserves3D; }
-
- void setUseParentBackfaceVisibility(bool useParentBackfaceVisibility) { m_useParentBackfaceVisibility = useParentBackfaceVisibility; }
- bool useParentBackfaceVisibility() const { return m_useParentBackfaceVisibility; }
-
- void setUseLCDText(bool useLCDText) { m_useLCDText = useLCDText; }
- bool useLCDText() const { return m_useLCDText; }
-
- void setSublayerTransform(const WebKit::WebTransformationMatrix&);
- const WebKit::WebTransformationMatrix& sublayerTransform() const { return m_sublayerTransform; }
-
- // Debug layer border - visual effect only, do not change geometry/clipping/etc.
- void setDebugBorderColor(SkColor);
- SkColor debugBorderColor() const { return m_debugBorderColor; }
- void setDebugBorderWidth(float);
- float debugBorderWidth() const { return m_debugBorderWidth; }
- bool hasDebugBorders() const;
-
- // Debug layer name.
- void setDebugName(const std::string& debugName) { m_debugName = debugName; }
- std::string debugName() const { return m_debugName; }
-
- CCRenderSurface* renderSurface() const { return m_renderSurface.get(); }
- void createRenderSurface();
- void clearRenderSurface() { m_renderSurface.clear(); }
-
- 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; }
-
- CCLayerImpl* renderTarget() const { ASSERT(!m_renderTarget || m_renderTarget->renderSurface()); return m_renderTarget; }
- void setRenderTarget(CCLayerImpl* target) { m_renderTarget = target; }
-
- void setBounds(const IntSize&);
- const IntSize& bounds() const { return m_bounds; }
-
- const IntSize& contentBounds() const { return m_contentBounds; }
- void setContentBounds(const IntSize&);
-
- const IntPoint& scrollPosition() const { return m_scrollPosition; }
- void setScrollPosition(const IntPoint&);
-
- const IntSize& maxScrollPosition() const {return m_maxScrollPosition; }
- void setMaxScrollPosition(const IntSize&);
-
- const FloatSize& scrollDelta() const { return m_scrollDelta; }
- void setScrollDelta(const FloatSize&);
-
- const WebKit::WebTransformationMatrix& implTransform() const { return m_implTransform; }
- void setImplTransform(const WebKit::WebTransformationMatrix& transform);
-
- const IntSize& sentScrollDelta() const { return m_sentScrollDelta; }
- void setSentScrollDelta(const IntSize& sentScrollDelta) { m_sentScrollDelta = sentScrollDelta; }
-
- // Returns the delta of the scroll that was outside of the bounds of the initial scroll
- FloatSize scrollBy(const FloatSize& scroll);
-
- bool scrollable() const { return m_scrollable; }
- void setScrollable(bool scrollable) { m_scrollable = scrollable; }
-
- bool shouldScrollOnMainThread() const { return m_shouldScrollOnMainThread; }
- void setShouldScrollOnMainThread(bool shouldScrollOnMainThread) { m_shouldScrollOnMainThread = shouldScrollOnMainThread; }
-
- bool haveWheelEventHandlers() const { return m_haveWheelEventHandlers; }
- void setHaveWheelEventHandlers(bool haveWheelEventHandlers) { m_haveWheelEventHandlers = haveWheelEventHandlers; }
-
- const Region& nonFastScrollableRegion() const { return m_nonFastScrollableRegion; }
- void setNonFastScrollableRegion(const Region& region) { m_nonFastScrollableRegion = region; }
-
- void setDrawCheckerboardForMissingTiles(bool checkerboard) { m_drawCheckerboardForMissingTiles = checkerboard; }
- bool drawCheckerboardForMissingTiles() const;
-
- CCInputHandlerClient::ScrollStatus tryScroll(const IntPoint& viewportPoint, CCInputHandlerClient::ScrollInputType) const;
-
- const IntRect& visibleContentRect() const { return m_visibleContentRect; }
- void setVisibleContentRect(const IntRect& visibleContentRect) { m_visibleContentRect = visibleContentRect; }
-
- bool doubleSided() const { return m_doubleSided; }
- void setDoubleSided(bool);
-
- void setTransform(const WebKit::WebTransformationMatrix&);
- bool transformIsAnimating() const;
-
- const WebKit::WebTransformationMatrix& drawTransform() const { return m_drawTransform; }
- void setDrawTransform(const WebKit::WebTransformationMatrix& matrix) { m_drawTransform = matrix; }
- const WebKit::WebTransformationMatrix& screenSpaceTransform() const { return m_screenSpaceTransform; }
- void setScreenSpaceTransform(const WebKit::WebTransformationMatrix& matrix) { m_screenSpaceTransform = matrix; }
-
- 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; }
-
- const IntRect& drawableContentRect() const { return m_drawableContentRect; }
- void setDrawableContentRect(const IntRect& rect) { m_drawableContentRect = rect; }
- const FloatRect& updateRect() const { return m_updateRect; }
- void setUpdateRect(const FloatRect& updateRect) { m_updateRect = updateRect; }
-
- std::string layerTreeAsText() const;
-
- void setStackingOrderChanged(bool);
-
- bool layerPropertyChanged() const { return m_layerPropertyChanged || layerIsAlwaysDamaged(); }
- bool layerSurfacePropertyChanged() const;
-
- void resetAllChangeTrackingForSubtree();
-
- virtual bool layerIsAlwaysDamaged() const;
-
- CCLayerAnimationController* layerAnimationController() { return m_layerAnimationController.get(); }
-
- virtual Region visibleContentOpaqueRegion() const;
-
- // Indicates that the context previously used to render this layer
- // was lost and that a new one has been created. Won't be called
- // until the new context has been created successfully.
- virtual void didLoseContext();
-
- CCScrollbarAnimationController* scrollbarAnimationController() const { return m_scrollbarAnimationController.get(); }
-
- CCScrollbarLayerImpl* horizontalScrollbarLayer() const;
- void setHorizontalScrollbarLayer(CCScrollbarLayerImpl*);
-
- CCScrollbarLayerImpl* verticalScrollbarLayer() const;
- void setVerticalScrollbarLayer(CCScrollbarLayerImpl*);
-
-protected:
- explicit CCLayerImpl(int);
-
- void appendDebugBorderQuad(CCQuadSink&, const CCSharedQuadState*, CCAppendQuadsData&) const;
-
- IntRect layerRectToContentRect(const WebKit::WebRect& layerRect);
-
- virtual void dumpLayerProperties(std::string*, int indent) const;
- static std::string indentString(int indent);
-
-private:
- void setParent(CCLayerImpl* parent) { m_parent = parent; }
- friend class TreeSynchronizer;
- void clearChildList(); // Warning: This does not preserve tree structure invariants and so is only exposed to the tree synchronizer.
-
- void noteLayerPropertyChangedForSubtree();
-
- // Note carefully this does not affect the current layer.
- void noteLayerPropertyChangedForDescendants();
-
- virtual const char* layerTypeAsString() const;
-
- void dumpLayer(std::string*, int indent) const;
-
- // Properties internal to CCLayerImpl
- CCLayerImpl* m_parent;
- ScopedPtrVector<CCLayerImpl> m_children;
- // m_maskLayer can be temporarily stolen during tree sync, we need this ID to confirm newly assigned layer is still the previous one
- int m_maskLayerId;
- scoped_ptr<CCLayerImpl> m_maskLayer;
- int m_replicaLayerId; // ditto
- scoped_ptr<CCLayerImpl> m_replicaLayer;
- int m_layerId;
- CCLayerTreeHostImpl* m_layerTreeHostImpl;
-
- // Properties synchronized from the associated LayerChromium.
- FloatPoint m_anchorPoint;
- float m_anchorPointZ;
- IntSize m_bounds;
- IntSize m_contentBounds;
- IntPoint m_scrollPosition;
- bool m_scrollable;
- bool m_shouldScrollOnMainThread;
- bool m_haveWheelEventHandlers;
- Region m_nonFastScrollableRegion;
- SkColor m_backgroundColor;
-
- // Whether the "back" of this layer should draw.
- bool m_doubleSided;
-
- // Tracks if drawing-related properties have changed since last redraw.
- bool m_layerPropertyChanged;
-
- // Indicates that a property has changed on this layer that would not
- // affect the pixels on its target surface, but would require redrawing
- // but would require redrawing the targetSurface onto its ancestor targetSurface.
- // For layers that do not own a surface this flag acts as m_layerPropertyChanged.
- bool m_layerSurfacePropertyChanged;
-
- // Uses layer's content space.
- IntRect m_visibleContentRect;
- bool m_masksToBounds;
- bool m_contentsOpaque;
- float m_opacity;
- FloatPoint m_position;
- bool m_preserves3D;
- bool m_useParentBackfaceVisibility;
- bool m_drawCheckerboardForMissingTiles;
- WebKit::WebTransformationMatrix m_sublayerTransform;
- WebKit::WebTransformationMatrix m_transform;
- bool m_useLCDText;
-
- bool m_drawsContent;
- bool m_forceRenderSurface;
-
- // Set for the layer that other layers are fixed to.
- bool m_isContainerForFixedPositionLayers;
- // This is true if the layer should be fixed to the closest ancestor container.
- bool m_fixedToContainerLayer;
-
- FloatSize m_scrollDelta;
- IntSize m_sentScrollDelta;
- IntSize m_maxScrollPosition;
- WebKit::WebTransformationMatrix m_implTransform;
-
- // The layer whose coordinate space this layer draws into. This can be
- // either the same layer (m_renderTarget == this) or an ancestor of this
- // layer.
- CCLayerImpl* m_renderTarget;
-
- // The global depth value of the center of the layer. This value is used
- // to sort layers from back to front.
- float m_drawDepth;
- float m_drawOpacity;
- bool m_drawOpacityIsAnimating;
-
- // Debug borders.
- SkColor m_debugBorderColor;
- float m_debugBorderWidth;
-
- // Debug layer name.
- std::string m_debugName;
-
- WebKit::WebFilterOperations m_filters;
- WebKit::WebFilterOperations m_backgroundFilters;
-
- WebKit::WebTransformationMatrix m_drawTransform;
- WebKit::WebTransformationMatrix m_screenSpaceTransform;
- bool m_drawTransformIsAnimating;
- bool m_screenSpaceTransformIsAnimating;
-
-#ifndef NDEBUG
- bool m_betweenWillDrawAndDidDraw;
-#endif
-
- // Render surface associated with this layer. The layer and its descendants
- // will render to this surface.
- OwnPtr<CCRenderSurface> m_renderSurface;
-
- // Hierarchical bounding rect containing the layer and its descendants.
- // Uses target surface's space.
- IntRect m_drawableContentRect;
-
- // Rect indicating what was repainted/updated during update.
- // Note that plugin layers bypass this and leave it empty.
- // Uses layer's content space.
- FloatRect m_updateRect;
-
- // Manages animations for this layer.
- scoped_ptr<CCLayerAnimationController> m_layerAnimationController;
-
- // Manages scrollbars for this layer
- OwnPtr<CCScrollbarAnimationController> m_scrollbarAnimationController;
-};
-
-void sortLayers(std::vector<CCLayerImpl*>::iterator first, std::vector<CCLayerImpl*>::iterator end, CCLayerSorter*);
-
-}
-
-#endif // CCLayerImpl_h
+// Temporary forwarding header
+#include "cc/layer_impl.h"