text: /*
    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
  