/* Native File Dialog User API http://www.frogtoss.com/labs */ #ifndef _NFD_H #define _NFD_H #include #include #include #include /* denotes UTF-8 char */ typedef char nfdchar_t; typedef std::function nfdselcallback_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_.c */ /* single file open dialog */ nfdresult_t NFD_OpenDialog( const std::vector& filterList, const nfdchar_t *defaultPath, nfdchar_t **outPath, nfdselcallback_t selCallback = NULL ); /* multiple file open dialog */ nfdresult_t NFD_OpenDialogMultiple( const std::vector& filterList, const nfdchar_t *defaultPath, nfdpathset_t *outPaths, nfdselcallback_t selCallback = NULL ); /* save dialog */ nfdresult_t NFD_SaveDialog( const std::vector& filterList, const nfdchar_t *defaultPath, nfdchar_t **outPath, nfdselcallback_t selCallback = NULL ); /* 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 ); #endif