[EFL] Remove non Coordinated Graphics code path from cmake build system after r142169
[WebKit-https.git] / Source / WebCore / platform / graphics / efl / GraphicsContext3DPrivate.h
1 /*
2     Copyright (C) 2012 Samsung Electronics
3     Copyright (C) 2012 Intel Corporation. All rights reserved.
4
5     This library is free software; you can redistribute it and/or
6     modify it under the terms of the GNU Library General Public
7     License as published by the Free Software Foundation; either
8     version 2 of the License, or (at your option) any later version.
9
10     This library is distributed in the hope that it will be useful,
11     but WITHOUT ANY WARRANTY; without even the implied warranty of
12     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13     Library General Public License for more details.
14
15     You should have received a copy of the GNU Library General Public License
16     along with this library; see the file COPYING.LIB.  If not, write to
17     the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
18     Boston, MA 02110-1301, USA.
19 */
20
21 #ifndef GraphicsContext3DPrivate_h
22 #define GraphicsContext3DPrivate_h
23
24 #include "GraphicsContext3D.h"
25 #include <texmap/TextureMapperPlatformLayer.h>
26 #include "GLPlatformContext.h"
27
28 namespace WebCore {
29 class GraphicsContext3DPrivate: public TextureMapperPlatformLayer
30 {
31 public:
32     static std::unique_ptr<GraphicsContext3DPrivate> create(GraphicsContext3D*, HostWindow*);
33
34     GraphicsContext3DPrivate(GraphicsContext3D*, HostWindow*);
35     ~GraphicsContext3DPrivate();
36
37     PlatformGraphicsContext3D platformGraphicsContext3D() const;
38     void setContextLostCallback(std::unique_ptr<GraphicsContext3D::ContextLostCallback>);
39     virtual void paintToTextureMapper(TextureMapper*, const FloatRect&, const TransformationMatrix&, float) override;
40     virtual IntSize platformLayerSize() const override;
41     virtual uint32_t copyToGraphicsSurface() override;
42     virtual GraphicsSurfaceToken graphicsSurfaceToken() const override;
43     virtual GraphicsSurface::Flags graphicsSurfaceFlags() const override;
44     void didResizeCanvas(const IntSize&);
45     bool makeContextCurrent() const;
46
47 private:
48     enum PendingOperation {
49         Default = 0x00, // No Pending Operation.
50         CreateSurface = 0x01,
51         Resize = 0x02,
52         DeletePreviousSurface = 0x04
53     };
54
55     typedef unsigned PendingSurfaceOperation;
56
57     bool initialize();
58     void createGraphicsSurface();
59     bool prepareBuffer() const;
60     void releaseResources();
61
62     GraphicsContext3D* m_context;
63     HostWindow* m_hostWindow;
64     std::unique_ptr<GLPlatformContext> m_offScreenContext;
65     std::unique_ptr<GLPlatformSurface> m_offScreenSurface;
66     GraphicsSurfaceToken m_surfaceHandle;
67     RefPtr<GraphicsSurface> m_graphicsSurface;
68     RefPtr<GraphicsSurface> m_previousGraphicsSurface;
69     PendingSurfaceOperation m_surfaceOperation : 3;
70     std::unique_ptr<GraphicsContext3D::ContextLostCallback> m_contextLostCallback;
71     ListHashSet<GC3Denum> m_syntheticErrors;
72     IntSize m_size;
73     IntRect m_targetRect;
74 };
75
76 } // namespace WebCore
77
78 #endif