1 /*****************************************************************************
2 * This file is part of gfxprim library. *
4 * Gfxprim is free software; you can redistribute it and/or *
5 * modify it under the terms of the GNU Lesser General Public *
6 * License as published by the Free Software Foundation; either *
7 * version 2.1 of the License, or (at your option) any later version. *
9 * Gfxprim is distributed in the hope that it will be useful, *
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
12 * Lesser General Public License for more details. *
14 * You should have received a copy of the GNU Lesser General Public *
15 * License along with gfxprim; if not, write to the Free Software *
16 * Foundation, Inc., 51 Franklin Street, Fifth Floor, *
17 * Boston, MA 02110-1301 USA *
19 * Copyright (C) 2009-2010 Jiri "BlueBear" Dluhos *
20 * <jiri.bluebear.dluhos@gmail.com> *
22 * Copyright (C) 2009-2010 Cyril Hrubis <metan@ucw.cz> *
24 *****************************************************************************/
32 GP_RetCode
GP_SDL_VideoInit(GP_Context
*context
, int width
, int height
,
33 int argc
, char **argv
)
35 if (context
== NULL
) {
39 /* switches that can be set on the command line */
49 /* extract settings from the command line */
51 for (i
= 1; i
< argc
; i
++) {
52 if (strcmp(argv
[i
], "--8bpp") == 0) {
55 else if (strcmp(argv
[i
], "--16bpp") == 0) {
58 else if (strcmp(argv
[i
], "--24bpp") == 0) {
61 else if (strcmp(argv
[i
], "--32bpp") == 0) {
64 else if (strcmp(argv
[i
], "--debug") == 0) {
70 if (SDL_Init(SDL_INIT_VIDEO
| SDL_INIT_TIMER
) != 0) {
72 fprintf(stderr
, "Error: Could not initialize SDL: %s\n",
75 return GP_EBACKENDLOST
;
78 SDL_Surface
*display
= NULL
;
79 display
= SDL_SetVideoMode(width
, height
, display_bpp
, SDL_SWSURFACE
);
80 if (display
== NULL
) {
82 fprintf(stderr
, "Error: Unable to set video mode: %s\n",
90 printf("Display properties:\n");
91 printf(" width: %4d, height: %4d, pitch: %4d\n",
92 display
->w
, display
->h
, display
->pitch
);
93 printf(" bits per pixel: %2d, bytes per pixel: %2d\n",
94 display
->format
->BitsPerPixel
, display
->format
->BytesPerPixel
);
95 printf(" pixel bit masks: R=%x, G=%x, B=%x, A=%x\n",
96 display
->format
->Rmask
, display
->format
->Gmask
,
97 display
->format
->Bmask
, display
->format
->Amask
);
101 retcode
= GP_SDL_ContextFromSurface(context
, display
);
102 if (retcode
!= GP_ESUCCESS
) {
104 fprintf(stderr
, "Error: Could not create context: %s\n",
105 GP_RetCodeName(retcode
));