[ARM] Added neccessary GLES, EGL and other arm related files
[xbmc:xbmc-antiquated.git] / trunk / guilib / MatrixGLES.h
1 /*
2 *      Copyright (C) 2005-2008 Team XBMC
3 *      http://www.xbmc.org
4 *
5 *  This Program is free software; you can redistribute it and/or modify
6 *  it under the terms of the GNU General Public License as published by
7 *  the Free Software Foundation; either version 2, or (at your option)
8 *  any later version.
9 *
10 *  This Program 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
13 *  GNU General Public License for more details.
14 *
15 *  You should have received a copy of the GNU General Public License
16 *  along with XBMC; see the file COPYING.  If not, write to
17 *  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
18 *  http://www.gnu.org/copyleft/gpl.html
19 *
20 */
21
22 #ifndef MATRIX_GLES_H
23 #define MATRIX_GLES_H
24
25 #pragma once
26
27 #include <vector>
28
29 using namespace std;
30
31 enum EMATRIXMODE
32 {
33   MM_PROJECTION = 0,
34   MM_MODELVIEW,
35   MM_TEXTURE,
36   MM_MATRIXSIZE  // Must be last! used for size of matrices
37 };
38
39 class CMatrixGLES
40 {
41 public:
42   CMatrixGLES();
43   ~CMatrixGLES();
44   
45   GLfloat* GetMatrix(EMATRIXMODE mode);
46
47   void MatrixMode(EMATRIXMODE mode);
48   void PushMatrix();
49   void PopMatrix();
50   void LoadIdentity();
51   void Ortho(GLfloat l, GLfloat r, GLfloat b, GLfloat t, GLfloat n, GLfloat f);
52   void Ortho2D(GLfloat l, GLfloat r, GLfloat b, GLfloat t);
53   void Frustum(GLfloat l, GLfloat r, GLfloat b, GLfloat t, GLfloat n, GLfloat f);
54   void Translatef(GLfloat x, GLfloat y, GLfloat z);
55   void Scalef(GLfloat x, GLfloat y, GLfloat z);
56   void Rotatef(GLfloat angle, GLfloat x, GLfloat y, GLfloat z);
57   void MultMatrixf(const GLfloat *matrix);
58   void LookAt(GLfloat eyex, GLfloat eyey, GLfloat eyez, GLfloat centerx, GLfloat centery, GLfloat centerz, GLfloat upx, GLfloat upy, GLfloat upz);
59   void PrintMatrix(void);
60
61 protected:
62   vector<GLfloat*> m_matrices[(int)MM_MATRIXSIZE];
63   GLfloat *m_pMatrix;
64   EMATRIXMODE m_matrixMode;
65 };
66
67 extern CMatrixGLES g_matrices;
68
69 #endif // MATRIX_GLES_H