blob: 591a2612b706e8c05dd6d0c9918c435a89ba1a82 [file] [log] [blame]
/*
* Copyright (C) 2009 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef GraphicsLayerAndroid_h
#define GraphicsLayerAndroid_h
#if USE(ACCELERATED_COMPOSITING)
#include "FloatRect.h"
#include "Frame.h"
#include "GraphicsLayer.h"
#include "GraphicsLayerClient.h"
#include "LayerAndroid.h"
#include "RefPtr.h"
#include "Vector.h"
class FloatPoint3D;
class Image;
namespace WebCore {
class GraphicsLayerAndroid : public GraphicsLayer {
public:
GraphicsLayerAndroid(GraphicsLayerClient*);
virtual ~GraphicsLayerAndroid();
virtual void setName(const String&);
// for hosting this GraphicsLayer in a native layer hierarchy
virtual NativeLayer nativeLayer() const;
virtual bool setChildren(const Vector<GraphicsLayer*>&);
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 setMaskLayer(GraphicsLayer*);
virtual void setMasksToBounds(bool);
virtual void setDrawsContent(bool);
virtual void setBackgroundColor(const Color&);
virtual void clearBackgroundColor();
virtual void setContentsOpaque(bool);
virtual void setOpacity(float);
virtual void setNeedsDisplay();
virtual void setNeedsDisplayInRect(const FloatRect&);
virtual bool addAnimation(const KeyframeValueList& valueList,
const IntSize& boxSize,
const Animation* anim,
const String& keyframesName,
double beginTime);
bool createTransformAnimationsFromKeyframes(const KeyframeValueList&,
const Animation*,
const String& keyframesName,
double beginTime,
const IntSize& boxSize);
bool createAnimationFromKeyframes(const KeyframeValueList&,
const Animation*,
const String& keyframesName,
double beginTime);
virtual void removeAnimationsForProperty(AnimatedPropertyID);
virtual void removeAnimationsForKeyframes(const String& keyframesName);
virtual void pauseAnimation(const String& keyframesName);
virtual void suspendAnimations(double time);
virtual void resumeAnimations();
virtual void setContentsToImage(Image*);
bool repaintAll();
virtual PlatformLayer* platformLayer() const;
void pauseDisplay(bool state);
#ifndef NDEBUG
virtual void setDebugBackgroundColor(const Color&);
virtual void setDebugBorder(const Color&, float borderWidth);
#endif
virtual void setZPosition(float);
void askForSync();
void syncPositionState();
void needsSyncChildren();
void syncChildren();
void syncMask();
virtual void syncCompositingState();
void setFrame(Frame*);
void notifyClientAnimationStarted();
void sendImmediateRepaint();
LayerAndroid* contentLayer() { return m_contentLayer.get(); }
static int instancesCount();
private:
bool repaint(const FloatRect& rect);
void needsNotifyClient();
bool m_needsSyncChildren;
bool m_needsSyncMask;
bool m_needsRepaint;
bool m_needsDisplay;
bool m_needsNotifyClient;
bool m_haveContents;
bool m_haveImage;
float m_translateX;
float m_translateY;
float m_currentTranslateX;
float m_currentTranslateY;
FloatPoint m_currentPosition;
RefPtr<Frame> m_frame;
Vector<FloatRect> m_invalidatedRects;
RefPtr<LayerAndroid> m_contentLayer;
};
} // namespace WebCore
#endif // USE(ACCELERATED_COMPOSITING)
#endif // GraphicsLayerAndroid_h