home *** CD-ROM | disk | FTP | other *** search
/ Fresh Fish 2 / FFMCD02.bin / new / amigalibdisks / disk945 / iffconvert / src / filereq.c next >
C/C++ Source or Header  |  1993-12-21  |  3KB  |  107 lines

  1.  
  2. #include <libraries/dos.h>
  3. #include <libraries/reqtools.h>
  4. #include <proto/reqtools.h>
  5. #include <intuition/intuition.h>
  6. #include <proto/graphics.h>
  7.  
  8. #include <stdio.h>
  9. #include <stdlib.h>
  10. #include <string.h>
  11.  
  12. /* #include "reqtools_inline.h" */
  13.  
  14. extern struct ReqToolsBase *ReqToolsBase;
  15.  
  16. void * rtAllocRequestA();
  17.  
  18. static struct rtFileRequester *filereq=NULL;
  19. static char *returnstring=NULL;
  20. static char filename[128]="";
  21.  
  22. static char *modestr[]={"Load picture","Save picture","Delete file"};
  23. static char *gadtxt[]={"Load","Save","Delete"};
  24.  
  25. /*
  26. #define RED(s) ((s)>>8)
  27. #define GREEN(s) (((s)>>4)&0xf)
  28. #define BLUE(s) ((s)&0xf)
  29. */
  30.  
  31. int InitRequest(void)
  32. {
  33.    if (filereq = rtAllocRequestA ((ULONG)RT_FILEREQ, NULL))
  34.       return(0); /* all OK */
  35.    else return(1); /* No Memory */
  36. }
  37. void FreeRequest(void)
  38. {
  39.    if(filereq) rtFreeRequest(filereq);
  40.    filereq=NULL;
  41.    if(returnstring) free(returnstring);
  42.    returnstring=NULL;
  43. }
  44. static char *catstring(char *s1,char *s2)
  45. {
  46.    int len1,len2;
  47.    len1=strlen(s1);
  48.    len2=strlen(s2);
  49.    if(returnstring) free(returnstring);
  50.    returnstring=NULL;
  51.    if(s1[len1-1]==':') {
  52.       returnstring=malloc(len1+len2+1);
  53.       if(!returnstring) return(0L);
  54.       strcpy(returnstring,s1);
  55.       strcat(returnstring,s2);
  56.       return(returnstring);
  57.    } else {
  58.       returnstring=malloc(len1+len2+2);
  59.       if(!returnstring) return(0L);
  60.       strcpy(returnstring,s1);
  61.       strcat(returnstring,"/");
  62.       strcat(returnstring,s2);
  63.       return(returnstring);
  64.    }
  65. }
  66. char *FileRequest(struct Window *win,short mode)
  67. {
  68. /*   long col0,col1; */
  69.    char *ret;
  70.  
  71. /*   col0=GetRGB4(win->WScreen->ViewPort.ColorMap,0L);
  72.    col1=GetRGB4(win->WScreen->ViewPort.ColorMap,1L);
  73.  
  74.    SetRGB4(&win->WScreen->ViewPort,0L,0L,0L,0L);
  75.    SetRGB4(&win->WScreen->ViewPort,1L,15L,15L,15L); */
  76.  
  77.    if(mode) {
  78.       if(rtFileRequest(filereq,filename,modestr[mode],
  79.          (ULONG)RT_Window,win,
  80.          (ULONG)RTFI_OkText,gadtxt[mode],
  81.          (ULONG)RTFI_Flags,(ULONG)FREQF_SAVE,(ULONG)TAG_END)) {
  82.          ret=catstring(filereq->Dir,filename);
  83.          rtFreeReqBuffer(filereq);
  84. /*         SetRGB4(&win->WScreen->ViewPort,0L,RED(col0),GREEN(col0),BLUE(col0));
  85.          SetRGB4(&win->WScreen->ViewPort,1L,RED(col1),GREEN(col1),BLUE(col1)); */
  86.          return(ret);
  87.       } else {
  88. /*         SetRGB4(&win->WScreen->ViewPort,0L,RED(col0),GREEN(col0),BLUE(col0));
  89.          SetRGB4(&win->WScreen->ViewPort,1L,RED(col1),GREEN(col1),BLUE(col1)); */
  90.          return(NULL);
  91.       }
  92.    } else {
  93.       if(rtFileRequest(filereq,filename,modestr[mode],
  94.          (ULONG)RTFI_OkText,gadtxt[mode],
  95.          (ULONG)RT_Window,win,(ULONG)TAG_END)) {
  96. /*         SetRGB4(&win->WScreen->ViewPort,0L,RED(col0),GREEN(col0),BLUE(col0));
  97.          SetRGB4(&win->WScreen->ViewPort,1L,RED(col1),GREEN(col1),BLUE(col1)); */
  98.          return(catstring(filereq->Dir,filename));
  99.       } else {
  100. /*         SetRGB4(&win->WScreen->ViewPort,0L,RED(col0),GREEN(col0),BLUE(col0));
  101.          SetRGB4(&win->WScreen->ViewPort,1L,RED(col1),GREEN(col1),BLUE(col1)); */
  102.          return(NULL);
  103.       }
  104.    }
  105. }
  106.  
  107.