⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sdl_main.c

📁 SDL库 在进行视频显示程序spcaview安装时必须的库文件
💻 C
📖 第 1 页 / 共 2 页
字号:
        short  prefs_resource;                prefs_resource = FSpOpenResFile (&prefs_fsp, fsRdPerm);        if ( prefs_resource == -1 ) /* this shouldn't happen, but... */            return 0;            UseResFile   (prefs_resource);        no_error = readPrefsResource (prefs);             CloseResFile (prefs_resource);    }        /* Fall back to application's resource fork (reading only, so this is safe) */    else {              no_error = readPrefsResource (prefs);     }    return no_error;}static int writePreferences (PrefsRecord *prefs) {        int    no_error = 1;    FSSpec prefs_fsp;        /* Get prefs file, create if it doesn't exist */    if ( getPrefsFile (&prefs_fsp, 1) ) {            short  prefs_resource;                prefs_resource = FSpOpenResFile (&prefs_fsp, fsRdWrPerm);        if (prefs_resource == -1)            return 0;        no_error = writePrefsResource (prefs, prefs_resource);        CloseResFile (prefs_resource);    }        return no_error;}/* This is where execution begins */int main(int argc, char *argv[]){#if !(defined(__APPLE__) && defined(__MACH__))#pragma unused(argc, argv)#endif	#define DEFAULT_ARGS "\p"                /* pascal string for default args */#define DEFAULT_VIDEO_DRIVER "\ptoolbox" /* pascal string for default video driver name */	#define DEFAULT_OUTPUT_TO_FILE 1         /* 1 == output to file, 0 == no output */#define VIDEO_ID_DRAWSPROCKET 1          /* these correspond to popup menu choices */#define VIDEO_ID_TOOLBOX      2    PrefsRecord prefs = { DEFAULT_ARGS, DEFAULT_VIDEO_DRIVER, DEFAULT_OUTPUT_TO_FILE }; 	#if !(defined(__APPLE__) && defined(__MACH__))	int     nargs;	char   **args;	char   *commandLine;		StrFileName  appNameText;#endif	int     videodriver     = VIDEO_ID_TOOLBOX;    int     settingsChanged = 0;        long	i;	/* Kyle's SDL command-line dialog code ... */#if !TARGET_API_MAC_CARBON	InitGraf    (&qd.thePort);	InitFonts   ();	InitWindows ();	InitMenus   ();	InitDialogs (nil);#endif	InitCursor ();	FlushEvents(everyEvent,0);#if !TARGET_API_MAC_CARBON	MaxApplZone ();#endif	MoreMasters ();	MoreMasters ();#if 0	/* Intialize SDL, and put up a dialog if we fail */	if ( SDL_Init (0) < 0 ) {#define kErr_OK		1#define kErr_Text	2        DialogPtr errorDialog;        short	  dummyType;    	Rect	  dummyRect;	    Handle    dummyHandle;	    short     itemHit;			errorDialog = GetNewDialog (1001, nil, (WindowPtr)-1);		if (errorDialog == NULL)		    return -1;		DrawDialog (errorDialog);				GetDialogItem (errorDialog, kErr_Text, &dummyType, &dummyHandle, &dummyRect);		SetDialogItemText (dummyHandle, "\pError Initializing SDL");		#if TARGET_API_MAC_CARBON		SetPort (GetDialogPort(errorDialog));#else		SetPort (errorDialog);#endif		do {			ModalDialog (nil, &itemHit);		} while (itemHit != kErr_OK);				DisposeDialog (errorDialog);		exit (-1);	}	atexit(cleanup_output);	atexit(SDL_Quit);#endif/* Set up SDL's QuickDraw environment  */#if !TARGET_API_MAC_CARBON	SDL_InitQuickDraw(&qd);#endif	 if ( readPreferences (&prefs) ) {		        if (SDL_memcmp(prefs.video_driver_name+1, "DSp", 3) == 0)            videodriver = 1;        else if (SDL_memcmp(prefs.video_driver_name+1, "toolbox", 7) == 0)            videodriver = 2;	 }	 		if ( CommandKeyIsDown() ) {#define kCL_OK		1#define kCL_Cancel	2#define kCL_Text	3#define kCL_File	4#define kCL_Video   6               DialogPtr commandDialog;        short	  dummyType;        Rect	  dummyRect;        Handle    dummyHandle;        short     itemHit;   #if TARGET_API_MAC_CARBON        ControlRef control;   #endif                /* Assume that they will change settings, rather than do exhaustive check */        settingsChanged = 1;                /* Create dialog and display it */        commandDialog = GetNewDialog (1000, nil, (WindowPtr)-1);    #if TARGET_API_MAC_CARBON        SetPort ( GetDialogPort(commandDialog) );    #else        SetPort (commandDialog);     #endif                   /* Setup controls */    #if TARGET_API_MAC_CARBON        GetDialogItemAsControl(commandDialog, kCL_File, &control);        SetControlValue (control, prefs.output_to_file);    #else        GetDialogItem   (commandDialog, kCL_File, &dummyType, &dummyHandle, &dummyRect); /* MJS */        SetControlValue ((ControlHandle)dummyHandle, prefs.output_to_file );    #endif        GetDialogItem     (commandDialog, kCL_Text, &dummyType, &dummyHandle, &dummyRect);        SetDialogItemText (dummyHandle, prefs.command_line);    #if TARGET_API_MAC_CARBON        GetDialogItemAsControl(commandDialog, kCL_Video, &control);        SetControlValue (control, videodriver);   #else        GetDialogItem   (commandDialog, kCL_Video, &dummyType, &dummyHandle, &dummyRect);        SetControlValue ((ControlRef)dummyHandle, videodriver);     #endif        SetDialogDefaultItem (commandDialog, kCL_OK);        SetDialogCancelItem  (commandDialog, kCL_Cancel);        do {        		        	ModalDialog(nil, &itemHit); /* wait for user response */                        /* Toggle command-line output checkbox */	        	if ( itemHit == kCL_File ) {        #if TARGET_API_MAC_CARBON        		GetDialogItemAsControl(commandDialog, kCL_File, &control);        		SetControlValue (control, !GetControlValue(control));        #else        		GetDialogItem(commandDialog, kCL_File, &dummyType, &dummyHandle, &dummyRect); /* MJS */        		SetControlValue((ControlHandle)dummyHandle, !GetControlValue((ControlHandle)dummyHandle) );        #endif        	}        } while (itemHit != kCL_OK && itemHit != kCL_Cancel);        /* Get control values, even if they did not change */        GetDialogItem     (commandDialog, kCL_Text, &dummyType, &dummyHandle, &dummyRect); /* MJS */        GetDialogItemText (dummyHandle, prefs.command_line);    #if TARGET_API_MAC_CARBON        GetDialogItemAsControl(commandDialog, kCL_File, &control);        prefs.output_to_file = GetControlValue(control);	#else        GetDialogItem (commandDialog, kCL_File, &dummyType, &dummyHandle, &dummyRect); /* MJS */        prefs.output_to_file = GetControlValue ((ControlHandle)dummyHandle); 	#endif    #if TARGET_API_MAC_CARBON        GetDialogItemAsControl(commandDialog, kCL_Video, &control);        videodriver = GetControlValue(control);    #else        GetDialogItem (commandDialog, kCL_Video, &dummyType, &dummyHandle, &dummyRect);        videodriver = GetControlValue ((ControlRef)dummyHandle);     #endif        DisposeDialog (commandDialog);        if (itemHit == kCL_Cancel ) {        	exit (0);        }	}        /* Set pseudo-environment variables for video driver, update prefs */	switch ( videodriver ) {	   case VIDEO_ID_DRAWSPROCKET: 	      SDL_putenv("SDL_VIDEODRIVER=DSp");	      SDL_memcpy(prefs.video_driver_name, "\pDSp", 4);	      break;	   case VIDEO_ID_TOOLBOX:	      SDL_putenv("SDL_VIDEODRIVER=toolbox");	      SDL_memcpy(prefs.video_driver_name, "\ptoolbox", 8);	      break;	}#if !(defined(__APPLE__) && defined(__MACH__))    /* Redirect standard I/O to files */	if ( prefs.output_to_file ) {		freopen (STDOUT_FILE, "w", stdout);		freopen (STDERR_FILE, "w", stderr);	} else {		fclose (stdout);		fclose (stderr);	}#endif       if (settingsChanged) {        /* Save the prefs, even if they might not have changed (but probably did) */        if ( ! writePreferences (&prefs) )            fprintf (stderr, "WARNING: Could not save preferences!\n");    }   #if !(defined(__APPLE__) && defined(__MACH__))    appNameText[0] = 0;    getCurrentAppName (appNameText); /* check for error here ? */    commandLine = (char*) malloc (appNameText[0] + prefs.command_line[0] + 2);    if ( commandLine == NULL ) {       exit(-1);    }    /* Rather than rewrite ParseCommandLine method, let's replace  */    /* any spaces in application name with underscores,            */    /* so that the app name is only 1 argument                     */       for (i = 1; i < 1+appNameText[0]; i++)        if ( appNameText[i] == ' ' ) appNameText[i] = '_';    /* Copy app name & full command text to command-line C-string */          SDL_memcpy(commandLine, appNameText + 1, appNameText[0]);    commandLine[appNameText[0]] = ' ';    SDL_memcpy(commandLine + appNameText[0] + 1, prefs.command_line + 1, prefs.command_line[0]);    commandLine[ appNameText[0] + 1 + prefs.command_line[0] ] = '\0';    /* Parse C-string into argv and argc */    nargs = ParseCommandLine (commandLine, NULL);    args = (char **)malloc((nargs+1)*(sizeof *args));    if ( args == NULL ) {		exit(-1);	}	ParseCommandLine (commandLine, args);        	/* Run the main application code */	SDL_main(nargs, args);	free (args);	free (commandLine);      	/* Remove useless stdout.txt and stderr.txt */   	cleanup_output ();#else // defined(__APPLE__) && defined(__MACH__)	SDL_main(argc, argv);#endif   		/* Exit cleanly, calling atexit() functions */	exit (0);    	/* Never reached, but keeps the compiler quiet */	return (0);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -