/*!****************************************************************************
@file LinuxX11/PVRShellOS.h
@ingroup OS_LinuxX11
@copyright Copyright (c) Imagination Technologies Limited.
@brief Initialization for the shell for LinuxX11.
@details Makes programming for 3D APIs easier by wrapping surface
initialization, Texture allocation and other functions for use by a demo.
******************************************************************************/
#ifndef _PVRSHELLOS_
#define _PVRSHELLOS_
#include "X11/Xlib.h"
#include "X11/Xutil.h"
#ifdef BUILD_OGL
#include "X11/extensions/xf86vmode.h"
#endif
#define PVRSHELL_DIR_SYM '/'
#define _stricmp strcasecmp
/*!
@addtogroup OS_LinuxX11
@brief LinuxX11 OS
@details The following table illustrates how key codes are mapped in LinuxX11:
<table>
<tr><th> Key code </th><th> nLastKeyPressed (PVRShell) </th></tr>
<tr><td> Esc </td><td> PVRShellKeyNameQUIT </td></tr>
<tr><td> F11 </td><td> PVRShellKeyNameScreenshot </td></tr>
<tr><td> Enter </td><td> PVRShellKeyNameSELECT </td></tr>
<tr><td> '1' </td><td> PVRShellKeyNameACTION1 </td></tr>
<tr><td> '2' </td><td> PVRShellKeyNameACTION2 </td></tr>
<tr><td> Up arrow </td><td> m_eKeyMapUP </td></tr>
<tr><td> Down arrow </td><td> m_eKeyMapDOWN </td></tr>
<tr><td> Left arrow </td><td> m_eKeyMapLEFT </td></tr>
<tr><td> Right arrow </td><td> m_eKeyMapRIGHT </td></tr>
</table>
@{
*/
/*!***************************************************************************
@class PVRShellInitOS
@brief Interface with specific Operative System.
*****************************************************************************/
class PVRShellInitOS
{
public:
Display* m_X11Display;
long m_X11Screen;
XVisualInfo* m_X11Visual;
Colormap m_X11ColorMap;
Window m_X11Window;
timeval m_StartTime;
#ifdef BUILD_OGL
XF86VidModeModeLine m_OriginalMode; // modeline that was active at the starting point of this aplication
int m_i32OriginalModeDotClock;
#endif
// Pixmap support: variables for the pixmap
Pixmap m_X11Pixmap;
GC m_X11GC;
unsigned int m_u32ButtonState; // 1 = left, 2 = right, 4 = middle
public:
int OpenX11Window(const PVRShell &shell);
void CloseX11Window();
};
/*! @} */
#endif /* _PVRSHELLOS_ */
/*****************************************************************************
End of file (PVRShellOS.h)
*****************************************************************************/