1/*
2    SDL - Simple DirectMedia Layer
3    Copyright (C) 1997-2012 Sam Lantinga
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
16    License along with this library; if not, write to the Free
17    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
18
19    Sam Lantinga
20    slouken@libsdl.org
21*/
22#include "SDL_config.h"
23
24#ifndef __SDL_PH_VIDEO_H__
25#define __SDL_PH_VIDEO_H__
26
27#include "SDL_mouse.h"
28#include "../SDL_sysvideo.h"
29
30#include <sys/neutrino.h>
31
32#include <Ph.h>
33#include <Pt.h>
34#include <photon/Pg.h>
35#include <photon/PdDirect.h>
36
37#if SDL_VIDEO_OPENGL
38    #if (_NTO_VERSION < 630)
39        #include <photon/PdGL.h>
40    #else
41        #include <GL/qnxgl.h>
42        #include <GL/GLPh.h>
43    #endif /* 6.3.0 */
44#endif /* SDL_VIDEO_OPENGL */
45
46/* Hidden "this" pointer for the video functions */
47#define _THIS	SDL_VideoDevice* this
48
49#define PH_OGL_MAX_ATTRIBS 32
50
51#define SDLPH_PAL_NONE    0x00000000L
52#define SDLPH_PAL_EMULATE 0x00000001L
53#define SDLPH_PAL_SYSTEM  0x00000002L
54
55typedef struct
56{
57    unsigned char* Y;
58    unsigned char* V;
59    unsigned char* U;
60} FRAMEDATA;
61
62/* Mask values for SDL_ReallocFormat() */
63struct ColourMasks
64{
65    Uint32 red;
66    Uint32 green;
67    Uint32 blue;
68    Uint32 alpha;
69    Uint32 bpp;
70};
71
72/* Private display data */
73struct SDL_PrivateVideoData
74{
75    PgDisplaySettings_t mode_settings;
76    PtWidget_t *Window;                  /* used to handle input events */
77    PhImage_t *image;	                 /* used to display image       */
78#if SDL_VIDEO_OPENGL
79    #if (_NTO_VERSION < 630)
80        PdOpenGLContext_t* OGLContext;   /* OpenGL context              */
81        void* OGLBuffers;                /* OpenGL buffers (unused)     */
82    #else
83        qnxglc_t* OGLContext;            /* OpenGL context for the 6.3  */
84        qnxgl_bufs_t* OGLBuffers;        /* OpenGL buffers for the 6.3  */
85    #endif /* 630 */
86
87    Uint32 OGLFlags;                     /* OpenGL flags                */
88    Uint32 OGLBPP;                       /* OpenGL bpp                  */
89#endif /* SDL_VIDEO_OPENGL */
90    PgColor_t savedpal[_Pg_MAX_PALETTE];
91    PgColor_t syspalph[_Pg_MAX_PALETTE];
92
93    struct
94    {
95        PdDirectContext_t*    direct_context;
96        PdOffscreenContext_t* offscreen_context;
97        PdOffscreenContext_t* offscreen_backcontext;
98        PhDrawContext_t*      oldDC;
99        uint8_t*              dc_ptr;
100        unsigned char*        CurrentFrameData;
101        unsigned char*        FrameData0;
102        unsigned char*        FrameData1;
103        Uint32                current;
104        Uint32                flags;
105    } ocimage;
106
107    PgHWCaps_t graphics_card_caps;  /* Graphics card caps at the moment of start   */
108    PgVideoModeInfo_t desktop_mode; /* Current desktop video mode information      */
109    int old_video_mode;             /* Stored mode before fullscreen switch        */
110    int old_refresh_rate;           /* Stored refresh rate befor fullscreen switch */
111
112    int mouse_relative;
113    WMcursor* BlankCursor;
114    uint32_t videomode_emulatemode;
115
116    Uint32 visualbpp;	            /* current visual bpp                          */
117    Uint32 desktopbpp;              /* bpp of desktop at the moment of start       */
118    Uint32 desktoppal;              /* palette mode emulation or system            */
119
120    int currently_fullscreen;
121    int currently_hided;            /* 1 - window hided (minimazed), 0 - normal    */
122    int currently_maximized;        /* 1 - window hided (minimazed), 0 - normal    */
123
124    PhEvent_t* event;
125    SDL_Overlay* overlay;
126};
127
128#define mode_settings         (this->hidden->mode_settings)
129#define window	              (this->hidden->Window)
130#define SDL_Image             (this->hidden->image)
131#define OCImage               (this->hidden->ocimage)
132#define old_video_mode        (this->hidden->old_video_mode)
133#define old_refresh_rate      (this->hidden->old_refresh_rate)
134#define graphics_card_caps    (this->hidden->graphics_card_caps)
135#define desktopbpp            (this->hidden->desktopbpp)
136#define visualbpp             (this->hidden->visualbpp)
137#define desktoppal            (this->hidden->desktoppal)
138#define savedpal              (this->hidden->savedpal)
139#define syspalph              (this->hidden->syspalph)
140#define currently_fullscreen  (this->hidden->currently_fullscreen)
141#define currently_hided       (this->hidden->currently_hided)
142#define currently_maximized   (this->hidden->currently_maximized)
143#define phevent               (this->hidden->event)
144#define current_overlay       (this->hidden->overlay)
145#define desktop_mode          (this->hidden->desktop_mode)
146#define mouse_relative        (this->hidden->mouse_relative)
147#define SDL_BlankCursor       (this->hidden->BlankCursor)
148#define videomode_emulatemode (this->hidden->videomode_emulatemode)
149
150#if SDL_VIDEO_OPENGL
151     #define oglctx               (this->hidden->OGLContext)
152     #define oglbuffers           (this->hidden->OGLBuffers)
153     #define oglflags             (this->hidden->OGLFlags)
154     #define oglbpp               (this->hidden->OGLBPP)
155#endif /* SDL_VIDEO_OPENGL */
156
157#endif /* __SDL_PH_VIDEO_H__ */
158