1/*
2    Copyright (C) 2012 Samsung Electronics
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 AcceleratedCompositingContextEfl_h
21#define AcceleratedCompositingContextEfl_h
22
23#include <wtf/Noncopyable.h>
24#include <wtf/PassOwnPtr.h>
25
26#if USE(ACCELERATED_COMPOSITING) && USE(TEXTURE_MAPPER_GL)
27
28#include "TextureMapperFPSCounter.h"
29#include "ewk_private.h"
30
31namespace WebCore {
32
33class HostWindow;
34class TextureMapper;
35class TextureMapperLayer;
36
37class AcceleratedCompositingContext {
38    WTF_MAKE_NONCOPYABLE(AcceleratedCompositingContext);
39public:
40    static PassOwnPtr<AcceleratedCompositingContext> create(HostWindow*);
41    virtual ~AcceleratedCompositingContext();
42
43    virtual void syncLayersNow();
44    virtual void renderLayers();
45    virtual void attachRootGraphicsLayer(GraphicsLayer* rootLayer);
46    virtual GraphicsContext3D* context();
47
48private:
49    AcceleratedCompositingContext();
50
51    virtual bool initialize(HostWindow*);
52
53    Evas_Object* m_view;
54
55    OwnPtr<TextureMapper> m_textureMapper;
56    OwnPtr<GraphicsLayer> m_rootGraphicsLayer;
57    TextureMapperLayer* m_rootTextureMapperLayer;
58
59    RefPtr<GraphicsContext3D> m_context3D;
60    TextureMapperFPSCounter m_fpsCounter;
61};
62
63} // namespace WebCore
64
65#endif // USE(ACCELERATED_COMPOSITING) && USE(TEXTURE_MAPPER_GL)
66#endif // AcceleratedCompositingContextEfl_h
67