SDL-1.2.14
[sdl_omap.git] / src / video / gem / SDL_gemvideo.h
CommitLineData
e14743d1 1/*
2 SDL - Simple DirectMedia Layer
3 Copyright (C) 1997-2009 Sam Lantinga
4
5 This library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 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 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with this library; if not, write to the Free Software
17 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
18
19 Sam Lantinga
20 slouken@libsdl.org
21*/
22#include "SDL_config.h"
23
24#ifndef _SDL_gemvideo_h
25#define _SDL_gemvideo_h
26
27#include "SDL_mutex.h"
28#include "../SDL_sysvideo.h"
29
30/* The implementation dependent data for the window manager cursor */
31struct WMcursor {
32 MFORM *mform_p;
33};
34
35/* Hidden "this" pointer for the video functions */
36#define _THIS SDL_VideoDevice *this
37
38/* Functions prototypes */
39void GEM_wind_redraw(_THIS, int winhandle, short *inside);
40
41/* Private display data */
42
43#define B2S_C2P_1TO2 (1<<0) /* C2P convert buffer 1 to buffer 2 */
44#define B2S_C2P_1TOS (1<<1) /* C2P convert buffer 1 to screen */
45#define B2S_VROCPYFM_1TOS (1<<2) /* vro_cpyfm() buffer 1 to screen */
46#define B2S_VROCPYFM_2TOS (1<<3) /* vro_cpyfm() buffer 2 to screen */
47
48#define SDL_NUMMODES 1 /* Fullscreen */
49
50struct SDL_PrivateVideoData {
51 Uint16 buf2scr_ops; /* Operations to get buffer to screen */
52 void *buffer1; /* Our shadow buffers */
53 void *buffer2;
54
55 /* VDI infos */
56 short vdi_handle; /* VDI handle */
57 short full_w, full_h; /* Fullscreen size */
58 short bpp; /* Colour depth */
59 short pixelsize; /* Bytes per pixel */
60 short old_numcolors; /* Number of colors in saved palette */
61 Uint16 pitch; /* Line length */
62 Uint16 format; /* Screen format */
63 void *screen; /* Screen address */
64 Uint32 red, green, blue, alpha; /* Screen components */
65 Uint32 screensize;
66 short blit_coords[8]; /* Coordinates for bitblt */
67 MFDB src_mfdb, dst_mfdb; /* VDI MFDB for bitblt */
68 Uint16 old_palette[256][3]; /* Saved current palette */
69 Uint16 cur_palette[256][3]; /* SDL application palette */
70 /* Function to set/restore palette */
71 void (*setpalette)(_THIS, Uint16 newpal[256][3]);
72
73 /* GEM infos */
74 short desk_x, desk_y; /* Desktop properties */
75 short desk_w, desk_h;
76 short win_handle; /* Our window handle */
77 int window_type; /* Window type */
78 const char *title_name; /* Window title */
79 const char *icon_name; /* Icon title */
80 short version; /* AES version */
81 short wfeatures; /* AES window features */
82 SDL_bool refresh_name; /* Change window title ? */
83 SDL_bool window_fulled; /* Window maximized ? */
84 SDL_bool mouse_relative; /* Report relative mouse movement */
85 SDL_bool locked; /* AES locked for fullscreen ? */
86 SDL_bool lock_redraw; /* Prevent redraw till buffers are setup */
87 short message[8]; /* To self-send an AES message */
88 void *menubar; /* Menu bar save buffer when going fullscreen */
89 SDL_bool use_dev_mouse; /* Use /dev/mouse ? */
90 WMcursor *cursor; /* To restore cursor when leaving/entering window */
91
92 SDL_bool fullscreen; /* Fullscreen or windowed mode ? */
93 SDL_Rect *SDL_modelist[SDL_NUMMODES+1]; /* Mode list */
94 SDL_Surface *icon; /* The icon */
95};
96
97/* Hidden structure -> variables names */
98#define VDI_handle (this->hidden->vdi_handle)
99#define VDI_w (this->hidden->full_w)
100#define VDI_h (this->hidden->full_h)
101#define VDI_bpp (this->hidden->bpp)
102#define VDI_pixelsize (this->hidden->pixelsize)
103#define VDI_oldnumcolors (this->hidden->old_numcolors)
104#define VDI_oldpalette (this->hidden->old_palette)
105#define VDI_curpalette (this->hidden->cur_palette)
106#define VDI_setpalette (this->hidden->setpalette)
107#define VDI_pitch (this->hidden->pitch)
108#define VDI_format (this->hidden->format)
109#define VDI_screen (this->hidden->screen)
110#define VDI_redmask (this->hidden->red)
111#define VDI_greenmask (this->hidden->green)
112#define VDI_bluemask (this->hidden->blue)
113#define VDI_alphamask (this->hidden->alpha)
114#define VDI_screensize (this->hidden->screensize)
115#define VDI_src_mfdb (this->hidden->src_mfdb)
116#define VDI_dst_mfdb (this->hidden->dst_mfdb)
117#define VDI_blit_coords (this->hidden->blit_coords)
118
119#define GEM_desk_x (this->hidden->desk_x)
120#define GEM_desk_y (this->hidden->desk_y)
121#define GEM_desk_w (this->hidden->desk_w)
122#define GEM_desk_h (this->hidden->desk_h)
123#define GEM_handle (this->hidden->win_handle)
124#define GEM_win_type (this->hidden->window_type)
125#define GEM_title_name (this->hidden->title_name)
126#define GEM_icon_name (this->hidden->icon_name)
127#define GEM_refresh_name (this->hidden->refresh_name)
128#define GEM_version (this->hidden->version)
129#define GEM_wfeatures (this->hidden->wfeatures)
130#define GEM_win_fulled (this->hidden->window_fulled)
131#define GEM_mouse_relative (this->hidden->mouse_relative)
132#define GEM_locked (this->hidden->locked)
133#define GEM_lock_redraw (this->hidden->lock_redraw)
134#define GEM_message (this->hidden->message)
135#define SDL_modelist (this->hidden->SDL_modelist)
136#define GEM_icon (this->hidden->icon)
137#define GEM_fullscreen (this->hidden->fullscreen)
138#define GEM_menubar (this->hidden->menubar)
139#define GEM_usedevmouse (this->hidden->use_dev_mouse)
140#define GEM_cursor (this->hidden->cursor)
141
142#define GEM_buffer1 (this->hidden->buffer1)
143#define GEM_buffer2 (this->hidden->buffer2)
144#define GEM_bufops (this->hidden->buf2scr_ops)
145
146#define VDI_FBMASK(amask, rmask, gmask, bmask) \
147 VDI_alphamask = (amask); \
148 VDI_redmask = (rmask); \
149 VDI_greenmask = (gmask); \
150 VDI_bluemask = (bmask);
151
152/*
153 Possible buffer to screen operations:
154
155 TC: 8 (chunky),15,16,24,32 bpp
156 8I: 8 bpp planes
157 FB: screen framebuffer address available
158 FS: fullscreen
159
160 TC, FB, FS:
161 - draw to screen
162 8I, FB, FS:
163 - draw to buffer 1
164 - C2P from buffer 1 to screen
165
166 TC, !FB, FS:
167 - draw to buffer 1
168 - vro_cpyfm() from buffer 1 to screen
169 8I, !FB, FS:
170 - draw to buffer 1
171 - C2P from buffer 1 to buffer 2
172 - vro_cpyfm() from buffer 2 to screen
173
174 TC, FB, !FS:
175 - draw to buffer 1
176 - vro_cpyfm() from buffer 1 to screen
177 8I, FB, !FS:
178 - draw to buffer 1
179 - C2P from buffer 1 to buffer 2
180 - vro_cpyfm() from buffer 2 to screen
181
182 TC, !FB, !FS:
183 - draw to buffer 1
184 - vro_cpyfm() from buffer 1 to screen
185 8I, !FB, !FS:
186 - draw to buffer 1
187 - C2P from buffer 1 to buffer 2
188 - vro_cpyfm() from buffer 2 to screen
189*/
190
191#endif /* _SDL_gemvideo_h */