remove include of GLES2/gl2extimg.h, not required on tg2
[xbmc:xbmc-antiquated.git] / trunk / guilib / system.h
1 #pragma once
2
3 /*
4  *      Copyright (C) 2005-2008 Team XBMC
5  *      http://www.xbmc.org
6  *
7  *  This Program is free software; you can redistribute it and/or modify
8  *  it under the terms of the GNU General Public License as published by
9  *  the Free Software Foundation; either version 2, or (at your option)
10  *  any later version.
11  *
12  *  This Program is distributed in the hope that it will be useful,
13  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
14  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15  *  GNU General Public License for more details.
16  *
17  *  You should have received a copy of the GNU General Public License
18  *  along with XBMC; see the file COPYING.  If not, write to
19  *  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
20  *  http://www.gnu.org/copyleft/gpl.html
21  *
22  */
23
24 #if defined(HAVE_CONFIG_H) && !defined(_WIN32)
25 #include "../config.h"
26 #endif
27
28 /*****************
29  * All platforms
30  *****************/
31 #ifndef HAS_SDL
32 #define HAS_SDL
33 #endif
34
35 #define HAS_DVD_DRIVE
36 #define HAS_DVD_SWSCALE
37 #define HAS_DVDPLAYER
38 #define HAS_EVENT_SERVER
39 #define HAS_KARAOKE
40 #define HAS_SCREENSAVER
41 #define HAS_PYTHON
42 #define HAS_SHOUTCAST
43 #define HAS_SYSINFO
44 #define HAS_UPNP
45 #define HAS_VIDEO_PLAYBACK
46 #define HAS_VISUALISATION
47 #define HAS_WEB_SERVER
48
49 #define HAS_AC3_CODEC
50 #define HAS_DTS_CODEC
51 #define HAS_CDDA_RIPPER
52 #ifdef HAVE_ASAP_CODEC
53 #define HAS_ASAP_CODEC
54 #endif
55
56 #define HAS_FILESYSTEM
57 #define HAS_FILESYSTEM_SMB
58 #define HAS_FILESYSTEM_CDDA
59 #define HAS_FILESYSTEM_RTV
60 #define HAS_FILESYSTEM_DAAP
61 #define HAS_FILESYSTEM_SAP
62 #define HAS_FILESYSTEM_VTP
63 #define HAS_FILESYSTEM_HTSP
64 #define HAS_FILESYSTEM_MMS
65 #define HAS_CCXSTREAM
66
67 /**********************
68  * Non-free Components
69  **********************/
70
71 #if defined(_LINUX) || defined(__APPLE__)
72   #if defined(HAVE_XBMC_NONFREE)
73     #define HAS_RAR
74   #endif
75 #else
76   #define HAS_RAR
77 #endif
78
79 /*****************
80  * Win32 Specific
81  *****************/
82
83 #ifdef _WIN32
84 #define HAS_SDL_JOYSTICK
85 #define HAS_WIN32_NETWORK
86 #define HAS_IRSERVERSUITE
87 #define HAS_AUDIO
88 #endif
89
90 /*****************
91  * Mac Specific
92  *****************/
93
94 #ifdef __APPLE__
95 #define HAS_ZEROCONF
96 #define HAS_GL
97 #define HAS_LINUX_NETWORK
98 #define HAS_SDL_AUDIO
99 #define HAS_SDL_OPENGL
100 #define HAS_SDL_WIN_EVENTS
101 #define HAS_LIBBDNAV
102 #endif
103
104 /*****************
105  * Linux Specific
106  *****************/
107
108 #if defined(_LINUX) && !defined(__APPLE__)
109 #ifndef HAS_SDL_OPENGL
110 #define HAS_SDL_OPENGL
111 #endif
112 #if defined(HAVE_LIBAVAHI_COMMON) && defined(HAVE_LIBAVAHI_CLIENT)
113 #define HAS_ZEROCONF
114 #define HAS_AVAHI
115 #endif
116 #define HAS_LCD
117 #define HAS_HAL
118 #define HAS_DBUS
119 #define HAS_DBUS_SERVER
120 #define HAS_GL
121 #define HAS_GLX
122 #define HAS_LINUX_NETWORK
123 #define HAS_SDL_AUDIO
124 #define HAS_LIRC
125 #define HAS_SDL_WIN_EVENTS
126 #ifdef HAVE_LIBPULSE
127 #define HAS_PULSEAUDIO
128 #endif
129 #ifdef HAVE_LIBXRANDR
130 #define HAS_XRANDR
131 #endif
132 #define HAS_LIBBDNAV
133 #endif
134
135 /*****************
136  * SVN revision
137  *****************/
138
139 #ifdef __APPLE__
140 #include "../svn_revision.h"
141 #endif
142
143 #ifndef SVN_REV
144 #define SVN_REV "Unknown"
145 #endif
146
147 /****************************************
148  * Additional platform specific includes
149  ****************************************/
150
151 #ifdef _WIN32
152 #if !(defined(_WINSOCKAPI_) || defined(_WINSOCK_H))
153 #include <winsock2.h>
154 #endif
155 #include <windows.h>
156 #define DIRECTINPUT_VERSION 0x0800
157 #include "mmsystem.h"
158 #include "DInput.h"
159 #include "DSound.h"
160 #define DSSPEAKER_USE_DEFAULT DSSPEAKER_STEREO
161 #define LPDIRECTSOUND8 LPDIRECTSOUND
162 #undef GetFreeSpace
163 #include "PlatformInclude.h"
164 #include "D3D9.h"   // On Win32, we're always using DirectX for something, whether it be the actual rendering
165 #include "D3DX9.h"  // or the reference video clock.
166 #ifdef HAS_SDL
167 #include "SDL\SDL.h"
168 #endif
169 #endif
170
171 #ifdef _LINUX
172 #include <unistd.h>
173 #include <time.h>
174 #include <sys/time.h>
175 #include <netdb.h>
176 #include <arpa/inet.h>
177 #include <netinet/in.h>
178 #include <sys/socket.h>
179 #include <sys/types.h>
180 #include <errno.h>
181 #include "PlatformInclude.h"
182 #endif
183
184 // ARM does not support certain features... disable them here!
185 #ifdef _ARMEL
186 #undef HAS_AVAHI
187 #undef HAS_ZEROCONF
188 #undef HAS_VISUALISATION
189 #undef HAS_FILESYSTEM_HTSP
190 #endif
191
192 // EGL detected. Dont use GLX!
193 #ifdef HAVE_LIBEGL
194 #undef HAS_GLX
195 #define HAS_EGL
196 #endif
197
198 // GLES2.0 detected. Dont use GL!
199 #ifdef HAVE_LIBGLESV2
200 #undef HAS_GL
201 #define HAS_GLES 2
202 #endif
203
204 // GLES1.0 detected. Dont use GL!
205 #ifdef HAVE_LIBGLES
206 #undef HAS_GL
207 #define HAS_GLES 1
208 #endif
209
210 #ifdef HAS_GL
211 #ifdef _WIN32
212 #include "GL/glew.h"
213 #include <GL/gl.h>
214 #include <GL/glu.h>
215 //#include <GL/wglext.h>
216 #elif defined(__APPLE__)
217 #include <GL/glew.h>
218 #include <OpenGL/gl.h>
219 #elif defined(_LINUX)
220 #include <GL/glew.h>
221 #include <GL/gl.h>
222 #endif
223 #endif
224
225 #if HAS_GLES == 2
226 #ifdef _ARMEL   // PowerVR SGX Header
227 #include <GLES2/gl2.h>
228 #include <GLES2/gl2ext.h>
229 //#include <GLES2/gl2extimg.h>
230 #else
231 #include <GLES2/gl2.h>
232 #include <GLES2/gl2ext.h>
233 #endif
234 #endif
235
236 #define SAFE_DELETE(p)       { delete (p);     (p)=NULL; }
237 #define SAFE_DELETE_ARRAY(p) { delete[] (p);   (p)=NULL; }
238 #define SAFE_RELEASE(p)      { if(p) { (p)->Release(); (p)=NULL; } }
239
240 // Useful pixel colour manipulation macros
241 #define GET_A(color)            ((color >> 24) & 0xFF)
242 #define GET_R(color)            ((color >> 16) & 0xFF)
243 #define GET_G(color)            ((color >>  8) & 0xFF)
244 #define GET_B(color)            ((color >>  0) & 0xFF)
245