
#include <exec/types.h>
#include <intuition/intuition.h>
#include <intuition/screens.h>
#include <graphics/text.h>
#include <stdio.h>

#include <resources.h>


/*****************************************************************
****	Own Lib Functions				      ****
*****************************************************************/

extern void ltoa( char * , long );

extern void strrev( char * );


/*****************************************************************
****	File/Dir/Fonts/Screen requests			      ****
*****************************************************************/

extern struct FileRequester *AskDirectory( char * , char * );

extern struct FileRequester *AskFile( char * , char * , char * );

extern struct FontRequester *AskFonts( char * , struct TextAttr * );

extern struct ScreenModeRequester *AskScreen( char * );

/*****************************************************************
****	Messages requests				      ****
*****************************************************************/

extern long Message( char * , char * );

extern LONG Overwrite( char *type , char *name );


/*****************************************************************
****	Path builders and filename extractor		      ****
*****************************************************************/

extern char *BaseName( char * );

extern char *PathName( char * , char * );

extern void MakePath( char * );


/*****************************************************************
****	Get informations about a file			      ****
*****************************************************************/

extern short GetInfo( struct FileInfoBlock * , char * );

extern struct DateTime *GetDate( struct FileInfoBlock * );


/*****************************************************************
****	Launch cli command				      ****
*****************************************************************/

extern short Launch( char * , BOOL );   /* This function is obsolete.*/

extern short StartCLI( char * , BOOL , char * , char * );

/*****************************************************************
****	Special output/input interface for fgets & fputs      ****
*****************************************************************/

extern void OutputString( char * , FILE * );

extern void InputString( char * , int , FILE * );


/*****************************************************************
****	Display ID Screen List builder			      ****
*****************************************************************/

struct ScreenNode {
    struct Node node;
    char *name;
    ULONG ID;
};

extern ULONG BuildScreenList( struct List * , ULONG );

extern void FreeScreenList( struct List *ScrList );


/*****************************************************************
****	All in one open/close IFF File handler		      ****
*****************************************************************/

extern struct IFFHandle *OpenIffFile( char *name , long mode );

extern void CloseIffFile( struct IFFHandle *iff );


/*****************************************************************
****	Load struct image from iff files		      ****
*****************************************************************/

extern struct Image *LoadIFFImage( char * );

extern void FreeIFFImage( struct Image * );


/*****************************************************************
****	Extras Own Lib Functions			      ****
*****************************************************************/

extern void WinControl( void );
extern BOOL AddWinC( struct Window *, void (*)(void) );
extern void RemWinC( struct Window * );
extern void SleepWinC( void );                  /* Nécessite le 3.0 */
extern void AwakeWinC( void );                  /* Nécessite le 3.0 */

extern void ModifyTag( struct TagItem *tags , ULONG type , LONG data );

extern struct Node *ChooseInList( char * , struct List * , long , long );

extern void ViewAmigaGuide( struct Screen * , char * );

/*****************************************************************
****	Extras Own Lib variables			      ****
*****************************************************************/

extern struct IFFParseBase *IFFParseBase;

#define WinSignal(w) (1<<(w)->UserPort->mp_SigBit)

