#ifndef GraphicsLayerCA_h
#define GraphicsLayerCA_h
#if USE(ACCELERATED_COMPOSITING)
#include "GraphicsLayer.h"
#include <wtf/RetainPtr.h>
@class WebAnimationDelegate;
@class WebLayer;
namespace WebCore {
class GraphicsLayerCA : public GraphicsLayer {
public:
GraphicsLayerCA(GraphicsLayerClient*);
virtual ~GraphicsLayerCA();
virtual void setName(const String&);
virtual NativeLayer nativeLayer() const;
virtual void addChild(GraphicsLayer*);
virtual void addChildAtIndex(GraphicsLayer*, int index);
virtual void addChildAbove(GraphicsLayer* layer, GraphicsLayer* sibling);
virtual void addChildBelow(GraphicsLayer* layer, GraphicsLayer* sibling);
virtual bool replaceChild(GraphicsLayer* oldChild, GraphicsLayer* newChild);
virtual void removeFromParent();
virtual void setPosition(const FloatPoint&);
virtual void setAnchorPoint(const FloatPoint3D&);
virtual void setSize(const FloatSize&);
virtual void setTransform(const TransformationMatrix&);
virtual void setChildrenTransform(const TransformationMatrix&);
virtual void setPreserves3D(bool);
virtual void setMasksToBounds(bool);
virtual void setDrawsContent(bool);
virtual void setBackgroundColor(const Color&, const Animation* anim = 0, double beginTime = 0);
virtual void clearBackgroundColor();
virtual void setContentsOpaque(bool);
virtual void setBackfaceVisibility(bool);
virtual bool setOpacity(float, const Animation* anim = 0, double beginTime = 0);
virtual void setNeedsDisplay();
virtual void setNeedsDisplayInRect(const FloatRect&);
virtual void suspendAnimations();
virtual void resumeAnimations();
virtual bool animateTransform(const TransformValueList&, const IntSize&, const Animation*, double beginTime, bool isTransition);
virtual bool animateFloat(AnimatedPropertyID, const FloatValueList&, const Animation*, double beginTime);
virtual void setContentsToImage(Image*);
virtual void setContentsToVideo(PlatformLayer*);
virtual void clearContents();
virtual void updateContentsRect();
virtual PlatformLayer* platformLayer() const;
virtual void setContentsScale(float);
virtual void setDebugBackgroundColor(const Color&);
virtual void setDebugBorder(const Color&, float borderWidth);
virtual void setZPosition(float);
private:
WebLayer* primaryLayer() const { return m_transformLayer.get() ? m_transformLayer.get() : m_layer.get(); }
WebLayer* hostLayerForSublayers() const;
WebLayer* layerForSuperlayer() const;
WebLayer* animatedLayer(AnimatedPropertyID property) const
{
return (property == AnimatedPropertyBackgroundColor) ? m_contentsLayer.get() : primaryLayer();
}
void setBasicAnimation(AnimatedPropertyID, TransformOperation::OperationType, short index, void* fromVal, void* toVal, bool isTransition, const Animation*, double time);
void setKeyframeAnimation(AnimatedPropertyID, TransformOperation::OperationType, short index, void* keys, void* values, void* timingFunctions, bool isTransition, const Animation*, double time);
virtual void removeAnimation(int index, bool reset);
bool requiresTiledLayer(const FloatSize&) const;
void swapFromOrToTiledLayer(bool useTiledLayer);
void setHasContentsLayer(bool);
void setContentsLayer(WebLayer*);
void setContentsLayerFlipped(bool);
RetainPtr<WebLayer> m_layer;
RetainPtr<WebLayer> m_transformLayer;
RetainPtr<WebLayer> m_contentsLayer;
RetainPtr<WebAnimationDelegate> m_animationDelegate;
bool m_contentLayerForImageOrVideo;
};
}
#endif // USE(ACCELERATED_COMPOSITING)
#endif // GraphicsLayerCA_h