diff src/video/cybergfx/SDL_cgxmodes.c @ 1662:782fd950bd46 SDL-1.3

Revamp of the video system in progress - adding support for multiple displays, multiple windows, and a full video mode selection API. WARNING: None of the video drivers have been updated for the new API yet! The API is still under design and very fluid. The code is now run through a consistent indent format: indent -i4 -nut -nsc -br -ce The headers are being converted to automatically generate doxygen documentation.
author Sam Lantinga <slouken@libsdl.org>
date Sun, 28 May 2006 13:04:16 +0000
parents d910939febfa
children 4da1ee79c9af
line wrap: on
line diff
--- a/src/video/cybergfx/SDL_cgxmodes.c	Sun May 21 17:27:13 2006 +0000
+++ b/src/video/cybergfx/SDL_cgxmodes.c	Sun May 28 13:04:16 2006 +0000
@@ -32,149 +32,155 @@
 
 #define CGX_DEBUG
 
-static void set_best_resolution(_THIS, int width, int height)
+static void
+set_best_resolution (_THIS, int width, int height)
 {
-	Uint32 idok;
-	int depth=8;
+    Uint32 idok;
+    int depth = 8;
 
-	if(SDL_Display)
-		depth=GetCyberMapAttr(SDL_Display->RastPort.BitMap,CYBRMATTR_DEPTH);
-
-	idok=BestCModeIDTags(CYBRBIDTG_NominalWidth,width,
-				CYBRBIDTG_NominalHeight,height,
-				CYBRBIDTG_Depth,depth,
-				TAG_DONE);
+    if (SDL_Display)
+        depth =
+            GetCyberMapAttr (SDL_Display->RastPort.BitMap, CYBRMATTR_DEPTH);
 
-	if(idok!=INVALID_ID)
-	{
-		if(SDL_Display)
-		{
-			if(currently_fullscreen)
-				CloseScreen(SDL_Display);
-			else
-				UnlockPubScreen(NULL,SDL_Display);
-		}
-		SDL_Display=GFX_Display=OpenScreenTags(NULL,SA_Width,width,SA_Height,height,
-											SA_Depth,depth,SA_DisplayID,idok,
-											SA_ShowTitle,FALSE,
-											TAG_DONE);
-	}
+    idok = BestCModeIDTags (CYBRBIDTG_NominalWidth, width,
+                            CYBRBIDTG_NominalHeight, height,
+                            CYBRBIDTG_Depth, depth, TAG_DONE);
+
+    if (idok != INVALID_ID) {
+        if (SDL_Display) {
+            if (currently_fullscreen)
+                CloseScreen (SDL_Display);
+            else
+                UnlockPubScreen (NULL, SDL_Display);
+        }
+        SDL_Display = GFX_Display =
+            OpenScreenTags (NULL, SA_Width, width, SA_Height, height,
+                            SA_Depth, depth, SA_DisplayID, idok,
+                            SA_ShowTitle, FALSE, TAG_DONE);
+    }
 }
 
-static void get_real_resolution(_THIS, int* w, int* h)
+static void
+get_real_resolution (_THIS, int *w, int *h)
 {
-    *w = /*SDL_Display->Width*/ SDL_Window->Width-SDL_Window->BorderLeft-SDL_Window->BorderRight;
-    *h = /*SDL_Display->Height*/ SDL_Window->Height-SDL_Window->BorderBottom-SDL_Window->BorderTop;
+    *w = /*SDL_Display->Width */ SDL_Window->Width - SDL_Window->BorderLeft -
+        SDL_Window->BorderRight;
+    *h = /*SDL_Display->Height */ SDL_Window->Height -
+        SDL_Window->BorderBottom - SDL_Window->BorderTop;
 }
 
-static void move_cursor_to(_THIS, int x, int y)
+static void
+move_cursor_to (_THIS, int x, int y)
 {
 /*    XWarpPointer(SDL_Display, None, SDL_Root, 0, 0, 0, 0, x, y); */
 
 /* DA FARE! */
 }
 
