Mercurial > sdl-ios-xcode
comparison src/video/cybergfx/SDL_cgxmodes.c @ 1668:4da1ee79c9af SDL-1.3
more tweaking indent options
author | Sam Lantinga <slouken@libsdl.org> |
---|---|
date | Mon, 29 May 2006 04:04:35 +0000 |
parents | 782fd950bd46 |
children |
comparison
equal
deleted
inserted
replaced
1667:1fddae038bc8 | 1668:4da1ee79c9af |
---|---|
31 #include "SDL_cgxmodes_c.h" | 31 #include "SDL_cgxmodes_c.h" |
32 | 32 |
33 #define CGX_DEBUG | 33 #define CGX_DEBUG |
34 | 34 |
35 static void | 35 static void |
36 set_best_resolution (_THIS, int width, int height) | 36 set_best_resolution(_THIS, int width, int height) |
37 { | 37 { |
38 Uint32 idok; | 38 Uint32 idok; |
39 int depth = 8; | 39 int depth = 8; |
40 | 40 |
41 if (SDL_Display) | 41 if (SDL_Display) |
42 depth = | 42 depth = |
43 GetCyberMapAttr (SDL_Display->RastPort.BitMap, CYBRMATTR_DEPTH); | 43 GetCyberMapAttr(SDL_Display->RastPort.BitMap, CYBRMATTR_DEPTH); |
44 | 44 |
45 idok = BestCModeIDTags (CYBRBIDTG_NominalWidth, width, | 45 idok = BestCModeIDTags(CYBRBIDTG_NominalWidth, width, |
46 CYBRBIDTG_NominalHeight, height, | 46 CYBRBIDTG_NominalHeight, height, |
47 CYBRBIDTG_Depth, depth, TAG_DONE); | 47 CYBRBIDTG_Depth, depth, TAG_DONE); |
48 | 48 |
49 if (idok != INVALID_ID) { | 49 if (idok != INVALID_ID) { |
50 if (SDL_Display) { | 50 if (SDL_Display) { |
51 if (currently_fullscreen) | 51 if (currently_fullscreen) |
52 CloseScreen (SDL_Display); | 52 CloseScreen(SDL_Display); |
53 else | 53 else |
54 UnlockPubScreen (NULL, SDL_Display); | 54 UnlockPubScreen(NULL, SDL_Display); |
55 } | 55 } |
56 SDL_Display = GFX_Display = | 56 SDL_Display = GFX_Display = |
57 OpenScreenTags (NULL, SA_Width, width, SA_Height, height, | 57 OpenScreenTags(NULL, SA_Width, width, SA_Height, height, |
58 SA_Depth, depth, SA_DisplayID, idok, | 58 SA_Depth, depth, SA_DisplayID, idok, |
59 SA_ShowTitle, FALSE, TAG_DONE); | 59 SA_ShowTitle, FALSE, TAG_DONE); |
60 } | 60 } |
61 } | 61 } |
62 | 62 |
63 static void | 63 static void |
64 get_real_resolution (_THIS, int *w, int *h) | 64 get_real_resolution(_THIS, int *w, int *h) |
65 { | 65 { |
66 *w = /*SDL_Display->Width */ SDL_Window->Width - SDL_Window->BorderLeft - | 66 *w = /*SDL_Display->Width */ SDL_Window->Width - SDL_Window->BorderLeft - |
67 SDL_Window->BorderRight; | 67 SDL_Window->BorderRight; |
68 *h = /*SDL_Display->Height */ SDL_Window->Height - | 68 *h = /*SDL_Display->Height */ SDL_Window->Height - |
69 SDL_Window->BorderBottom - SDL_Window->BorderTop; | 69 SDL_Window->BorderBottom - SDL_Window->BorderTop; |
70 } | 70 } |
71 | 71 |
72 static void | 72 static void |
73 move_cursor_to (_THIS, int x, int y) | 73 move_cursor_to(_THIS, int x, int y) |
74 { | 74 { |
75 /* XWarpPointer(SDL_Display, None, SDL_Root, 0, 0, 0, 0, x, y); */ | 75 /* XWarpPointer(SDL_Display, None, SDL_Root, 0, 0, 0, 0, x, y); */ |
76 | 76 |
77 /* DA FARE! */ | 77 /* DA FARE! */ |
78 } | 78 } |
79 | 79 |
80 static void | 80 static void |
81 add_visual (_THIS, int depth, int class) | 81 add_visual(_THIS, int depth, int class) |
82 { | 82 { |
83 Uint32 tID; | 83 Uint32 tID; |
84 | 84 |
85 tID = BestCModeIDTags (CYBRBIDTG_Depth, depth, | 85 tID = BestCModeIDTags(CYBRBIDTG_Depth, depth, |
86 CYBRBIDTG_NominalWidth, 640, | 86 CYBRBIDTG_NominalWidth, 640, |
87 CYBRBIDTG_NominalHeight, 480, TAG_DONE); | 87 CYBRBIDTG_NominalHeight, 480, TAG_DONE); |
88 | 88 |
89 if (tID != INVALID_ID) { | 89 if (tID != INVALID_ID) { |
90 int n = this->hidden->nvisuals; | 90 int n = this->hidden->nvisuals; |
91 | 91 |
92 this->hidden->visuals[n].depth = depth; | 92 this->hidden->visuals[n].depth = depth; |
93 this->hidden->visuals[n].visual = tID; | 93 this->hidden->visuals[n].visual = tID; |
94 this->hidden->visuals[n].bpp = GetCyberIDAttr (CYBRIDATTR_BPPIX, tID); | 94 this->hidden->visuals[n].bpp = GetCyberIDAttr(CYBRIDATTR_BPPIX, tID); |
95 this->hidden->nvisuals++; | 95 this->hidden->nvisuals++; |
96 } | 96 } |
97 } | 97 } |
98 | 98 |
99 #define TrueColor 1 | 99 #define TrueColor 1 |
100 #define PseudoColor 2 | 100 #define PseudoColor 2 |
101 | 101 |
102 int | 102 int |
103 CGX_GetVideoModes (_THIS) | 103 CGX_GetVideoModes(_THIS) |
104 { | 104 { |
105 int i; | 105 int i; |
106 ULONG nextid; | 106 ULONG nextid; |
107 int nmodes = 0; | 107 int nmodes = 0; |
108 | 108 |
109 SDL_modelist = NULL; | 109 SDL_modelist = NULL; |
110 | 110 |
111 nextid = NextDisplayInfo (INVALID_ID); | 111 nextid = NextDisplayInfo(INVALID_ID); |
112 | 112 |
113 while (nextid != INVALID_ID) { | 113 while (nextid != INVALID_ID) { |
114 if (IsCyberModeID (nextid)) { | 114 if (IsCyberModeID(nextid)) { |
115 DisplayInfoHandle h; | 115 DisplayInfoHandle h; |
116 | 116 |
117 if (h = FindDisplayInfo (nextid)) { | 117 if (h = FindDisplayInfo(nextid)) { |
118 struct DimensionInfo info; | 118 struct DimensionInfo info; |
119 | 119 |
120 if (GetDisplayInfoData | 120 if (GetDisplayInfoData |
121 (h, (char *) &info, sizeof (struct DimensionInfo), | 121 (h, (char *) &info, sizeof(struct DimensionInfo), |
122 DTAG_DIMS, NULL)) { | 122 DTAG_DIMS, NULL)) { |
123 int ok = 0; | 123 int ok = 0; |
124 | 124 |
125 for (i = 0; i < nmodes; i++) { | 125 for (i = 0; i < nmodes; i++) { |
126 if (SDL_modelist[i]->w == (info.Nominal.MaxX + 1) | 126 if (SDL_modelist[i]->w == (info.Nominal.MaxX + 1) |
130 | 130 |
131 if (!ok) { | 131 if (!ok) { |
132 nmodes++; | 132 nmodes++; |
133 | 133 |
134 SDL_modelist = | 134 SDL_modelist = |
135 (SDL_Rect **) SDL_realloc (SDL_modelist, | 135 (SDL_Rect **) SDL_realloc(SDL_modelist, |
136 (nmodes + | 136 (nmodes + |
137 1) * | 137 1) * |
138 sizeof (SDL_Rect *)); | 138 sizeof(SDL_Rect *)); |
139 SDL_modelist[nmodes] = NULL; | 139 SDL_modelist[nmodes] = NULL; |
140 | 140 |
141 if (SDL_modelist) { | 141 if (SDL_modelist) { |
142 SDL_modelist[nmodes - 1] = (SDL_Rect *) | 142 SDL_modelist[nmodes - 1] = (SDL_Rect *) |
143 SDL_malloc (sizeof (SDL_Rect)); | 143 SDL_malloc(sizeof(SDL_Rect)); |
144 | 144 |
145 if (SDL_modelist[nmodes - 1] == NULL) | 145 if (SDL_modelist[nmodes - 1] == NULL) |
146 break; | 146 break; |
147 | 147 |
148 SDL_modelist[nmodes - 1]->x = 0; | 148 SDL_modelist[nmodes - 1]->x = 0; |
154 } | 154 } |
155 } | 155 } |
156 } | 156 } |
157 } | 157 } |
158 } | 158 } |
159 nextid = NextDisplayInfo (nextid); | 159 nextid = NextDisplayInfo(nextid); |
160 } | 160 } |
161 | 161 |
162 | 162 |
163 this->hidden->nvisuals = 0; | 163 this->hidden->nvisuals = 0; |
164 /* Search for the visuals in deepest-first order, so that the first | 164 /* Search for the visuals in deepest-first order, so that the first |
165 will be the richest one */ | 165 will be the richest one */ |
166 add_visual (this, 32, TrueColor); | 166 add_visual(this, 32, TrueColor); |
167 add_visual (this, 24, TrueColor); | 167 add_visual(this, 24, TrueColor); |
168 add_visual (this, 16, TrueColor); | 168 add_visual(this, 16, TrueColor); |
169 add_visual (this, 15, TrueColor); | 169 add_visual(this, 15, TrueColor); |
170 add_visual (this, 8, PseudoColor); | 170 add_visual(this, 8, PseudoColor); |
171 | 171 |
172 if (this->hidden->nvisuals == 0) { | 172 if (this->hidden->nvisuals == 0) { |
173 SDL_SetError ("Found no sufficiently capable CGX visuals"); | 173 SDL_SetError("Found no sufficiently capable CGX visuals"); |
174 return -1; | 174 return -1; |
175 } | 175 } |
176 | 176 |
177 if (SDL_modelist == NULL) { | 177 if (SDL_modelist == NULL) { |
178 SDL_modelist = | 178 SDL_modelist = (SDL_Rect **) SDL_malloc((1 + 1) * sizeof(SDL_Rect *)); |
179 (SDL_Rect **) SDL_malloc ((1 + 1) * sizeof (SDL_Rect *)); | |
180 i = 0; | 179 i = 0; |
181 if (SDL_modelist) { | 180 if (SDL_modelist) { |
182 SDL_modelist[i] = (SDL_Rect *) SDL_malloc (sizeof (SDL_Rect)); | 181 SDL_modelist[i] = (SDL_Rect *) SDL_malloc(sizeof(SDL_Rect)); |
183 if (SDL_modelist[i]) { | 182 if (SDL_modelist[i]) { |
184 SDL_modelist[i]->x = 0; | 183 SDL_modelist[i]->x = 0; |
185 SDL_modelist[i]->y = 0; | 184 SDL_modelist[i]->y = 0; |
186 SDL_modelist[i]->w = SDL_Display->Width; | 185 SDL_modelist[i]->w = SDL_Display->Width; |
187 SDL_modelist[i]->h = SDL_Display->Height; | 186 SDL_modelist[i]->h = SDL_Display->Height; |
189 } | 188 } |
190 SDL_modelist[i] = NULL; | 189 SDL_modelist[i] = NULL; |
191 } | 190 } |
192 } | 191 } |
193 | 192 |
194 D (if (SDL_modelist) { | 193 D(if (SDL_modelist) { |
195 bug ("CGX video mode list: (%ld)\n", nmodes); | 194 bug("CGX video mode list: (%ld)\n", nmodes); |
196 for (i = 0; SDL_modelist[i]; ++i) { | 195 for (i = 0; SDL_modelist[i]; ++i) { |
197 bug ("\t%ld x %ld\n", SDL_modelist[i]->w, SDL_modelist[i]->h);} | 196 bug("\t%ld x %ld\n", SDL_modelist[i]->w, SDL_modelist[i]->h);} |
198 } | 197 } |
199 ); | 198 ); |
200 | 199 |
201 D ( { | 200 D( { |
202 bug ("CGX visuals list: (%ld)\n", this->hidden->nvisuals); | 201 bug("CGX visuals list: (%ld)\n", this->hidden->nvisuals); |
203 for (i = 0; i < this->hidden->nvisuals; i++) | 202 for (i = 0; i < this->hidden->nvisuals; i++) |
204 bug ("\t%lx - depth: %ld bpp: %ld\n", | 203 bug("\t%lx - depth: %ld bpp: %ld\n", |
205 this->hidden->visuals[i].visual, | 204 this->hidden->visuals[i].visual, |
206 this->hidden->visuals[i].depth, this->hidden->visuals[i].bpp);} | 205 this->hidden->visuals[i].depth, this->hidden->visuals[i].bpp);} |
207 ); | 206 ); |
208 return 0; | 207 return 0; |
209 } | 208 } |
210 | 209 |
211 int | 210 int |
212 CGX_SupportedVisual (_THIS, SDL_PixelFormat * format) | 211 CGX_SupportedVisual(_THIS, SDL_PixelFormat * format) |
213 { | 212 { |
214 int i; | 213 int i; |
215 for (i = 0; i < this->hidden->nvisuals; i++) { | 214 for (i = 0; i < this->hidden->nvisuals; i++) { |
216 if (this->hidden->visuals[i].depth == format->BitsPerPixel) // Era bpp | 215 if (this->hidden->visuals[i].depth == format->BitsPerPixel) // Era bpp |
217 return 1; | 216 return 1; |
218 } | 217 } |
219 return 0; | 218 return 0; |
220 } | 219 } |
221 | 220 |
222 SDL_Rect ** | 221 SDL_Rect ** |
223 CGX_ListModes (_THIS, SDL_PixelFormat * format, Uint32 flags) | 222 CGX_ListModes(_THIS, SDL_PixelFormat * format, Uint32 flags) |
224 { | 223 { |
225 if (CGX_SupportedVisual (this, format)) { | 224 if (CGX_SupportedVisual(this, format)) { |
226 if (flags & SDL_FULLSCREEN) { | 225 if (flags & SDL_FULLSCREEN) { |
227 return (SDL_modelist); | 226 return (SDL_modelist); |
228 } else { | 227 } else { |
229 return ((SDL_Rect **) - 1); | 228 return ((SDL_Rect **) - 1); |
230 } | 229 } |
232 return ((SDL_Rect **) 0); | 231 return ((SDL_Rect **) 0); |
233 } | 232 } |
234 } | 233 } |
235 | 234 |
236 void | 235 void |
237 CGX_FreeVideoModes (_THIS) | 236 CGX_FreeVideoModes(_THIS) |
238 { | 237 { |
239 int i; | 238 int i; |
240 | 239 |
241 if (SDL_modelist) { | 240 if (SDL_modelist) { |
242 for (i = 0; SDL_modelist[i]; ++i) { | 241 for (i = 0; SDL_modelist[i]; ++i) { |
243 SDL_free (SDL_modelist[i]); | 242 SDL_free(SDL_modelist[i]); |
244 } | 243 } |
245 SDL_free (SDL_modelist); | 244 SDL_free(SDL_modelist); |
246 SDL_modelist = NULL; | 245 SDL_modelist = NULL; |
247 } | 246 } |
248 } | 247 } |
249 | 248 |
250 int | 249 int |
251 CGX_ResizeFullScreen (_THIS) | 250 CGX_ResizeFullScreen(_THIS) |
252 { | 251 { |
253 int x, y; | 252 int x, y; |
254 int real_w, real_h; | 253 int real_w, real_h; |
255 | 254 |
256 if (currently_fullscreen) { | 255 if (currently_fullscreen) { |
258 } | 257 } |
259 return (1); | 258 return (1); |
260 } | 259 } |
261 | 260 |
262 void | 261 void |
263 _QueueEnterFullScreen (_THIS) | 262 _QueueEnterFullScreen(_THIS) |
264 { | 263 { |
265 } | 264 } |
266 | 265 |
267 int | 266 int |
268 CGX_EnterFullScreen (_THIS) | 267 CGX_EnterFullScreen(_THIS) |
269 { | 268 { |
270 int okay; | 269 int okay; |
271 Uint32 saved_flags; | 270 Uint32 saved_flags; |
272 | 271 |
273 okay = 1; | 272 okay = 1; |
275 | 274 |
276 if (!currently_fullscreen) { | 275 if (!currently_fullscreen) { |
277 int real_w, real_h; | 276 int real_w, real_h; |
278 | 277 |
279 /* Map the fullscreen window to blank the screen */ | 278 /* Map the fullscreen window to blank the screen */ |
280 get_real_resolution (this, &real_w, &real_h); | 279 get_real_resolution(this, &real_w, &real_h); |
281 | 280 |
282 CGX_DestroyWindow (this, this->screen); | 281 CGX_DestroyWindow(this, this->screen); |
283 set_best_resolution (this, real_w, real_h); | 282 set_best_resolution(this, real_w, real_h); |
284 | 283 |
285 currently_fullscreen = 1; | 284 currently_fullscreen = 1; |
286 this->screen->flags = saved_flags; | 285 this->screen->flags = saved_flags; |
287 | 286 |
288 CGX_CreateWindow (this, this->screen, real_w, real_h, | 287 CGX_CreateWindow(this, this->screen, real_w, real_h, |
289 GetCyberMapAttr (SDL_Display->RastPort.BitMap, | 288 GetCyberMapAttr(SDL_Display->RastPort.BitMap, |
290 CYBRMATTR_DEPTH), | 289 CYBRMATTR_DEPTH), |
291 this->screen->flags); | 290 this->screen->flags); |
292 | 291 |
293 /* Set the new resolution */ | 292 /* Set the new resolution */ |
294 okay = CGX_ResizeFullScreen (this); | 293 okay = CGX_ResizeFullScreen(this); |
295 if (!okay) { | 294 if (!okay) { |
296 CGX_LeaveFullScreen (this); | 295 CGX_LeaveFullScreen(this); |
297 } | 296 } |
298 /* Set the colormap */ | 297 /* Set the colormap */ |
299 /* | 298 /* |
300 if ( SDL_XColorMap ) { | 299 if ( SDL_XColorMap ) { |
301 XInstallColormap(SDL_Display, SDL_XColorMap); | 300 XInstallColormap(SDL_Display, SDL_XColorMap); |
305 // CGX_GrabInputNoLock(this, this->input_grab | SDL_GRAB_FULLSCREEN); | 304 // CGX_GrabInputNoLock(this, this->input_grab | SDL_GRAB_FULLSCREEN); |
306 return (okay); | 305 return (okay); |
307 } | 306 } |
308 | 307 |
309 int | 308 int |
310 CGX_LeaveFullScreen (_THIS) | 309 CGX_LeaveFullScreen(_THIS) |
311 { | 310 { |
312 if (currently_fullscreen) { | 311 if (currently_fullscreen) { |
313 int width, height; | 312 int width, height; |
314 if (SDL_Window) { | 313 if (SDL_Window) { |
315 CloseWindow (SDL_Window); | 314 CloseWindow(SDL_Window); |
316 SDL_Window = NULL; | 315 SDL_Window = NULL; |
317 } | 316 } |
318 CloseScreen (SDL_Display); | 317 CloseScreen(SDL_Display); |
319 | 318 |
320 GFX_Display = SDL_Display = LockPubScreen (NULL); | 319 GFX_Display = SDL_Display = LockPubScreen(NULL); |
321 | 320 |
322 currently_fullscreen = 0; | 321 currently_fullscreen = 0; |
323 | 322 |
324 CGX_CreateWindow (this, this->screen, this->screen->w, | 323 CGX_CreateWindow(this, this->screen, this->screen->w, |
325 this->screen->h, | 324 this->screen->h, |
326 GetCyberMapAttr (SDL_Display->RastPort.BitMap, | 325 GetCyberMapAttr(SDL_Display->RastPort.BitMap, |
327 CYBRMATTR_DEPTH), | 326 CYBRMATTR_DEPTH), |
328 this->screen->flags); | 327 this->screen->flags); |
329 CGX_ResizeImage (this, this->screen, 0L); | 328 CGX_ResizeImage(this, this->screen, 0L); |
330 } | 329 } |
331 | 330 |
332 return (0); | 331 return (0); |
333 } | 332 } |
334 | 333 |