home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / mbug / mbug035.arc / GRAFFILE.C < prev    next >
Text File  |  1979-12-31  |  2KB  |  84 lines

  1.  
  2. /********************************************************/
  3. /*                            */
  4. /*    File-Handling for MX-80 Bit-Plot Graphics    */
  5. /*                            */
  6. /*    Don Brittain        3 January 1983        */
  7. /*                            */
  8. /********************************************************/
  9.  
  10. #define HSIZE 320
  11. #define VSIZE 328
  12.  
  13. extern int horsize, versize;
  14. extern short grafbuf[HSIZE][VSIZE/8];
  15.  
  16. static char grafname[13];
  17.  
  18. #include "libc.h"
  19.  
  20. savegraf(h,v,name)    /* saves graph having dimensions h x v  */
  21.             /* under the filename NAME.GRF   */
  22. int h,v;
  23. char *name;
  24.  
  25. {
  26.     FILE *fopen(), *fp;
  27.     int vrt;
  28.     register i,j;
  29.     
  30.     vrt=(versize+7)/8;
  31.     graffcb(name);
  32.     fp=fopen(grafname,"w");
  33.     putw(h,fp);
  34.     putw(v,fp);            /* NO ERROR CHECKING !!!!! */
  35.     for(j=0; j<vrt; j++)
  36.     for(i=0; i<horsize; i++)
  37.         putc(grafbuf[i][j],fp);
  38.     fclose(fp);
  39. }
  40.  
  41.  
  42. getgraf(name)        /* retrieves graph saved by savegraf()     */
  43.  
  44. char *name;
  45.  
  46. {
  47.     FILE *fopen(), *fp;
  48.     int vrt;
  49.     register i,j;
  50.                     /* ONLY MINIMAL ERROR CHECKING !!!!! */
  51.     graffcb(name);
  52.     fp=fopen(grafname,"r");
  53.     if(fp==NULL)     {
  54.     printf("\nERROR: %s does not exist on ",grafname);
  55.     printf("the current drive.\n\n");
  56.     return();    }
  57.     horsize=getw(fp);
  58.     versize=getw(fp);
  59.     vrt=(versize+7)/8;
  60.     printf("\nThe graph in %s has the following dimensions:",grafname);
  61.     printf("\n\tHorizontal size: %3d",horsize);
  62.     printf("\n\tVertical size: %3d\n\n",versize);
  63.     for(j=0; j<vrt; j++)
  64.     for(i=0; i<horsize; i++)
  65.         grafbuf[i][j]=getc(fp);
  66.     fclose(fp);
  67. }
  68.  
  69.  
  70. graffcb(name)        /* changes "name" to NAME.GRF */
  71.  
  72. char *name;
  73.  
  74. {
  75.     register i;
  76.  
  77.     for(i=0; (grafname[i]=toupper(name[i]))!='\0'; i++);
  78.     grafname[i++]='.';
  79.     grafname[i++]='G';
  80.     grafname[i++]='R';
  81.     grafname[i++]='F';
  82.     grafname[i]='\0';
  83. }
  84.