-static void add_visual(_THIS, int depth, int class)
+static void
+add_visual (_THIS, int depth, int class)
 {
-	Uint32 tID;
+    Uint32 tID;
 
-	tID=BestCModeIDTags(CYBRBIDTG_Depth,depth,
-						CYBRBIDTG_NominalWidth,640,
-						CYBRBIDTG_NominalHeight,480,
-						TAG_DONE);
+    tID = BestCModeIDTags (CYBRBIDTG_Depth, depth,
+                           CYBRBIDTG_NominalWidth, 640,
+                           CYBRBIDTG_NominalHeight, 480, TAG_DONE);
 
-	if(tID!=INVALID_ID)
-	{
-		int n = this->hidden->nvisuals;
+    if (tID != INVALID_ID) {
+        int n = this->hidden->nvisuals;
 
-		this->hidden->visuals[n].depth = depth;
-		this->hidden->visuals[n].visual = tID;
-		this->hidden->visuals[n].bpp = GetCyberIDAttr(CYBRIDATTR_BPPIX,tID);
-		this->hidden->nvisuals++;
-	}
+        this->hidden->visuals[n].depth = depth;
+        this->hidden->visuals[n].visual = tID;
+        this->hidden->visuals[n].bpp = GetCyberIDAttr (CYBRIDATTR_BPPIX, tID);
+        this->hidden->nvisuals++;
+    }
 }
 
 #define TrueColor 1
 #define PseudoColor 2
 
