blob: ee5997d22a6afc62f9659d863ebe4e4ae6287d65 [file] [log] [blame]
Torne (Richard Coles)90dce4d2013-05-29 14:40:03 +01001// Copyright 2011 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef WEBKIT_RENDERER_COMPOSITOR_BINDINGS_WEB_LAYER_IMPL_H_
6#define WEBKIT_RENDERER_COMPOSITOR_BINDINGS_WEB_LAYER_IMPL_H_
7
8#include "base/memory/ref_counted.h"
Ben Murdocheb525c52013-07-10 11:40:50 +01009#include "base/memory/scoped_ptr.h"
Torne (Richard Coles)868fa2f2013-06-11 10:57:03 +010010#include "third_party/WebKit/public/platform/WebAnimation.h"
11#include "third_party/WebKit/public/platform/WebColor.h"
12#include "third_party/WebKit/public/platform/WebCompositingReasons.h"
13#include "third_party/WebKit/public/platform/WebFloatPoint.h"
14#include "third_party/WebKit/public/platform/WebLayer.h"
15#include "third_party/WebKit/public/platform/WebPoint.h"
16#include "third_party/WebKit/public/platform/WebRect.h"
17#include "third_party/WebKit/public/platform/WebSize.h"
18#include "third_party/WebKit/public/platform/WebString.h"
19#include "third_party/WebKit/public/platform/WebVector.h"
Torne (Richard Coles)90dce4d2013-05-29 14:40:03 +010020#include "third_party/skia/include/utils/SkMatrix44.h"
21#include "webkit/renderer/compositor_bindings/webkit_compositor_bindings_export.h"
22
23namespace cc { class Layer; }
24
25// TODO(senorblanco): Remove this once WebKit changes have landed.
26class SkImageFilter;
27
28namespace WebKit {
Torne (Richard Coles)90dce4d2013-05-29 14:40:03 +010029class WebFilterOperations;
Ben Murdochbb1529c2013-08-08 10:24:53 +010030class WebLayerClient;
Torne (Richard Coles)90dce4d2013-05-29 14:40:03 +010031struct WebFloatRect;
32}
33
34namespace webkit {
35
Ben Murdocheb525c52013-07-10 11:40:50 +010036class WebToCCAnimationDelegateAdapter;
37
Torne (Richard Coles)90dce4d2013-05-29 14:40:03 +010038class WebLayerImpl : public WebKit::WebLayer {
39 public:
40 WEBKIT_COMPOSITOR_BINDINGS_EXPORT WebLayerImpl();
41 WEBKIT_COMPOSITOR_BINDINGS_EXPORT explicit WebLayerImpl(
42 scoped_refptr<cc::Layer>);
43 virtual ~WebLayerImpl();
44
45 WEBKIT_COMPOSITOR_BINDINGS_EXPORT cc::Layer* layer() const;
46
47 // WebLayer implementation.
48 virtual int id() const;
49 virtual void invalidateRect(const WebKit::WebFloatRect&);
50 virtual void invalidate();
51 virtual void addChild(WebKit::WebLayer* child);
52 virtual void insertChild(WebKit::WebLayer* child, size_t index);
53 virtual void replaceChild(WebKit::WebLayer* reference,
54 WebKit::WebLayer* new_layer);
55 virtual void removeFromParent();
56 virtual void removeAllChildren();
57 virtual void setAnchorPoint(const WebKit::WebFloatPoint&);
58 virtual WebKit::WebFloatPoint anchorPoint() const;
59 virtual void setAnchorPointZ(float anchor_point_z);
60 virtual float anchorPointZ() const;
61 virtual void setBounds(const WebKit::WebSize& bounds);
62 virtual WebKit::WebSize bounds() const;
63 virtual void setMasksToBounds(bool masks_to_bounds);
64 virtual bool masksToBounds() const;
65 virtual void setMaskLayer(WebKit::WebLayer* mask);
66 virtual void setReplicaLayer(WebKit::WebLayer* replica);
67 virtual void setOpacity(float opacity);
68 virtual float opacity() const;
69 virtual void setOpaque(bool opaque);
70 virtual bool opaque() const;
71 virtual void setPosition(const WebKit::WebFloatPoint& position);
72 virtual WebKit::WebFloatPoint position() const;
73 virtual void setSublayerTransform(const SkMatrix44&);
74 virtual SkMatrix44 sublayerTransform() const;
75 virtual void setTransform(const SkMatrix44& transform);
76 virtual SkMatrix44 transform() const;
77 virtual void setDrawsContent(bool draws_content);
78 virtual bool drawsContent() const;
79 virtual void setPreserves3D(bool preserves_3d);
80 virtual void setUseParentBackfaceVisibility(bool visible);
81 virtual void setBackgroundColor(WebKit::WebColor color);
82 virtual WebKit::WebColor backgroundColor() const;
83 virtual void setFilter(SkImageFilter* filter);
84 virtual void setFilters(const WebKit::WebFilterOperations& filters);
85 virtual void setBackgroundFilters(const WebKit::WebFilterOperations& filters);
86 virtual void setDebugName(WebKit::WebString name);
87 virtual void setCompositingReasons(WebKit::WebCompositingReasons);
88 virtual void setAnimationDelegate(WebKit::WebAnimationDelegate* delegate);
89 virtual bool addAnimation(WebKit::WebAnimation* animation);
90 virtual void removeAnimation(int animation_id);
91 virtual void removeAnimation(int animation_id,
92 WebKit::WebAnimation::TargetProperty);
93 virtual void pauseAnimation(int animation_id, double time_offset);
94 virtual void suspendAnimations(double monotonic_time);
95 virtual void resumeAnimations(double monotonic_time);
96 virtual bool hasActiveAnimation();
Torne (Richard Coles)90dce4d2013-05-29 14:40:03 +010097 virtual void setForceRenderSurface(bool force);
98 virtual void setScrollPosition(WebKit::WebPoint position);
99 virtual WebKit::WebPoint scrollPosition() const;
100 virtual void setMaxScrollPosition(WebKit::WebSize max_position);
101 virtual WebKit::WebSize maxScrollPosition() const;
102 virtual void setScrollable(bool scrollable);
103 virtual bool scrollable() const;
104 virtual void setHaveWheelEventHandlers(bool have_wheel_event_handlers);
105 virtual bool haveWheelEventHandlers() const;
106 virtual void setShouldScrollOnMainThread(bool scroll_on_main);
107 virtual bool shouldScrollOnMainThread() const;
108 virtual void setNonFastScrollableRegion(
109 const WebKit::WebVector<WebKit::WebRect>& region);
110 virtual WebKit::WebVector<WebKit::WebRect> nonFastScrollableRegion() const;
111 virtual void setTouchEventHandlerRegion(
112 const WebKit::WebVector<WebKit::WebRect>& region);
113 virtual WebKit::WebVector<WebKit::WebRect> touchEventHandlerRegion() const;
114 virtual void setIsContainerForFixedPositionLayers(bool is_container);
115 virtual bool isContainerForFixedPositionLayers() const;
116 virtual void setPositionConstraint(
117 const WebKit::WebLayerPositionConstraint& constraint);
118 virtual WebKit::WebLayerPositionConstraint positionConstraint() const;
119 virtual void setScrollClient(WebKit::WebLayerScrollClient* client);
120 virtual bool isOrphan() const;
Ben Murdochbb1529c2013-08-08 10:24:53 +0100121 virtual void setWebLayerClient(WebKit::WebLayerClient* client);
Torne (Richard Coles)90dce4d2013-05-29 14:40:03 +0100122
123 protected:
124 scoped_refptr<cc::Layer> layer_;
Ben Murdochbb1529c2013-08-08 10:24:53 +0100125 WebKit::WebLayerClient* web_layer_client_;
Torne (Richard Coles)90dce4d2013-05-29 14:40:03 +0100126
127 private:
Ben Murdocheb525c52013-07-10 11:40:50 +0100128 scoped_ptr<WebToCCAnimationDelegateAdapter> animation_delegate_adapter_;
129
Torne (Richard Coles)90dce4d2013-05-29 14:40:03 +0100130 DISALLOW_COPY_AND_ASSIGN(WebLayerImpl);
131};
132
Ben Murdocheb525c52013-07-10 11:40:50 +0100133} // namespace webkit
Torne (Richard Coles)90dce4d2013-05-29 14:40:03 +0100134
135#endif // WEBKIT_RENDERER_COMPOSITOR_BINDINGS_WEB_LAYER_IMPL_H_