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" 9 #include "base/memory/scoped_ptr.h" 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" 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 { 29 class WebFilterOperations; 30 class WebLayerClient; 31 struct WebFloatRect; 32 } 33 34 namespace webkit { 35 36 class WebToCCAnimationDelegateAdapter; 37 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(); 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; 121 virtual void setWebLayerClient(WebKit::WebLayerClient* client); 122 123 protected: 124 scoped_refptr<cc::Layer> layer_; 125 WebKit::WebLayerClient* web_layer_client_; 126 127 private: 128 scoped_ptr<WebToCCAnimationDelegateAdapter> animation_delegate_adapter_; 129 130 DISALLOW_COPY_AND_ASSIGN(WebLayerImpl); 131 }; 132 133 } // namespace webkit 134 135 #endif // WEBKIT_RENDERER_COMPOSITOR_BINDINGS_WEB_LAYER_IMPL_H_ 136