87d32d6ba96a724de34e0448f80566e5d49410a5
[profile/ivi/layer-management.git] / LayerManagerPlugins / Renderers / Graphic / include / GraphicSystems / GLESGraphicSystem.h
1 /***************************************************************************
2 *
3 * Copyright 2010 BMW Car IT GmbH
4 *
5 *
6 * Licensed under the Apache License, Version 2.0 (the "License");
7 * you may not use this file except in compliance with the License.
8 * You may obtain a copy of the License at
9 *
10 *               http://www.apache.org/licenses/LICENSE-2.0
11 *
12 * Unless required by applicable law or agreed to in writing, software
13 * distributed under the License is distributed on an "AS IS" BASIS,
14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 * See the License for the specific language governing permissions and
16 * limitations under the License.
17 *
18 ****************************************************************************/
19
20 #ifndef _GLESGRAPHICSYSTEM_H_
21 #define _GLESGRAPHICSYSTEM_H_
22
23 #include "GraphicSystems/BaseGraphicSystem.h"
24 #include "ShaderProgramFactory.h"
25 #include "EGL/egl.h"
26 #include "Log.h"
27 #include "Shader.h"
28 /* uncomment if layer drawing needed */
29 /* #define DRAW_LAYER_DEBUG */
30 class GLESGraphicsystem : public BaseGraphicSystem {
31 public:
32         GLESGraphicsystem(PfnShaderProgramCreator shaderProgram, ITextureBinder* binder);
33
34         bool init(void* display, void* WindowID,int WindowHeight, int WindowWidth);
35         void clearBackground();
36         void swapBuffers();
37         void drawSurface(Layer* currentLayer, Surface* surface);
38         bool initOpenGLES(EGLint displayWidth, EGLint displayHeight);
39         void resize(EGLint displayWidth, EGLint displayHeight);
40         void doScreenShot(std::string fileToSave);
41
42         PfnShaderProgramCreator                         m_shaderCreatorFunc;
43         EGLConfig                                                       m_eglConfig;
44         EGLContext                                                      m_eglContext;
45         EGLSurface                                                      m_eglSurface;
46         EGLDisplay                                                      m_eglDisplay;
47         uint                                                            m_vbo;
48         EGLint                                                          m_displayWidth;
49         EGLint                                                          m_displayHeight;
50         EGLBoolean                                                      m_blendingStatus;
51         Shader*                                                         m_defaultShader;
52 #ifdef DRAW_LAYER_DEBUG
53         Shader*                                                         m_layerShader;
54 #endif
55 private:
56         void saveScreenShot();
57         std::string screenShotFile;
58         bool takescreenshot;
59 };
60
61 #endif /* _GLESGRAPHICSYSTEM_H_ */