Upstream version 5.34.104.0
[platform/framework/web/crosswalk.git] / src / webkit / renderer / compositor_bindings / web_layer_impl.h
1 // 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 <string>
9
10 #include "base/memory/ref_counted.h"
11 #include "base/memory/scoped_ptr.h"
12 #include "cc/layers/layer_client.h"
13 #include "third_party/WebKit/public/platform/WebAnimation.h"
14 #include "third_party/WebKit/public/platform/WebCString.h"
15 #include "third_party/WebKit/public/platform/WebColor.h"
16 #include "third_party/WebKit/public/platform/WebFloatPoint.h"
17 #include "third_party/WebKit/public/platform/WebLayer.h"
18 #include "third_party/WebKit/public/platform/WebPoint.h"
19 #include "third_party/WebKit/public/platform/WebRect.h"
20 #include "third_party/WebKit/public/platform/WebSize.h"
21 #include "third_party/WebKit/public/platform/WebString.h"
22 #include "third_party/WebKit/public/platform/WebVector.h"
23 #include "third_party/skia/include/utils/SkMatrix44.h"
24 #include "webkit/renderer/compositor_bindings/webkit_compositor_bindings_export.h"
25
26 namespace cc { class Layer; }
27
28 // TODO(senorblanco):  Remove this once WebKit changes have landed.
29 class SkImageFilter;
30
31 namespace blink {
32 class WebFilterOperations;
33 class WebLayerClient;
34 struct WebFloatRect;
35 }
36
37 namespace base {
38 namespace debug {
39 class ConvertableToTraceFormat;
40 }
41 }
42
43 namespace webkit {
44
45 class WebToCCAnimationDelegateAdapter;
46
47 class WebLayerImpl : public blink::WebLayer, public cc::LayerClient {
48  public:
49   WEBKIT_COMPOSITOR_BINDINGS_EXPORT WebLayerImpl();
50   WEBKIT_COMPOSITOR_BINDINGS_EXPORT explicit WebLayerImpl(
51       scoped_refptr<cc::Layer>);
52   virtual ~WebLayerImpl();
53
54   static bool UsingPictureLayer();
55
56   WEBKIT_COMPOSITOR_BINDINGS_EXPORT cc::Layer* layer() const;
57
58   // WebLayer implementation.
59   virtual int id() const;
60   virtual void invalidateRect(const blink::WebFloatRect&);
61   virtual void invalidate();
62   virtual void addChild(blink::WebLayer* child);
63   virtual void insertChild(blink::WebLayer* child, size_t index);
64   virtual void replaceChild(blink::WebLayer* reference,
65                             blink::WebLayer* new_layer);
66   virtual void removeFromParent();
67   virtual void removeAllChildren();
68   virtual void setAnchorPoint(const blink::WebFloatPoint&);
69   virtual blink::WebFloatPoint anchorPoint() const;
70   virtual void setAnchorPointZ(float anchor_point_z);
71   virtual float anchorPointZ() const;
72   virtual void setBounds(const blink::WebSize& bounds);
73   virtual blink::WebSize bounds() const;
74   virtual void setMasksToBounds(bool masks_to_bounds);
75   virtual bool masksToBounds() const;
76   virtual void setMaskLayer(blink::WebLayer* mask);
77   virtual void setReplicaLayer(blink::WebLayer* replica);
78   virtual void setOpacity(float opacity);
79   virtual float opacity() const;
80   virtual void setBlendMode(blink::WebBlendMode blend_mode);
81   virtual blink::WebBlendMode blendMode() const;
82   virtual void setIsRootForIsolatedGroup(bool root);
83   virtual bool isRootForIsolatedGroup();
84   virtual void setOpaque(bool opaque);
85   virtual bool opaque() const;
86   virtual void setPosition(const blink::WebFloatPoint& position);
87   virtual blink::WebFloatPoint position() const;
88   virtual void setTransform(const SkMatrix44& transform);
89   virtual SkMatrix44 transform() const;
90   virtual void setDrawsContent(bool draws_content);
91   virtual bool drawsContent() const;
92   virtual void setShouldFlattenTransform(bool flatten);
93   virtual void setRenderingContext(int context);
94   virtual void setUseParentBackfaceVisibility(bool visible);
95   virtual void setBackgroundColor(blink::WebColor color);
96   virtual blink::WebColor backgroundColor() const;
97   virtual void setFilters(const blink::WebFilterOperations& filters);
98   virtual void setBackgroundFilters(const blink::WebFilterOperations& filters);
99   virtual void setAnimationDelegate(blink::WebAnimationDelegate* delegate);
100   virtual bool addAnimation(blink::WebAnimation* animation);
101   virtual void removeAnimation(int animation_id);
102   virtual void removeAnimation(int animation_id,
103                                blink::WebAnimation::TargetProperty);
104   virtual void pauseAnimation(int animation_id, double time_offset);
105   virtual bool hasActiveAnimation();
106   virtual void setForceRenderSurface(bool force);
107   virtual void setScrollPosition(blink::WebPoint position);
108   virtual blink::WebPoint scrollPosition() const;
109   virtual blink::WebSize maxScrollPosition() const;
110   virtual void setScrollClipLayer(blink::WebLayer* clip_layer);
111   virtual bool scrollable() const;
112   virtual void setUserScrollable(bool horizontal, bool vertical);
113   virtual bool userScrollableHorizontal() const;
114   virtual bool userScrollableVertical() const;
115   virtual void setHaveWheelEventHandlers(bool have_wheel_event_handlers);
116   virtual bool haveWheelEventHandlers() const;
117   virtual void setShouldScrollOnMainThread(bool scroll_on_main);
118   virtual bool shouldScrollOnMainThread() const;
119   virtual void setNonFastScrollableRegion(
120       const blink::WebVector<blink::WebRect>& region);
121   virtual blink::WebVector<blink::WebRect> nonFastScrollableRegion() const;
122   virtual void setTouchEventHandlerRegion(
123       const blink::WebVector<blink::WebRect>& region);
124   virtual blink::WebVector<blink::WebRect> touchEventHandlerRegion() const;
125   virtual void setIsContainerForFixedPositionLayers(bool is_container);
126   virtual bool isContainerForFixedPositionLayers() const;
127   virtual void setPositionConstraint(
128       const blink::WebLayerPositionConstraint& constraint);
129   virtual blink::WebLayerPositionConstraint positionConstraint() const;
130   virtual void setScrollClient(blink::WebLayerScrollClient* client);
131   virtual bool isOrphan() const;
132   virtual void setWebLayerClient(blink::WebLayerClient* client);
133
134   // LayerClient implementation.
135   virtual scoped_refptr<base::debug::ConvertableToTraceFormat>
136       TakeDebugInfo() OVERRIDE;
137
138   virtual void setScrollParent(blink::WebLayer* parent);
139   virtual void setClipParent(blink::WebLayer* parent);
140
141  protected:
142   scoped_refptr<cc::Layer> layer_;
143   blink::WebLayerClient* web_layer_client_;
144
145  private:
146   scoped_ptr<WebToCCAnimationDelegateAdapter> animation_delegate_adapter_;
147
148   DISALLOW_COPY_AND_ASSIGN(WebLayerImpl);
149 };
150
151 }  // namespace webkit
152
153 #endif  // WEBKIT_RENDERER_COMPOSITOR_BINDINGS_WEB_LAYER_IMPL_H_