diff options
Diffstat (limited to 'apps/plugins/sdl/src/video/gem/SDL_gemvideo.h')
-rw-r--r-- | apps/plugins/sdl/src/video/gem/SDL_gemvideo.h | 191 |
1 files changed, 191 insertions, 0 deletions
diff --git a/apps/plugins/sdl/src/video/gem/SDL_gemvideo.h b/apps/plugins/sdl/src/video/gem/SDL_gemvideo.h new file mode 100644 index 0000000000..f3a195453e --- /dev/null +++ b/apps/plugins/sdl/src/video/gem/SDL_gemvideo.h | |||
@@ -0,0 +1,191 @@ | |||
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 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 */ | ||
31 | struct 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 */ | ||
39 | void 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 | |||
50 | struct 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 */ | ||