| Index: cc/CCLayerImpl.h
|
| diff --git a/cc/CCLayerImpl.h b/cc/CCLayerImpl.h
|
| index e34ccc86a03735ced93f7b813cb97882335725d9..2f36527df274fdac628371c9a5b2d4e93ff469a1 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"
|
|
|