Replace uses of ArgumentEncoder/ArgumentDecoder with MessageEncoder/MessageDecoder
[WebKit-https.git] / Source / WebKit2 / UIProcess / CoordinatedGraphics / LayerTreeCoordinatorProxy.h
1 /*
2     Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies)
3
4     This library is free software; you can redistribute it and/or
5     modify it under the terms of the GNU Library General Public
6     License as published by the Free Software Foundation; either
7     version 2 of the License, or (at your option) any later version.
8
9     This library is distributed in the hope that it will be useful,
10     but WITHOUT ANY WARRANTY; without even the implied warranty of
11     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12     Library General Public License for more details.
13
14     You should have received a copy of the GNU Library General Public License
15     along with this library; see the file COPYING.LIB.  If not, write to
16     the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
17     Boston, MA 02110-1301, USA.
18 */
19
20 #ifndef LayerTreeCoordinatorProxy_h
21 #define LayerTreeCoordinatorProxy_h
22
23 #if USE(COORDINATED_GRAPHICS)
24
25 #include "BackingStore.h"
26 #include "CoordinatedGraphicsArgumentCoders.h"
27 #include "DrawingAreaProxy.h"
28 #include "Region.h"
29 #include "SurfaceUpdateInfo.h"
30 #include "WebLayerTreeInfo.h"
31 #include <WebCore/GraphicsContext.h>
32 #include <WebCore/GraphicsLayer.h>
33 #include <WebCore/GraphicsSurfaceToken.h>
34 #include <WebCore/IntRect.h>
35 #include <WebCore/IntSize.h>
36 #include <WebCore/RunLoop.h>
37 #include <WebCore/Timer.h>
38 #include <wtf/Functional.h>
39 #include <wtf/HashSet.h>
40
41 #if PLATFORM(QT)
42 QT_BEGIN_NAMESPACE
43 class QSGNode;
44 QT_END_NAMESPACE
45 #endif
46
47 namespace WebKit {
48
49 class WebLayerInfo;
50 class LayerTreeRenderer;
51 class WebLayerUpdateInfo;
52
53 class LayerTreeCoordinatorProxy {
54 public:
55     LayerTreeCoordinatorProxy(DrawingAreaProxy*);
56     virtual ~LayerTreeCoordinatorProxy();
57     void setCompositingLayerState(WebLayerID, const WebLayerInfo&);
58     void setCompositingLayerChildren(WebLayerID, const Vector<WebLayerID>&);
59 #if ENABLE(CSS_FILTERS)
60     void setCompositingLayerFilters(WebLayerID, const WebCore::FilterOperations&);
61 #endif
62     void deleteCompositingLayer(WebLayerID);
63     void setRootCompositingLayer(WebLayerID);
64     void didReceiveMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::MessageDecoder&);
65     void purgeGLResources();
66     void setContentsSize(const WebCore::FloatSize&);
67     void setVisibleContentsRect(const WebCore::FloatRect&, float scale, const WebCore::FloatPoint& trajectoryVector);
68     void didRenderFrame(const WebCore::IntSize& contentsSize, const WebCore::IntRect& coveredRect);
69     void createTileForLayer(int layerID, int tileID, const WebCore::IntRect&, const SurfaceUpdateInfo&);
70     void updateTileForLayer(int layerID, int tileID, const WebCore::IntRect&, const SurfaceUpdateInfo&);
71     void removeTileForLayer(int layerID, int tileID);
72     void createDirectlyCompositedImage(int64_t, const WebKit::ShareableBitmap::Handle&);
73     void destroyDirectlyCompositedImage(int64_t);
74     void didReceiveLayerTreeCoordinatorProxyMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::MessageDecoder&);
75     void updateViewport();
76     void renderNextFrame();
77     void didChangeScrollPosition(const WebCore::IntPoint& position);
78 #if USE(GRAPHICS_SURFACE)
79     void syncCanvas(uint32_t id, const WebCore::IntSize& canvasSize, const WebCore::GraphicsSurfaceToken&, uint32_t frontBuffer);
80 #endif
81     void purgeBackingStores();
82     LayerTreeRenderer* layerTreeRenderer() const { return m_renderer.get(); }
83     void setLayerAnimatedOpacity(uint32_t, float);
84     void setLayerAnimatedTransform(uint32_t, const WebCore::TransformationMatrix&);
85
86 protected:
87     void dispatchUpdate(const Function<void()>&);
88
89     DrawingAreaProxy* m_drawingAreaProxy;
90     RefPtr<LayerTreeRenderer> m_renderer;
91     WebCore::IntRect m_lastSentVisibleRect;
92     float m_lastSentScale;
93     WebCore::FloatPoint m_lastSentTrajectoryVector;
94 #if USE(GRAPHICS_SURFACE)
95     HashMap<WebCore::GraphicsSurfaceToken::BufferHandle, RefPtr<ShareableSurface> > m_surfaces;
96 #endif
97 };
98
99 }
100
101 #endif
102
103 #endif // LayerTreeCoordinatorProxy_h