-int CGX_GetVideoModes(_THIS)
+int
+CGX_GetVideoModes (_THIS)
 {
     int i;
-	ULONG nextid;
-	int nmodes=0;
+    ULONG nextid;
+    int nmodes = 0;
+
+    SDL_modelist = NULL;
+
+    nextid = NextDisplayInfo (INVALID_ID);
 
-	SDL_modelist=NULL;
+    while (nextid != INVALID_ID) {
+        if (IsCyberModeID (nextid)) {
+            DisplayInfoHandle h;
 
-	nextid=NextDisplayInfo(INVALID_ID);
+            if (h = FindDisplayInfo (nextid)) {
+                struct DimensionInfo info;
 
-	while(nextid!=INVALID_ID)
-	{
-		if(IsCyberModeID(nextid))
-		{
-			DisplayInfoHandle h;
+                if (GetDisplayInfoData
+                    (h, (char *) &info, sizeof (struct DimensionInfo),
+                     DTAG_DIMS, NULL)) {
+                    int ok = 0;
 
-			if(h=FindDisplayInfo(nextid))
-			{
-				struct DimensionInfo info;
+                    for (i = 0; i < nmodes; i++) {
+                        if (SDL_modelist[i]->w == (info.Nominal.MaxX + 1)
+                            && SDL_modelist[i]->h == (info.Nominal.MaxY + 1))
+                            ok = 1;
+                    }
 
-				if(GetDisplayInfoData(h,(char *)&info,sizeof(struct DimensionInfo),DTAG_DIMS,NULL))
-				{
-					int ok=0;
+                    if (!ok) {
+                        nmodes++;
 
-					for(i=0;i<nmodes;i++)
-					{
-						if(	SDL_modelist[i]->w == (info.Nominal.MaxX+1) &&
-							SDL_modelist[i]->h == (info.Nominal.MaxY+1) )
-							ok=1;
-					}
+                        SDL_modelist =
+                            (SDL_Rect **) SDL_realloc (SDL_modelist,
+                                                       (nmodes +
+                                                        1) *
+                                                       sizeof (SDL_Rect *));
+                        SDL_modelist[nmodes] = NULL;
 
-					if(!ok)
-					{
-						nmodes++;
+                        if (SDL_modelist) {
+                            SDL_modelist[nmodes - 1] = (SDL_Rect *)
+                                SDL_malloc (sizeof (SDL_Rect));
 
-						SDL_modelist = (SDL_Rect **)SDL_realloc(SDL_modelist,(nmodes+1)*sizeof(SDL_Rect *));
-						SDL_modelist[nmodes]=NULL;
+                            if (SDL_modelist[nmodes - 1] == NULL)
+                                break;
 
-						if ( SDL_modelist )
-						{
-							SDL_modelist[nmodes-1] = (SDL_Rect *)SDL_malloc(sizeof(SDL_Rect));
-
-							if ( SDL_modelist[nmodes-1] == NULL )
-								break;
-
-							SDL_modelist[nmodes-1]->x = 0;
-							SDL_modelist[nmodes-1]->y = 0;
-							SDL_modelist[nmodes-1]->w = info.Nominal.MaxX+1;
-							SDL_modelist[nmodes-1]->h = info.Nominal.MaxY+1;
-						}
-					}
-				}
-			}
-		}
-		nextid=NextDisplayInfo(nextid);
-	}
+                            SDL_modelist[nmodes - 1]->x = 0;
+                            SDL_modelist[nmodes - 1]->y = 0;
+                            SDL_modelist[nmodes - 1]->w =
+                                info.Nominal.MaxX + 1;
+                            SDL_modelist[nmodes - 1]->h =
+                                info.Nominal.MaxY + 1;
+                        }
+                    }
+                }
+            }
+        }
+        nextid = NextDisplayInfo (nextid);
+    }
 
 
-	this->hidden->nvisuals = 0;
-	/* Search for the visuals in deepest-first order, so that the first
-	   will be the richest one */
-	add_visual(this, 32, TrueColor);
-	add_visual(this, 24, TrueColor);
-	add_visual(this, 16, TrueColor);
-	add_visual(this, 15, TrueColor);
-	add_visual(this, 8, PseudoColor);
+    this->hidden->nvisuals = 0;
+    /* Search for the visuals in deepest-first order, so that the first
+       will be the richest one */
+    add_visual (this, 32, TrueColor);
+    add_visual (this, 24, TrueColor);
+    add_visual (this, 16, TrueColor);
+    add_visual (this, 15, TrueColor);
+    add_visual (this, 8, PseudoColor);
 
-	if(this->hidden->nvisuals == 0) {
-	    SDL_SetError("Found no sufficiently capable CGX visuals");
-		    return -1;
-	}
+    if (this->hidden->nvisuals == 0) {
+        SDL_SetError ("Found no sufficiently capable CGX visuals");
+        return -1;
+    }
 
-    if ( SDL_modelist == NULL ) {
-        SDL_modelist = (SDL_Rect **)SDL_malloc((1+1)*sizeof(SDL_Rect *));
+    if (SDL_modelist == NULL) {
+        SDL_modelist =
+            (SDL_Rect **) SDL_malloc ((1 + 1) * sizeof (SDL_Rect *));
         i = 0;
-        if ( SDL_modelist ) {
-            SDL_modelist[i] = (SDL_Rect *)SDL_malloc(sizeof(SDL_Rect));
-            if ( SDL_modelist[i] ) {
+        if (SDL_modelist) {
+            SDL_modelist[i] = (SDL_Rect *) SDL_malloc (sizeof (SDL_Rect));
+            if (SDL_modelist[i]) {
                 SDL_modelist[i]->x = 0;
                 SDL_modelist[i]->y = 0;
                 SDL_modelist[i]->w = SDL_Display->Width;
@@ -185,105 +191,111 @@
         }
     }
 
-    D( if ( SDL_modelist ) {
-        bug("CGX video mode list: (%ld)\n",nmodes);
-        for ( i=0; SDL_modelist[i]; ++i ) {
-            bug( "\t%ld x %ld\n",
-                SDL_modelist[i]->w, SDL_modelist[i]->h);
-        }
-    	}
+    D (if (SDL_modelist) {
+       bug ("CGX video mode list: (%ld)\n", nmodes);
+       for (i = 0; SDL_modelist[i]; ++i) {
+       bug ("\t%ld x %ld\n", SDL_modelist[i]->w, SDL_modelist[i]->h);}
+       }
     );
 
-    D(  { bug("CGX visuals list: (%ld)\n",this->hidden->nvisuals);
-
-	for(i=0;i<this->hidden->nvisuals;i++)
-		bug("\t%lx - depth: %ld bpp: %ld\n",this->hidden->visuals[i].visual,this->hidden->visuals[i].depth,this->hidden->visuals[i].bpp);
-	}
+    D ( {
+       bug ("CGX visuals list: (%ld)\n", this->hidden->nvisuals);
+       for (i = 0; i < this->hidden->nvisuals; i++)
+       bug ("\t%lx - depth: %ld bpp: %ld\n",
+            this->hidden->visuals[i].visual,
+            this->hidden->visuals[i].depth, this->hidden->visuals[i].bpp);}
     );
     return 0;
 }
 
-int CGX_SupportedVisual(_THIS, SDL_PixelFormat *format)
+int
+CGX_SupportedVisual (_THIS, SDL_PixelFormat * format)
 {
     int i;
-    for(i = 0; i < this->hidden->nvisuals; i++)
-	{
-		if(this->hidden->visuals[i].depth == format->BitsPerPixel) // Era bpp
-		    return 1;
-	}
+    for (i = 0; i < this->hidden->nvisuals; i++) {
+        if (this->hidden->visuals[i].depth == format->BitsPerPixel)     // Era bpp
+            return 1;
+    }
     return 0;
 }
 
-SDL_Rect **CGX_ListModes(_THIS, SDL_PixelFormat *format, Uint32 flags)
+SDL_Rect **
+CGX_ListModes (_THIS, SDL_PixelFormat * format, Uint32 flags)
 {
-    if ( CGX_SupportedVisual(this, format) ) {
-        if ( flags & SDL_FULLSCREEN ) {
-            return(SDL_modelist);
+    if (CGX_SupportedVisual (this, format)) {
+        if (flags & SDL_FULLSCREEN) {
+            return (SDL_modelist);
         } else {
-            return((SDL_Rect **)-1);
+            return ((SDL_Rect **) - 1);
         }
     } else {
-        return((SDL_Rect **)0);
+        return ((SDL_Rect **) 0);
     }
 }
 
-void CGX_FreeVideoModes(_THIS)
+void
+CGX_FreeVideoModes (_THIS)
 {
     int i;
 
-    if ( SDL_modelist ) {
-        for ( i=0; SDL_modelist[i]; ++i ) {
-            SDL_free(SDL_modelist[i]);
+    if (SDL_modelist) {
+        for (i = 0; SDL_modelist[i]; ++i) {
+            SDL_free (SDL_modelist[i]);
         }
-        SDL_free(SDL_modelist);
+        SDL_free (SDL_modelist);
         SDL_modelist = NULL;
     }
 }
 
-int CGX_ResizeFullScreen(_THIS)
+int
+CGX_ResizeFullScreen (_THIS)
 {
     int x, y;
     int real_w, real_h;
 
-    if ( currently_fullscreen ) {
+    if (currently_fullscreen) {
 /* Per ora non faccio nulla qui */
     }
-    return(1);
+    return (1);
 }
 
-void _QueueEnterFullScreen(_THIS)
+void
+_QueueEnterFullScreen (_THIS)
 {
 }
 
-int CGX_EnterFullScreen(_THIS)
+int
+CGX_EnterFullScreen (_THIS)
 {
     int okay;
-	 Uint32 saved_flags;
+    Uint32 saved_flags;
 
     okay = 1;
     saved_flags = this->screen->flags;
 
-    if ( ! currently_fullscreen )
-	{
+    if (!currently_fullscreen) {
         int real_w, real_h;
 
         /* Map the fullscreen window to blank the screen */
-        get_real_resolution(this, &real_w, &real_h);
+        get_real_resolution (this, &real_w, &real_h);
 
-		CGX_DestroyWindow(this,this->screen);
-		set_best_resolution(this, real_w,real_h);
+        CGX_DestroyWindow (this, this->screen);
+        set_best_resolution (this, real_w, real_h);
 
         currently_fullscreen = 1;
-		  this->screen->flags = saved_flags;
+        this->screen->flags = saved_flags;
 
-		  CGX_CreateWindow(this,this->screen,real_w,real_h,GetCyberMapAttr(SDL_Display->RastPort.BitMap,CYBRMATTR_DEPTH),this->screen->flags);
+        CGX_CreateWindow (this, this->screen, real_w, real_h,
+                          GetCyberMapAttr (SDL_Display->RastPort.BitMap,
+                                           CYBRMATTR_DEPTH),
+                          this->screen->flags);
 
         /* Set the new resolution */
-        okay = CGX_ResizeFullScreen(this);
-        if ( ! okay ) {
-            CGX_LeaveFullScreen(this);
+        okay = CGX_ResizeFullScreen (this);
+        if (!okay) {
+            CGX_LeaveFullScreen (this);
         }
-	/* Set the colormap */
+        /* Set the colormap */
 /*
 		if ( SDL_XColorMap ) {
 			XInstallColormap(SDL_Display, SDL_XColorMap);
@@ -291,26 +303,33 @@
 */
     }
 //    CGX_GrabInputNoLock(this, this->input_grab | SDL_GRAB_FULLSCREEN);
-    return(okay);
+    return (okay);
 }
 
-int CGX_LeaveFullScreen(_THIS)
+int
+CGX_LeaveFullScreen (_THIS)
 {
-    if ( currently_fullscreen ) {
-		int width,height;
-		if ( SDL_Window ) {
-			CloseWindow(SDL_Window);
-			SDL_Window=NULL;
-		}
-		CloseScreen(SDL_Display);
+    if (currently_fullscreen) {
+        int width, height;
+        if (SDL_Window) {
+            CloseWindow (SDL_Window);
+            SDL_Window = NULL;
+        }
+        CloseScreen (SDL_Display);
 
-		GFX_Display=SDL_Display=LockPubScreen(NULL);
+        GFX_Display = SDL_Display = LockPubScreen (NULL);
+
+        currently_fullscreen = 0;
 
-	        currently_fullscreen = 0;
-
-		CGX_CreateWindow(this,this->screen,this->screen->w,this->screen->h,GetCyberMapAttr(SDL_Display->RastPort.BitMap,CYBRMATTR_DEPTH),this->screen->flags);
-		CGX_ResizeImage(this,this->screen,0L);
+        CGX_CreateWindow (this, this->screen, this->screen->w,
+                          this->screen->h,
+                          GetCyberMapAttr (SDL_Display->RastPort.BitMap,
+                                           CYBRMATTR_DEPTH),
+                          this->screen->flags);
+        CGX_ResizeImage (this, this->screen, 0L);
     }
 
-    return(0);
+    return (0);
 }
+
+/* vi: set ts=4 sw=4 expandtab: */