Torne (Richard Coles) | 90dce4d | 2013-05-29 14:40:03 +0100 | [diff] [blame] | 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 "base/memory/ref_counted.h" |
Ben Murdoch | eb525c5 | 2013-07-10 11:40:50 +0100 | [diff] [blame] | 9 | #include "base/memory/scoped_ptr.h" |
Torne (Richard Coles) | 868fa2f | 2013-06-11 10:57:03 +0100 | [diff] [blame] | 10 | #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) | 90dce4d | 2013-05-29 14:40:03 +0100 | [diff] [blame] | 20 | #include "third_party/skia/include/utils/SkMatrix44.h" |
| 21 | #include "webkit/renderer/compositor_bindings/webkit_compositor_bindings_export.h" |
| 22 | |
| 23 | namespace cc { class Layer; } |
| 24 | |
| 25 | // TODO(senorblanco): Remove this once WebKit changes have landed. |
| 26 | class SkImageFilter; |
| 27 | |
| 28 | namespace WebKit { |
Torne (Richard Coles) | 90dce4d | 2013-05-29 14:40:03 +0100 | [diff] [blame] | 29 | class WebFilterOperations; |
Ben Murdoch | bb1529c | 2013-08-08 10:24:53 +0100 | [diff] [blame^] | 30 | class WebLayerClient; |
Torne (Richard Coles) | 90dce4d | 2013-05-29 14:40:03 +0100 | [diff] [blame] | 31 | struct WebFloatRect; |
| 32 | } |
| 33 | |
| 34 | namespace webkit { |
| 35 | |
Ben Murdoch | eb525c5 | 2013-07-10 11:40:50 +0100 | [diff] [blame] | 36 | class WebToCCAnimationDelegateAdapter; |
| 37 | |
Torne (Richard Coles) | 90dce4d | 2013-05-29 14:40:03 +0100 | [diff] [blame] | 38 | class 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) | 90dce4d | 2013-05-29 14:40:03 +0100 | [diff] [blame] | 97 | 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 Murdoch | bb1529c | 2013-08-08 10:24:53 +0100 | [diff] [blame^] | 121 | virtual void setWebLayerClient(WebKit::WebLayerClient* client); |
Torne (Richard Coles) | 90dce4d | 2013-05-29 14:40:03 +0100 | [diff] [blame] | 122 | |
| 123 | protected: |
| 124 | scoped_refptr<cc::Layer> layer_; |
Ben Murdoch | bb1529c | 2013-08-08 10:24:53 +0100 | [diff] [blame^] | 125 | WebKit::WebLayerClient* web_layer_client_; |
Torne (Richard Coles) | 90dce4d | 2013-05-29 14:40:03 +0100 | [diff] [blame] | 126 | |
| 127 | private: |
Ben Murdoch | eb525c5 | 2013-07-10 11:40:50 +0100 | [diff] [blame] | 128 | scoped_ptr<WebToCCAnimationDelegateAdapter> animation_delegate_adapter_; |
| 129 | |
Torne (Richard Coles) | 90dce4d | 2013-05-29 14:40:03 +0100 | [diff] [blame] | 130 | DISALLOW_COPY_AND_ASSIGN(WebLayerImpl); |
| 131 | }; |
| 132 | |
Ben Murdoch | eb525c5 | 2013-07-10 11:40:50 +0100 | [diff] [blame] | 133 | } // namespace webkit |
Torne (Richard Coles) | 90dce4d | 2013-05-29 14:40:03 +0100 | [diff] [blame] | 134 | |
| 135 | #endif // WEBKIT_RENDERER_COMPOSITOR_BINDINGS_WEB_LAYER_IMPL_H_ |