mirror of
				https://github.com/RetroDECK/Duckstation.git
				synced 2025-04-10 19:15:14 +00:00 
			
		
		
		
	
		
			
	
	
		
			75 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
		
		
			
		
	
	
			75 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
|   | /*
 | ||
|  |   Native File Dialog | ||
|  | 
 | ||
|  |   User API | ||
|  | 
 | ||
|  |   http://www.frogtoss.com/labs
 | ||
|  |  */ | ||
|  | 
 | ||
|  | 
 | ||
|  | #ifndef _NFD_H
 | ||
|  | #define _NFD_H
 | ||
|  | 
 | ||
|  | #ifdef __cplusplus
 | ||
|  | extern "C" { | ||
|  | #endif
 | ||
|  | 
 | ||
|  | #include <stddef.h>
 | ||
|  | 
 | ||
|  | /* denotes UTF-8 char */ | ||
|  | typedef char nfdchar_t; | ||
|  | 
 | ||
|  | /* opaque data structure -- see NFD_PathSet_* */ | ||
|  | typedef struct { | ||
|  |     nfdchar_t *buf; | ||
|  |     size_t *indices; /* byte offsets into buf */ | ||
|  |     size_t count;    /* number of indices into buf */ | ||
|  | }nfdpathset_t; | ||
|  | 
 | ||
|  | typedef enum { | ||
|  |     NFD_ERROR,       /* programmatic error */ | ||
|  |     NFD_OKAY,        /* user pressed okay, or successful return */ | ||
|  |     NFD_CANCEL       /* user pressed cancel */ | ||
|  | }nfdresult_t; | ||
|  |      | ||
|  | 
 | ||
|  | /* nfd_<targetplatform>.c */ | ||
|  | 
 | ||
|  | /* single file open dialog */     | ||
|  | nfdresult_t NFD_OpenDialog( const nfdchar_t *filterList, | ||
|  |                             const nfdchar_t *defaultPath, | ||
|  |                             nfdchar_t **outPath ); | ||
|  | 
 | ||
|  | /* multiple file open dialog */     | ||
|  | nfdresult_t NFD_OpenDialogMultiple( const nfdchar_t *filterList, | ||
|  |                                     const nfdchar_t *defaultPath, | ||
|  |                                     nfdpathset_t *outPaths ); | ||
|  | 
 | ||
|  | /* save dialog */ | ||
|  | nfdresult_t NFD_SaveDialog( const nfdchar_t *filterList, | ||
|  |                             const nfdchar_t *defaultPath, | ||
|  |                             nfdchar_t **outPath ); | ||
|  | 
 | ||
|  | 
 | ||
|  | /* select folder dialog */ | ||
|  | nfdresult_t NFD_PickFolder( const nfdchar_t *defaultPath, | ||
|  |                             nfdchar_t **outPath); | ||
|  | 
 | ||
|  | /* nfd_common.c */ | ||
|  | 
 | ||
|  | /* get last error -- set when nfdresult_t returns NFD_ERROR */ | ||
|  | const char *NFD_GetError( void ); | ||
|  | /* get the number of entries stored in pathSet */ | ||
|  | size_t      NFD_PathSet_GetCount( const nfdpathset_t *pathSet ); | ||
|  | /* Get the UTF-8 path at offset index */ | ||
|  | nfdchar_t  *NFD_PathSet_GetPath( const nfdpathset_t *pathSet, size_t index ); | ||
|  | /* Free the pathSet */     | ||
|  | void        NFD_PathSet_Free( nfdpathset_t *pathSet ); | ||
|  | 
 | ||
|  | 
 | ||
|  | #ifdef __cplusplus
 | ||
|  | } | ||
|  | #endif
 | ||
|  | 
 | ||
|  | #endif
 |