146be48730333120a7b939116cef075e61c12c703David 'Digit' Turner/* 246be48730333120a7b939116cef075e61c12c703David 'Digit' Turner SDL - Simple DirectMedia Layer 346be48730333120a7b939116cef075e61c12c703David 'Digit' Turner Copyright (C) 1997-2006 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 Lesser General Public 746be48730333120a7b939116cef075e61c12c703David 'Digit' Turner License as published by the Free Software Foundation; either 846be48730333120a7b939116cef075e61c12c703David 'Digit' Turner version 2.1 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 Lesser General Public License for more details. 1446be48730333120a7b939116cef075e61c12c703David 'Digit' Turner 1546be48730333120a7b939116cef075e61c12c703David 'Digit' Turner You should have received a copy of the GNU Lesser General Public 1646be48730333120a7b939116cef075e61c12c703David 'Digit' Turner License along with this library; if not, write to the Free Software 1746be48730333120a7b939116cef075e61c12c703David 'Digit' Turner Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 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_gemvideo_h 2546be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#define _SDL_gemvideo_h 2646be48730333120a7b939116cef075e61c12c703David 'Digit' Turner 2746be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#include "SDL_mutex.h" 2846be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#include "../SDL_sysvideo.h" 2946be48730333120a7b939116cef075e61c12c703David 'Digit' Turner 3046be48730333120a7b939116cef075e61c12c703David 'Digit' Turner/* The implementation dependent data for the window manager cursor */ 3146be48730333120a7b939116cef075e61c12c703David 'Digit' Turnerstruct WMcursor { 3246be48730333120a7b939116cef075e61c12c703David 'Digit' Turner MFORM *mform_p; 3346be48730333120a7b939116cef075e61c12c703David 'Digit' Turner}; 3446be48730333120a7b939116cef075e61c12c703David 'Digit' Turner 3546be48730333120a7b939116cef075e61c12c703David 'Digit' Turner/* Hidden "this" pointer for the video functions */ 3646be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#define _THIS SDL_VideoDevice *this 3746be48730333120a7b939116cef075e61c12c703David 'Digit' Turner 3846be48730333120a7b939116cef075e61c12c703David 'Digit' Turner/* Functions prototypes */ 3946be48730333120a7b939116cef075e61c12c703David 'Digit' Turnervoid GEM_wind_redraw(_THIS, int winhandle, short *inside); 4046be48730333120a7b939116cef075e61c12c703David 'Digit' Turner 4146be48730333120a7b939116cef075e61c12c703David 'Digit' Turner/* Private display data */ 4246be48730333120a7b939116cef075e61c12c703David 'Digit' Turner 4346be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#define B2S_C2P_1TO2 (1<<0) /* C2P convert buffer 1 to buffer 2 */ 4446be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#define B2S_C2P_1TOS (1<<1) /* C2P convert buffer 1 to screen */ 4546be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#define B2S_VROCPYFM_1TOS (1<<2) /* vro_cpyfm() buffer 1 to screen */ 4646be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#define B2S_VROCPYFM_2TOS (1<<3) /* vro_cpyfm() buffer 2 to screen */ 4746be48730333120a7b939116cef075e61c12c703David 'Digit' Turner 4846be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#define SDL_NUMMODES 1 /* Fullscreen */ 4946be48730333120a7b939116cef075e61c12c703David 'Digit' Turner 5046be48730333120a7b939116cef075e61c12c703David 'Digit' Turnerstruct SDL_PrivateVideoData { 5146be48730333120a7b939116cef075e61c12c703David 'Digit' Turner Uint16 buf2scr_ops; /* Operations to get buffer to screen */ 5246be48730333120a7b939116cef075e61c12c703David 'Digit' Turner void *buffer1; /* Our shadow buffers */ 5346be48730333120a7b939116cef075e61c12c703David 'Digit' Turner void *buffer2; 5446be48730333120a7b939116cef075e61c12c703David 'Digit' Turner 5546be48730333120a7b939116cef075e61c12c703David 'Digit' Turner /* VDI infos */ 5646be48730333120a7b939116cef075e61c12c703David 'Digit' Turner short vdi_handle; /* VDI handle */ 5746be48730333120a7b939116cef075e61c12c703David 'Digit' Turner short full_w, full_h; /* Fullscreen size */ 5846be48730333120a7b939116cef075e61c12c703David 'Digit' Turner short bpp; /* Colour depth */ 5946be48730333120a7b939116cef075e61c12c703David 'Digit' Turner short pixelsize; /* Bytes per pixel */ 6046be48730333120a7b939116cef075e61c12c703David 'Digit' Turner short old_numcolors; /* Number of colors in saved palette */ 6146be48730333120a7b939116cef075e61c12c703David 'Digit' Turner Uint16 pitch; /* Line length */ 6246be48730333120a7b939116cef075e61c12c703David 'Digit' Turner Uint16 format; /* Screen format */ 6346be48730333120a7b939116cef075e61c12c703David 'Digit' Turner void *screen; /* Screen address */ 6446be48730333120a7b939116cef075e61c12c703David 'Digit' Turner Uint32 red, green, blue, alpha; /* Screen components */ 6546be48730333120a7b939116cef075e61c12c703David 'Digit' Turner Uint32 screensize; 6646be48730333120a7b939116cef075e61c12c703David 'Digit' Turner short blit_coords[8]; /* Coordinates for bitblt */ 6746be48730333120a7b939116cef075e61c12c703David 'Digit' Turner MFDB src_mfdb, dst_mfdb; /* VDI MFDB for bitblt */ 6846be48730333120a7b939116cef075e61c12c703David 'Digit' Turner Uint16 old_palette[256][3]; /* Saved current palette */ 6946be48730333120a7b939116cef075e61c12c703David 'Digit' Turner Uint16 cur_palette[256][3]; /* SDL application palette */ 7046be48730333120a7b939116cef075e61c12c703David 'Digit' Turner /* Function to set/restore palette */ 7146be48730333120a7b939116cef075e61c12c703David 'Digit' Turner void (*setpalette)(_THIS, Uint16 newpal[256][3]); 7246be48730333120a7b939116cef075e61c12c703David 'Digit' Turner 7346be48730333120a7b939116cef075e61c12c703David 'Digit' Turner /* GEM infos */ 7446be48730333120a7b939116cef075e61c12c703David 'Digit' Turner short desk_x, desk_y; /* Desktop properties */ 7546be48730333120a7b939116cef075e61c12c703David 'Digit' Turner short desk_w, desk_h; 7646be48730333120a7b939116cef075e61c12c703David 'Digit' Turner short win_handle; /* Our window handle */ 7746be48730333120a7b939116cef075e61c12c703David 'Digit' Turner int window_type; /* Window type */ 7846be48730333120a7b939116cef075e61c12c703David 'Digit' Turner const char *title_name; /* Window title */ 7946be48730333120a7b939116cef075e61c12c703David 'Digit' Turner const char *icon_name; /* Icon title */ 8046be48730333120a7b939116cef075e61c12c703David 'Digit' Turner short version; /* AES version */ 8146be48730333120a7b939116cef075e61c12c703David 'Digit' Turner short wfeatures; /* AES window features */ 8246be48730333120a7b939116cef075e61c12c703David 'Digit' Turner SDL_bool refresh_name; /* Change window title ? */ 8346be48730333120a7b939116cef075e61c12c703David 'Digit' Turner SDL_bool window_fulled; /* Window maximized ? */ 8446be48730333120a7b939116cef075e61c12c703David 'Digit' Turner SDL_bool mouse_relative; /* Report relative mouse movement */ 8546be48730333120a7b939116cef075e61c12c703David 'Digit' Turner SDL_bool locked; /* AES locked for fullscreen ? */ 8646be48730333120a7b939116cef075e61c12c703David 'Digit' Turner SDL_bool lock_redraw; /* Prevent redraw till buffers are setup */ 8746be48730333120a7b939116cef075e61c12c703David 'Digit' Turner short message[8]; /* To self-send an AES message */ 8846be48730333120a7b939116cef075e61c12c703David 'Digit' Turner void *menubar; /* Menu bar save buffer when going fullscreen */ 8946be48730333120a7b939116cef075e61c12c703David 'Digit' Turner SDL_bool use_dev_mouse; /* Use /dev/mouse ? */ 9046be48730333120a7b939116cef075e61c12c703David 'Digit' Turner WMcursor *cursor; /* To restore cursor when leaving/entering window */ 9146be48730333120a7b939116cef075e61c12c703David 'Digit' Turner 9246be48730333120a7b939116cef075e61c12c703David 'Digit' Turner SDL_bool fullscreen; /* Fullscreen or windowed mode ? */ 9346be48730333120a7b939116cef075e61c12c703David 'Digit' Turner SDL_Rect *SDL_modelist[SDL_NUMMODES+1]; /* Mode list */ 9446be48730333120a7b939116cef075e61c12c703David 'Digit' Turner SDL_Surface *icon; /* The icon */ 9546be48730333120a7b939116cef075e61c12c703David 'Digit' Turner}; 9646be48730333120a7b939116cef075e61c12c703David 'Digit' Turner 9746be48730333120a7b939116cef075e61c12c703David 'Digit' Turner/* Hidden structure -> variables names */ 9846be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#define VDI_handle (this->hidden->vdi_handle) 9946be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#define VDI_w (this->hidden->full_w) 10046be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#define VDI_h (this->hidden->full_h) 10146be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#define VDI_bpp (this->hidden->bpp) 10246be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#define VDI_pixelsize (this->hidden->pixelsize) 10346be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#define VDI_oldnumcolors (this->hidden->old_numcolors) 10446be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#define VDI_oldpalette (this->hidden->old_palette) 10546be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#define VDI_curpalette (this->hidden->cur_palette) 10646be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#define VDI_setpalette (this->hidden->setpalette) 10746be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#define VDI_pitch (this->hidden->pitch) 10846be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#define VDI_format (this->hidden->format) 10946be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#define VDI_screen (this->hidden->screen) 11046be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#define VDI_redmask (this->hidden->red) 11146be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#define VDI_greenmask (this->hidden->green) 11246be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#define VDI_bluemask (this->hidden->blue) 11346be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#define VDI_alphamask (this->hidden->alpha) 11446be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#define VDI_screensize (this->hidden->screensize) 11546be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#define VDI_src_mfdb (this->hidden->src_mfdb) 11646be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#define VDI_dst_mfdb (this->hidden->dst_mfdb) 11746be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#define VDI_blit_coords (this->hidden->blit_coords) 11846be48730333120a7b939116cef075e61c12c703David 'Digit' Turner 11946be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#define GEM_desk_x (this->hidden->desk_x) 12046be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#define GEM_desk_y (this->hidden->desk_y) 12146be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#define GEM_desk_w (this->hidden->desk_w) 12246be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#define GEM_desk_h (this->hidden->desk_h) 12346be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#define GEM_handle (this->hidden->win_handle) 12446be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#define GEM_win_type (this->hidden->window_type) 12546be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#define GEM_title_name (this->hidden->title_name) 12646be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#define GEM_icon_name (this->hidden->icon_name) 12746be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#define GEM_refresh_name (this->hidden->refresh_name) 12846be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#define GEM_version (this->hidden->version) 12946be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#define GEM_wfeatures (this->hidden->wfeatures) 13046be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#define GEM_win_fulled (this->hidden->window_fulled) 13146be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#define GEM_mouse_relative (this->hidden->mouse_relative) 13246be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#define GEM_locked (this->hidden->locked) 13346be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#define GEM_lock_redraw (this->hidden->lock_redraw) 13446be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#define GEM_message (this->hidden->message) 13546be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#define SDL_modelist (this->hidden->SDL_modelist) 13646be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#define GEM_icon (this->hidden->icon) 13746be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#define GEM_fullscreen (this->hidden->fullscreen) 13846be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#define GEM_menubar (this->hidden->menubar) 13946be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#define GEM_usedevmouse (this->hidden->use_dev_mouse) 14046be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#define GEM_cursor (this->hidden->cursor) 14146be48730333120a7b939116cef075e61c12c703David 'Digit' Turner 14246be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#define GEM_buffer1 (this->hidden->buffer1) 14346be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#define GEM_buffer2 (this->hidden->buffer2) 14446be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#define GEM_bufops (this->hidden->buf2scr_ops) 14546be48730333120a7b939116cef075e61c12c703David 'Digit' Turner 14646be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#define VDI_FBMASK(amask, rmask, gmask, bmask) \ 14746be48730333120a7b939116cef075e61c12c703David 'Digit' Turner VDI_alphamask = (amask); \ 14846be48730333120a7b939116cef075e61c12c703David 'Digit' Turner VDI_redmask = (rmask); \ 14946be48730333120a7b939116cef075e61c12c703David 'Digit' Turner VDI_greenmask = (gmask); \ 15046be48730333120a7b939116cef075e61c12c703David 'Digit' Turner VDI_bluemask = (bmask); 15146be48730333120a7b939116cef075e61c12c703David 'Digit' Turner 15246be48730333120a7b939116cef075e61c12c703David 'Digit' Turner/* 15346be48730333120a7b939116cef075e61c12c703David 'Digit' Turner Possible buffer to screen operations: 15446be48730333120a7b939116cef075e61c12c703David 'Digit' Turner 15546be48730333120a7b939116cef075e61c12c703David 'Digit' Turner TC: 8 (chunky),15,16,24,32 bpp 15646be48730333120a7b939116cef075e61c12c703David 'Digit' Turner 8I: 8 bpp planes 15746be48730333120a7b939116cef075e61c12c703David 'Digit' Turner FB: screen framebuffer address available 15846be48730333120a7b939116cef075e61c12c703David 'Digit' Turner FS: fullscreen 15946be48730333120a7b939116cef075e61c12c703David 'Digit' Turner 16046be48730333120a7b939116cef075e61c12c703David 'Digit' Turner TC, FB, FS: 16146be48730333120a7b939116cef075e61c12c703David 'Digit' Turner - draw to screen 16246be48730333120a7b939116cef075e61c12c703David 'Digit' Turner 8I, FB, FS: 16346be48730333120a7b939116cef075e61c12c703David 'Digit' Turner - draw to buffer 1 16446be48730333120a7b939116cef075e61c12c703David 'Digit' Turner - C2P from buffer 1 to screen 16546be48730333120a7b939116cef075e61c12c703David 'Digit' Turner 16646be48730333120a7b939116cef075e61c12c703David 'Digit' Turner TC, !FB, FS: 16746be48730333120a7b939116cef075e61c12c703David 'Digit' Turner - draw to buffer 1 16846be48730333120a7b939116cef075e61c12c703David 'Digit' Turner - vro_cpyfm() from buffer 1 to screen 16946be48730333120a7b939116cef075e61c12c703David 'Digit' Turner 8I, !FB, FS: 17046be48730333120a7b939116cef075e61c12c703David 'Digit' Turner - draw to buffer 1 17146be48730333120a7b939116cef075e61c12c703David 'Digit' Turner - C2P from buffer 1 to buffer 2 17246be48730333120a7b939116cef075e61c12c703David 'Digit' Turner - vro_cpyfm() from buffer 2 to screen 17346be48730333120a7b939116cef075e61c12c703David 'Digit' Turner 17446be48730333120a7b939116cef075e61c12c703David 'Digit' Turner TC, FB, !FS: 17546be48730333120a7b939116cef075e61c12c703David 'Digit' Turner - draw to buffer 1 17646be48730333120a7b939116cef075e61c12c703David 'Digit' Turner - vro_cpyfm() from buffer 1 to screen 17746be48730333120a7b939116cef075e61c12c703David 'Digit' Turner 8I, FB, !FS: 17846be48730333120a7b939116cef075e61c12c703David 'Digit' Turner - draw to buffer 1 17946be48730333120a7b939116cef075e61c12c703David 'Digit' Turner - C2P from buffer 1 to buffer 2 18046be48730333120a7b939116cef075e61c12c703David 'Digit' Turner - vro_cpyfm() from buffer 2 to screen 18146be48730333120a7b939116cef075e61c12c703David 'Digit' Turner 18246be48730333120a7b939116cef075e61c12c703David 'Digit' Turner TC, !FB, !FS: 18346be48730333120a7b939116cef075e61c12c703David 'Digit' Turner - draw to buffer 1 18446be48730333120a7b939116cef075e61c12c703David 'Digit' Turner - vro_cpyfm() from buffer 1 to screen 18546be48730333120a7b939116cef075e61c12c703David 'Digit' Turner 8I, !FB, !FS: 18646be48730333120a7b939116cef075e61c12c703David 'Digit' Turner - draw to buffer 1 18746be48730333120a7b939116cef075e61c12c703David 'Digit' Turner - C2P from buffer 1 to buffer 2 18846be48730333120a7b939116cef075e61c12c703David 'Digit' Turner - vro_cpyfm() from buffer 2 to screen 18946be48730333120a7b939116cef075e61c12c703David 'Digit' Turner*/ 19046be48730333120a7b939116cef075e61c12c703David 'Digit' Turner 19146be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#endif /* _SDL_gemvideo_h */ 192