146be48730333120a7b939116cef075e61c12c703David 'Digit' Turner/*
246be48730333120a7b939116cef075e61c12c703David 'Digit' Turner    SDL - Simple DirectMedia Layer
346be48730333120a7b939116cef075e61c12c703David 'Digit' Turner    Copyright (C) 1997-2004 Sam Lantinga
446be48730333120a7b939116cef075e61c12c703David 'Digit' Turner
546be48730333120a7b939116cef075e61c12c703David 'Digit' Turner    This library is free software; you can redistribute it and/or
646be48730333120a7b939116cef075e61c12c703David 'Digit' Turner    modify it under the terms of the GNU Library General Public
746be48730333120a7b939116cef075e61c12c703David 'Digit' Turner    License as published by the Free Software Foundation; either
846be48730333120a7b939116cef075e61c12c703David 'Digit' Turner    version 2 of the License, or (at your option) any later version.
946be48730333120a7b939116cef075e61c12c703David 'Digit' Turner
1046be48730333120a7b939116cef075e61c12c703David 'Digit' Turner    This library is distributed in the hope that it will be useful,
1146be48730333120a7b939116cef075e61c12c703David 'Digit' Turner    but WITHOUT ANY WARRANTY; without even the implied warranty of
1246be48730333120a7b939116cef075e61c12c703David 'Digit' Turner    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
1346be48730333120a7b939116cef075e61c12c703David 'Digit' Turner    Library General Public License for more details.
1446be48730333120a7b939116cef075e61c12c703David 'Digit' Turner
1546be48730333120a7b939116cef075e61c12c703David 'Digit' Turner    You should have received a copy of the GNU Library General Public
1646be48730333120a7b939116cef075e61c12c703David 'Digit' Turner    License along with this library; if not, write to the Free
1746be48730333120a7b939116cef075e61c12c703David 'Digit' Turner    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
1846be48730333120a7b939116cef075e61c12c703David 'Digit' Turner
1946be48730333120a7b939116cef075e61c12c703David 'Digit' Turner    Sam Lantinga
2046be48730333120a7b939116cef075e61c12c703David 'Digit' Turner    slouken@libsdl.org
2146be48730333120a7b939116cef075e61c12c703David 'Digit' Turner*/
2246be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#include "SDL_config.h"
2346be48730333120a7b939116cef075e61c12c703David 'Digit' Turner
2446be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#ifndef __SDL_PH_VIDEO_H__
2546be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#define __SDL_PH_VIDEO_H__
2646be48730333120a7b939116cef075e61c12c703David 'Digit' Turner
2746be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#include "SDL_mouse.h"
2846be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#include "../SDL_sysvideo.h"
2946be48730333120a7b939116cef075e61c12c703David 'Digit' Turner
3046be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#include <sys/neutrino.h>
3146be48730333120a7b939116cef075e61c12c703David 'Digit' Turner
3246be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#include <Ph.h>
3346be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#include <Pt.h>
3446be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#include <photon/Pg.h>
3546be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#include <photon/PdDirect.h>
3646be48730333120a7b939116cef075e61c12c703David 'Digit' Turner
3746be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#if SDL_VIDEO_OPENGL
3846be48730333120a7b939116cef075e61c12c703David 'Digit' Turner    #if (_NTO_VERSION < 630)
3946be48730333120a7b939116cef075e61c12c703David 'Digit' Turner        #include <photon/PdGL.h>
4046be48730333120a7b939116cef075e61c12c703David 'Digit' Turner    #else
4146be48730333120a7b939116cef075e61c12c703David 'Digit' Turner        #include <GL/qnxgl.h>
4246be48730333120a7b939116cef075e61c12c703David 'Digit' Turner        #include <GL/GLPh.h>
4346be48730333120a7b939116cef075e61c12c703David 'Digit' Turner    #endif /* 6.3.0 */
4446be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#endif /* SDL_VIDEO_OPENGL */
4546be48730333120a7b939116cef075e61c12c703David 'Digit' Turner
4646be48730333120a7b939116cef075e61c12c703David 'Digit' Turner/* Hidden "this" pointer for the video functions */
4746be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#define _THIS	SDL_VideoDevice* this
4846be48730333120a7b939116cef075e61c12c703David 'Digit' Turner
4946be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#define PH_OGL_MAX_ATTRIBS 32
5046be48730333120a7b939116cef075e61c12c703David 'Digit' Turner
5146be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#define SDLPH_PAL_NONE    0x00000000L
5246be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#define SDLPH_PAL_EMULATE 0x00000001L
5346be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#define SDLPH_PAL_SYSTEM  0x00000002L
5446be48730333120a7b939116cef075e61c12c703David 'Digit' Turner
5546be48730333120a7b939116cef075e61c12c703David 'Digit' Turnertypedef struct
5646be48730333120a7b939116cef075e61c12c703David 'Digit' Turner{
5746be48730333120a7b939116cef075e61c12c703David 'Digit' Turner    unsigned char* Y;
5846be48730333120a7b939116cef075e61c12c703David 'Digit' Turner    unsigned char* V;
5946be48730333120a7b939116cef075e61c12c703David 'Digit' Turner    unsigned char* U;
6046be48730333120a7b939116cef075e61c12c703David 'Digit' Turner} FRAMEDATA;
6146be48730333120a7b939116cef075e61c12c703David 'Digit' Turner
6246be48730333120a7b939116cef075e61c12c703David 'Digit' Turner/* Mask values for SDL_ReallocFormat() */
6346be48730333120a7b939116cef075e61c12c703David 'Digit' Turnerstruct ColourMasks
6446be48730333120a7b939116cef075e61c12c703David 'Digit' Turner{
6546be48730333120a7b939116cef075e61c12c703David 'Digit' Turner    Uint32 red;
6646be48730333120a7b939116cef075e61c12c703David 'Digit' Turner    Uint32 green;
6746be48730333120a7b939116cef075e61c12c703David 'Digit' Turner    Uint32 blue;
6846be48730333120a7b939116cef075e61c12c703David 'Digit' Turner    Uint32 alpha;
6946be48730333120a7b939116cef075e61c12c703David 'Digit' Turner    Uint32 bpp;
7046be48730333120a7b939116cef075e61c12c703David 'Digit' Turner};
7146be48730333120a7b939116cef075e61c12c703David 'Digit' Turner
7246be48730333120a7b939116cef075e61c12c703David 'Digit' Turner/* Private display data */
7346be48730333120a7b939116cef075e61c12c703David 'Digit' Turnerstruct SDL_PrivateVideoData
7446be48730333120a7b939116cef075e61c12c703David 'Digit' Turner{
7546be48730333120a7b939116cef075e61c12c703David 'Digit' Turner    PgDisplaySettings_t mode_settings;
7646be48730333120a7b939116cef075e61c12c703David 'Digit' Turner    PtWidget_t *Window;                  /* used to handle input events */
7746be48730333120a7b939116cef075e61c12c703David 'Digit' Turner    PhImage_t *image;	                 /* used to display image       */
7846be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#if SDL_VIDEO_OPENGL
7946be48730333120a7b939116cef075e61c12c703David 'Digit' Turner    #if (_NTO_VERSION < 630)
8046be48730333120a7b939116cef075e61c12c703David 'Digit' Turner        PdOpenGLContext_t* OGLContext;   /* OpenGL context              */
8146be48730333120a7b939116cef075e61c12c703David 'Digit' Turner        void* OGLBuffers;                /* OpenGL buffers (unused)     */
8246be48730333120a7b939116cef075e61c12c703David 'Digit' Turner    #else
8346be48730333120a7b939116cef075e61c12c703David 'Digit' Turner        qnxglc_t* OGLContext;            /* OpenGL context for the 6.3  */
8446be48730333120a7b939116cef075e61c12c703David 'Digit' Turner        qnxgl_bufs_t* OGLBuffers;        /* OpenGL buffers for the 6.3  */
8546be48730333120a7b939116cef075e61c12c703David 'Digit' Turner    #endif /* 630 */
8646be48730333120a7b939116cef075e61c12c703David 'Digit' Turner
8746be48730333120a7b939116cef075e61c12c703David 'Digit' Turner    Uint32 OGLFlags;                     /* OpenGL flags                */
8846be48730333120a7b939116cef075e61c12c703David 'Digit' Turner    Uint32 OGLBPP;                       /* OpenGL bpp                  */
8946be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#endif /* SDL_VIDEO_OPENGL */
9046be48730333120a7b939116cef075e61c12c703David 'Digit' Turner    PgColor_t savedpal[_Pg_MAX_PALETTE];
9146be48730333120a7b939116cef075e61c12c703David 'Digit' Turner    PgColor_t syspalph[_Pg_MAX_PALETTE];
9246be48730333120a7b939116cef075e61c12c703David 'Digit' Turner
9346be48730333120a7b939116cef075e61c12c703David 'Digit' Turner    struct
9446be48730333120a7b939116cef075e61c12c703David 'Digit' Turner    {
9546be48730333120a7b939116cef075e61c12c703David 'Digit' Turner        PdDirectContext_t*    direct_context;
9646be48730333120a7b939116cef075e61c12c703David 'Digit' Turner        PdOffscreenContext_t* offscreen_context;
9746be48730333120a7b939116cef075e61c12c703David 'Digit' Turner        PdOffscreenContext_t* offscreen_backcontext;
9846be48730333120a7b939116cef075e61c12c703David 'Digit' Turner        PhDrawContext_t*      oldDC;
9946be48730333120a7b939116cef075e61c12c703David 'Digit' Turner        uint8_t*              dc_ptr;
10046be48730333120a7b939116cef075e61c12c703David 'Digit' Turner        unsigned char*        CurrentFrameData;
10146be48730333120a7b939116cef075e61c12c703David 'Digit' Turner        unsigned char*        FrameData0;
10246be48730333120a7b939116cef075e61c12c703David 'Digit' Turner        unsigned char*        FrameData1;
10346be48730333120a7b939116cef075e61c12c703David 'Digit' Turner        Uint32                current;
10446be48730333120a7b939116cef075e61c12c703David 'Digit' Turner        Uint32                flags;
10546be48730333120a7b939116cef075e61c12c703David 'Digit' Turner    } ocimage;
10646be48730333120a7b939116cef075e61c12c703David 'Digit' Turner
10746be48730333120a7b939116cef075e61c12c703David 'Digit' Turner    PgHWCaps_t graphics_card_caps;  /* Graphics card caps at the moment of start   */
10846be48730333120a7b939116cef075e61c12c703David 'Digit' Turner    PgVideoModeInfo_t desktop_mode; /* Current desktop video mode information      */
10946be48730333120a7b939116cef075e61c12c703David 'Digit' Turner    int old_video_mode;             /* Stored mode before fullscreen switch        */
11046be48730333120a7b939116cef075e61c12c703David 'Digit' Turner    int old_refresh_rate;           /* Stored refresh rate befor fullscreen switch */
11146be48730333120a7b939116cef075e61c12c703David 'Digit' Turner
11246be48730333120a7b939116cef075e61c12c703David 'Digit' Turner    int mouse_relative;
11346be48730333120a7b939116cef075e61c12c703David 'Digit' Turner    WMcursor* BlankCursor;
11446be48730333120a7b939116cef075e61c12c703David 'Digit' Turner    uint32_t videomode_emulatemode;
11546be48730333120a7b939116cef075e61c12c703David 'Digit' Turner
11646be48730333120a7b939116cef075e61c12c703David 'Digit' Turner    Uint32 visualbpp;	            /* current visual bpp                          */
11746be48730333120a7b939116cef075e61c12c703David 'Digit' Turner    Uint32 desktopbpp;              /* bpp of desktop at the moment of start       */
11846be48730333120a7b939116cef075e61c12c703David 'Digit' Turner    Uint32 desktoppal;              /* palette mode emulation or system            */
11946be48730333120a7b939116cef075e61c12c703David 'Digit' Turner
12046be48730333120a7b939116cef075e61c12c703David 'Digit' Turner    int currently_fullscreen;
12146be48730333120a7b939116cef075e61c12c703David 'Digit' Turner    int currently_hided;            /* 1 - window hided (minimazed), 0 - normal    */
12246be48730333120a7b939116cef075e61c12c703David 'Digit' Turner    int currently_maximized;        /* 1 - window hided (minimazed), 0 - normal    */
12346be48730333120a7b939116cef075e61c12c703David 'Digit' Turner
12446be48730333120a7b939116cef075e61c12c703David 'Digit' Turner    PhEvent_t* event;
12546be48730333120a7b939116cef075e61c12c703David 'Digit' Turner    SDL_Overlay* overlay;
12646be48730333120a7b939116cef075e61c12c703David 'Digit' Turner};
12746be48730333120a7b939116cef075e61c12c703David 'Digit' Turner
12846be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#define mode_settings         (this->hidden->mode_settings)
12946be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#define window	              (this->hidden->Window)
13046be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#define SDL_Image             (this->hidden->image)
13146be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#define OCImage               (this->hidden->ocimage)
13246be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#define old_video_mode        (this->hidden->old_video_mode)
13346be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#define old_refresh_rate      (this->hidden->old_refresh_rate)
13446be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#define graphics_card_caps    (this->hidden->graphics_card_caps)
13546be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#define desktopbpp            (this->hidden->desktopbpp)
13646be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#define visualbpp             (this->hidden->visualbpp)
13746be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#define desktoppal            (this->hidden->desktoppal)
13846be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#define savedpal              (this->hidden->savedpal)
13946be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#define syspalph              (this->hidden->syspalph)
14046be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#define currently_fullscreen  (this->hidden->currently_fullscreen)
14146be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#define currently_hided       (this->hidden->currently_hided)
14246be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#define currently_maximized   (this->hidden->currently_maximized)
14346be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#define phevent               (this->hidden->event)
14446be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#define current_overlay       (this->hidden->overlay)
14546be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#define desktop_mode          (this->hidden->desktop_mode)
14646be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#define mouse_relative        (this->hidden->mouse_relative)
14746be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#define SDL_BlankCursor       (this->hidden->BlankCursor)
14846be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#define videomode_emulatemode (this->hidden->videomode_emulatemode)
14946be48730333120a7b939116cef075e61c12c703David 'Digit' Turner
15046be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#if SDL_VIDEO_OPENGL
15146be48730333120a7b939116cef075e61c12c703David 'Digit' Turner     #define oglctx               (this->hidden->OGLContext)
15246be48730333120a7b939116cef075e61c12c703David 'Digit' Turner     #define oglbuffers           (this->hidden->OGLBuffers)
15346be48730333120a7b939116cef075e61c12c703David 'Digit' Turner     #define oglflags             (this->hidden->OGLFlags)
15446be48730333120a7b939116cef075e61c12c703David 'Digit' Turner     #define oglbpp               (this->hidden->OGLBPP)
15546be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#endif /* SDL_VIDEO_OPENGL */
15646be48730333120a7b939116cef075e61c12c703David 'Digit' Turner
15746be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#endif /* __SDL_PH_VIDEO_H__ */
158