| Index: Source/core/platform/graphics/GraphicsLayer.h
|
| diff --git a/Source/core/platform/graphics/GraphicsLayer.h b/Source/core/platform/graphics/GraphicsLayer.h
|
| deleted file mode 100644
|
| index 38569e41c9df67c8ad3334897b30e5100f9f54fa..0000000000000000000000000000000000000000
|
| --- a/Source/core/platform/graphics/GraphicsLayer.h
|
| +++ /dev/null
|
| @@ -1,419 +0,0 @@
|
| -/*
|
| - * Copyright (C) 2009 Apple Inc. All rights reserved.
|
| - * Copyright (C) 2013 Intel Corporation. All rights reserved.
|
| - *
|
| - * Redistribution and use in source and binary forms, with or without
|
| - * modification, are permitted provided that the following conditions
|
| - * are met:
|
| - * 1. Redistributions of source code must retain the above copyright
|
| - * notice, this list of conditions and the following disclaimer.
|
| - * 2. Redistributions in binary form must reproduce the above copyright
|
| - * notice, this list of conditions and the following disclaimer in the
|
| - * documentation and/or other materials provided with the distribution.
|
| - *
|
| - * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
|
| - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
| - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
| - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR
|
| - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
| - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
| - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
| - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
|
| - * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
| - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
| - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
| - */
|
| -
|
| -#ifndef GraphicsLayer_h
|
| -#define GraphicsLayer_h
|
| -
|
| -#include "core/platform/graphics/GraphicsLayerClient.h"
|
| -#include "core/platform/graphics/OpaqueRectTrackingContentLayerDelegate.h"
|
| -#include "core/platform/graphics/filters/FilterOperations.h"
|
| -#include "platform/geometry/FloatPoint.h"
|
| -#include "platform/geometry/FloatPoint3D.h"
|
| -#include "platform/geometry/FloatSize.h"
|
| -#include "platform/geometry/IntRect.h"
|
| -#include "platform/graphics/Color.h"
|
| -#include "platform/transforms/TransformationMatrix.h"
|
| -#include "wtf/OwnPtr.h"
|
| -#include "wtf/PassOwnPtr.h"
|
| -#include "wtf/Vector.h"
|
| -
|
| -#include "public/platform/WebAnimationDelegate.h"
|
| -#include "public/platform/WebCompositingReasons.h"
|
| -#include "public/platform/WebContentLayer.h"
|
| -#include "public/platform/WebImageLayer.h"
|
| -#include "public/platform/WebLayerClient.h"
|
| -#include "public/platform/WebLayerScrollClient.h"
|
| -#include "public/platform/WebNinePatchLayer.h"
|
| -#include "public/platform/WebSolidColorLayer.h"
|
| -
|
| -namespace blink {
|
| -class GraphicsLayerFactoryChromium;
|
| -class WebAnimation;
|
| -class WebGraphicsLayerDebugInfo;
|
| -class WebLayer;
|
| -}
|
| -
|
| -namespace WebCore {
|
| -
|
| -class FloatRect;
|
| -class GraphicsContext;
|
| -class GraphicsLayerFactory;
|
| -class Image;
|
| -class ScrollableArea;
|
| -class TextStream;
|
| -
|
| -// FIXME: find a better home for this declaration.
|
| -class LinkHighlightClient {
|
| -public:
|
| - virtual void invalidate() = 0;
|
| - virtual void clearCurrentGraphicsLayer() = 0;
|
| - virtual blink::WebLayer* layer() = 0;
|
| -
|
| -protected:
|
| - virtual ~LinkHighlightClient() { }
|
| -};
|
| -
|
| -// GraphicsLayer is an abstraction for a rendering surface with backing store,
|
| -// which may have associated transformation and animations.
|
| -
|
| -class GraphicsLayer : public GraphicsContextPainter, public blink::WebAnimationDelegate, public blink::WebLayerScrollClient, public blink::WebLayerClient {
|
| - WTF_MAKE_NONCOPYABLE(GraphicsLayer); WTF_MAKE_FAST_ALLOCATED;
|
| -public:
|
| - static PassOwnPtr<GraphicsLayer> create(GraphicsLayerFactory*, GraphicsLayerClient*);
|
| -
|
| - virtual ~GraphicsLayer();
|
| -
|
| - GraphicsLayerClient* client() const { return m_client; }
|
| -
|
| - // blink::WebLayerClient implementation.
|
| - virtual blink::WebString debugName(blink::WebLayer*) OVERRIDE;
|
| - virtual blink::WebGraphicsLayerDebugInfo* takeDebugInfo() OVERRIDE;
|
| -
|
| - void setCompositingReasons(blink::WebCompositingReasons);
|
| - blink::WebCompositingReasons compositingReasons() const { return m_compositingReasons; }
|
| -
|
| - GraphicsLayer* parent() const { return m_parent; };
|
| - void setParent(GraphicsLayer*); // Internal use only.
|
| -
|
| - // Returns true if the layer has the given layer as an ancestor (excluding self).
|
| - bool hasAncestor(GraphicsLayer*) const;
|
| -
|
| - const Vector<GraphicsLayer*>& children() const { return m_children; }
|
| - // Returns true if the child list changed.
|
| - bool setChildren(const Vector<GraphicsLayer*>&);
|
| -
|
| - // Add child layers. If the child is already parented, it will be removed from its old parent.
|
| - void addChild(GraphicsLayer*);
|
| - void addChildAtIndex(GraphicsLayer*, int index);
|
| - void addChildAbove(GraphicsLayer*, GraphicsLayer* sibling);
|
| - void addChildBelow(GraphicsLayer*, GraphicsLayer* sibling);
|
| - bool replaceChild(GraphicsLayer* oldChild, GraphicsLayer* newChild);
|
| -
|
| - void removeAllChildren();
|
| - void removeFromParent();
|
| -
|
| - GraphicsLayer* maskLayer() const { return m_maskLayer; }
|
| - void setMaskLayer(GraphicsLayer*);
|
| -
|
| - GraphicsLayer* contentsClippingMaskLayer() const { return m_contentsClippingMaskLayer; }
|
| - void setContentsClippingMaskLayer(GraphicsLayer*);
|
| -
|
| - // The given layer will replicate this layer and its children; the replica renders behind this layer.
|
| - void setReplicatedByLayer(GraphicsLayer*);
|
| - // Whether this layer is being replicated by another layer.
|
| - bool isReplicated() const { return m_replicaLayer; }
|
| - // The layer that replicates this layer (if any).
|
| - GraphicsLayer* replicaLayer() const { return m_replicaLayer; }
|
| - // The layer being replicated.
|
| - GraphicsLayer* replicatedLayer() const { return m_replicatedLayer; }
|
| -
|
| - const FloatPoint& replicatedLayerPosition() const { return m_replicatedLayerPosition; }
|
| - void setReplicatedLayerPosition(const FloatPoint& p) { m_replicatedLayerPosition = p; }
|
| -
|
| - enum ShouldSetNeedsDisplay {
|
| - DontSetNeedsDisplay,
|
| - SetNeedsDisplay
|
| - };
|
| -
|
| - // Offset is origin of the renderer minus origin of the graphics layer (so either zero or negative).
|
| - IntSize offsetFromRenderer() const { return m_offsetFromRenderer; }
|
| - void setOffsetFromRenderer(const IntSize&, ShouldSetNeedsDisplay = SetNeedsDisplay);
|
| -
|
| - // The position of the layer (the location of its top-left corner in its parent)
|
| - const FloatPoint& position() const { return m_position; }
|
| - void setPosition(const FloatPoint&);
|
| -
|
| - // Anchor point: (0, 0) is top left, (1, 1) is bottom right. The anchor point
|
| - // affects the origin of the transforms.
|
| - const FloatPoint3D& anchorPoint() const { return m_anchorPoint; }
|
| - void setAnchorPoint(const FloatPoint3D&);
|
| -
|
| - // The size of the layer.
|
| - const FloatSize& size() const { return m_size; }
|
| - void setSize(const FloatSize&);
|
| -
|
| - // The boundOrigin affects the offset at which content is rendered, and sublayers are positioned.
|
| - const FloatPoint& boundsOrigin() const { return m_boundsOrigin; }
|
| - void setBoundsOrigin(const FloatPoint& origin) { m_boundsOrigin = origin; }
|
| -
|
| - const TransformationMatrix& transform() const { return m_transform; }
|
| - void setTransform(const TransformationMatrix&);
|
| -
|
| - const TransformationMatrix& childrenTransform() const { return m_childrenTransform; }
|
| - void setChildrenTransform(const TransformationMatrix&);
|
| -
|
| - bool preserves3D() const { return m_preserves3D; }
|
| - void setPreserves3D(bool);
|
| -
|
| - bool masksToBounds() const { return m_masksToBounds; }
|
| - void setMasksToBounds(bool);
|
| -
|
| - bool drawsContent() const { return m_drawsContent; }
|
| - void setDrawsContent(bool);
|
| -
|
| - bool contentsAreVisible() const { return m_contentsVisible; }
|
| - void setContentsVisible(bool);
|
| -
|
| - void setScrollParent(blink::WebLayer*);
|
| - void setClipParent(blink::WebLayer*);
|
| -
|
| - void setDebugInfo(blink::WebGraphicsLayerDebugInfo*);
|
| -
|
| - // For special cases, e.g. drawing missing tiles on Android.
|
| - // The compositor should never paint this color in normal cases because the RenderLayer
|
| - // will paint background by itself.
|
| - const Color& backgroundColor() const { return m_backgroundColor; }
|
| - void setBackgroundColor(const Color&);
|
| -
|
| - // opaque means that we know the layer contents have no alpha
|
| - bool contentsOpaque() const { return m_contentsOpaque; }
|
| - void setContentsOpaque(bool);
|
| -
|
| - bool backfaceVisibility() const { return m_backfaceVisibility; }
|
| - void setBackfaceVisibility(bool visible);
|
| -
|
| - float opacity() const { return m_opacity; }
|
| - void setOpacity(float);
|
| -
|
| - blink::WebBlendMode blendMode() const { return m_blendMode; }
|
| - void setBlendMode(blink::WebBlendMode);
|
| -
|
| - bool isRootForIsolatedGroup() const { return m_isRootForIsolatedGroup; }
|
| - void setIsRootForIsolatedGroup(bool);
|
| -
|
| - const FilterOperations& filters() const { return m_filters; }
|
| -
|
| - // Returns true if filter can be rendered by the compositor
|
| - bool setFilters(const FilterOperations&);
|
| - void setBackgroundFilters(const FilterOperations&);
|
| -
|
| - // Some GraphicsLayers paint only the foreground or the background content
|
| - GraphicsLayerPaintingPhase paintingPhase() const { return m_paintingPhase; }
|
| - void setPaintingPhase(GraphicsLayerPaintingPhase phase) { m_paintingPhase = phase; }
|
| -
|
| - void setNeedsDisplay();
|
| - // mark the given rect (in layer coords) as needing dispay. Never goes deep.
|
| - void setNeedsDisplayInRect(const FloatRect&);
|
| -
|
| - void setContentsNeedsDisplay();
|
| -
|
| - // Set that the position/size of the contents (image or video).
|
| - IntRect contentsRect() const { return m_contentsRect; }
|
| - void setContentsRect(const IntRect&);
|
| -
|
| - // Return true if the animation is handled by the compositing system. If this returns
|
| - // false, the animation will be run by AnimationController.
|
| - // These methods handle both transitions and keyframe animations.
|
| - bool addAnimation(PassOwnPtr<blink::WebAnimation>);
|
| - void pauseAnimation(int animationId, double /*timeOffset*/);
|
| - void removeAnimation(int animationId);
|
| -
|
| - // Layer contents
|
| - void setContentsToImage(Image*);
|
| - void setContentsToNinePatch(Image*, const IntRect& aperture);
|
| - // Pass an invalid color to remove the contents layer.
|
| - void setContentsToSolidColor(const Color&);
|
| - void setContentsToPlatformLayer(blink::WebLayer* layer) { setContentsTo(layer); }
|
| - bool hasContentsLayer() const { return m_contentsLayer; }
|
| -
|
| - // Callback from the underlying graphics system to draw layer contents.
|
| - void paintGraphicsLayerContents(GraphicsContext&, const IntRect& clip);
|
| -
|
| - // For hosting this GraphicsLayer in a native layer hierarchy.
|
| - blink::WebLayer* platformLayer() const;
|
| -
|
| - enum CompositingCoordinatesOrientation { CompositingCoordinatesTopDown, CompositingCoordinatesBottomUp };
|
| -
|
| - // Flippedness of the contents of this layer. Does not affect sublayer geometry.
|
| - void setContentsOrientation(CompositingCoordinatesOrientation orientation) { m_contentsOrientation = orientation; }
|
| - CompositingCoordinatesOrientation contentsOrientation() const { return m_contentsOrientation; }
|
| -
|
| - void dumpLayer(TextStream&, int indent, LayerTreeFlags) const;
|
| -
|
| - int paintCount() const { return m_paintCount; }
|
| -
|
| - // z-position is the z-equivalent of position(). It's only used for debugging purposes.
|
| - float zPosition() const { return m_zPosition; }
|
| - void setZPosition(float);
|
| -
|
| - void distributeOpacity(float);
|
| - float accumulatedOpacity() const;
|
| -
|
| - // If the exposed rect of this layer changes, returns true if this or descendant layers need a flush,
|
| - // for example to allocate new tiles.
|
| - bool visibleRectChangeRequiresFlush(const FloatRect& /* clipRect */) const { return false; }
|
| -
|
| - // Return a string with a human readable form of the layer tree, If debug is true
|
| - // pointers for the layers and timing data will be included in the returned string.
|
| - String layerTreeAsText(LayerTreeFlags = LayerTreeNormal) const;
|
| -
|
| - // Return an estimate of the backing store memory cost (in bytes). May be incorrect for tiled layers.
|
| - double backingStoreMemoryEstimate() const;
|
| -
|
| - void resetTrackedRepaints();
|
| - void addRepaintRect(const FloatRect&);
|
| -
|
| - void collectTrackedRepaintRects(Vector<FloatRect>&) const;
|
| -
|
| - void addLinkHighlight(LinkHighlightClient*);
|
| - void removeLinkHighlight(LinkHighlightClient*);
|
| - // Exposed for tests
|
| - unsigned numLinkHighlights() { return m_linkHighlights.size(); }
|
| - LinkHighlightClient* linkHighlight(int i) { return m_linkHighlights[i]; }
|
| -
|
| - void setScrollableArea(ScrollableArea*, bool isMainFrame);
|
| - ScrollableArea* scrollableArea() const { return m_scrollableArea; }
|
| -
|
| - blink::WebContentLayer* contentLayer() const { return m_layer.get(); }
|
| -
|
| - static void registerContentsLayer(blink::WebLayer*);
|
| - static void unregisterContentsLayer(blink::WebLayer*);
|
| -
|
| - // GraphicsContextPainter implementation.
|
| - virtual void paint(GraphicsContext&, const IntRect& clip) OVERRIDE;
|
| -
|
| - // WebAnimationDelegate implementation.
|
| - virtual void notifyAnimationStarted(double startTime) OVERRIDE;
|
| - virtual void notifyAnimationFinished(double finishTime) OVERRIDE;
|
| -
|
| - // WebLayerScrollClient implementation.
|
| - virtual void didScroll() OVERRIDE;
|
| -
|
| -protected:
|
| - explicit GraphicsLayer(GraphicsLayerClient*);
|
| - // GraphicsLayerFactoryChromium that wants to create a GraphicsLayer need to be friends.
|
| - friend class blink::GraphicsLayerFactoryChromium;
|
| -
|
| - // Exposed for tests.
|
| - virtual blink::WebLayer* contentsLayer() const { return m_contentsLayer; }
|
| -
|
| -private:
|
| - // Adds a child without calling updateChildList(), so that adding children
|
| - // can be batched before updating.
|
| - void addChildInternal(GraphicsLayer*);
|
| -
|
| - // This method is used by platform GraphicsLayer classes to clear the filters
|
| - // when compositing is not done in hardware. It is not virtual, so the caller
|
| - // needs to notifiy the change to the platform layer as needed.
|
| - void clearFilters() { m_filters.clear(); }
|
| -
|
| - void setReplicatedLayer(GraphicsLayer* layer) { m_replicatedLayer = layer; }
|
| -
|
| - int incrementPaintCount() { return ++m_paintCount; }
|
| -
|
| - void dumpProperties(TextStream&, int indent, LayerTreeFlags) const;
|
| -
|
| - // Helper functions used by settors to keep layer's the state consistent.
|
| - void updateChildList();
|
| - void updateLayerIsDrawable();
|
| - void updateContentsRect();
|
| -
|
| - void setContentsTo(blink::WebLayer*);
|
| - void setupContentsLayer(blink::WebLayer*);
|
| - void clearContentsLayerIfUnregistered();
|
| - blink::WebLayer* contentsLayerIfRegistered();
|
| -
|
| - GraphicsLayerClient* m_client;
|
| -
|
| - // Offset from the owning renderer
|
| - IntSize m_offsetFromRenderer;
|
| -
|
| - // Position is relative to the parent GraphicsLayer
|
| - FloatPoint m_position;
|
| - FloatPoint3D m_anchorPoint;
|
| - FloatSize m_size;
|
| - FloatPoint m_boundsOrigin;
|
| -
|
| - TransformationMatrix m_transform;
|
| - TransformationMatrix m_childrenTransform;
|
| -
|
| - Color m_backgroundColor;
|
| - float m_opacity;
|
| - float m_zPosition;
|
| -
|
| - blink::WebBlendMode m_blendMode;
|
| -
|
| - FilterOperations m_filters;
|
| -
|
| - bool m_contentsOpaque : 1;
|
| - bool m_preserves3D: 1;
|
| - bool m_backfaceVisibility : 1;
|
| - bool m_masksToBounds : 1;
|
| - bool m_drawsContent : 1;
|
| - bool m_contentsVisible : 1;
|
| - bool m_isRootForIsolatedGroup : 1;
|
| -
|
| - bool m_hasScrollParent : 1;
|
| - bool m_hasClipParent : 1;
|
| -
|
| - GraphicsLayerPaintingPhase m_paintingPhase;
|
| - CompositingCoordinatesOrientation m_contentsOrientation; // affects orientation of layer contents
|
| -
|
| - Vector<GraphicsLayer*> m_children;
|
| - GraphicsLayer* m_parent;
|
| -
|
| - GraphicsLayer* m_maskLayer; // Reference to mask layer. We don't own this.
|
| - GraphicsLayer* m_contentsClippingMaskLayer; // Reference to clipping mask layer. We don't own this.
|
| -
|
| - GraphicsLayer* m_replicaLayer; // A layer that replicates this layer. We only allow one, for now.
|
| - // The replica is not parented; this is the primary reference to it.
|
| - GraphicsLayer* m_replicatedLayer; // For a replica layer, a reference to the original layer.
|
| - FloatPoint m_replicatedLayerPosition; // For a replica layer, the position of the replica.
|
| -
|
| - IntRect m_contentsRect;
|
| -
|
| - int m_paintCount;
|
| -
|
| - OwnPtr<blink::WebContentLayer> m_layer;
|
| - OwnPtr<blink::WebImageLayer> m_imageLayer;
|
| - OwnPtr<blink::WebNinePatchLayer> m_ninePatchLayer;
|
| - Color m_contentsSolidColor;
|
| - OwnPtr<blink::WebSolidColorLayer> m_solidColorLayer;
|
| - blink::WebLayer* m_contentsLayer;
|
| - // We don't have ownership of m_contentsLayer, but we do want to know if a given layer is the
|
| - // same as our current layer in setContentsTo(). Since m_contentsLayer may be deleted at this point,
|
| - // we stash an ID away when we know m_contentsLayer is alive and use that for comparisons from that point
|
| - // on.
|
| - int m_contentsLayerId;
|
| -
|
| - Vector<LinkHighlightClient*> m_linkHighlights;
|
| -
|
| - OwnPtr<OpaqueRectTrackingContentLayerDelegate> m_opaqueRectTrackingContentLayerDelegate;
|
| -
|
| - ScrollableArea* m_scrollableArea;
|
| - blink::WebCompositingReasons m_compositingReasons;
|
| - blink::WebGraphicsLayerDebugInfo* m_debugInfo;
|
| -};
|
| -
|
| -
|
| -} // namespace WebCore
|
| -
|
| -#ifndef NDEBUG
|
| -// Outside the WebCore namespace for ease of invocation from gdb.
|
| -void showGraphicsLayerTree(const WebCore::GraphicsLayer* layer);
|
| -#endif
|
| -
|
| -#endif // GraphicsLayer_h
|
|
|