home *** CD-ROM | disk | FTP | other *** search
/ Media Share 9 / MEDIASHARE_09.ISO / pascal / spx10.zip / SPX_UTIL.ZIP / CEL2VSP.POC next >
Text File  |  1993-05-06  |  2KB  |  100 lines

  1. /*
  2.  * CEL2VSP.poc - This saves the cel to a VSP format.
  3.  *
  4.  * By Scott Ramsay
  5.  *
  6.  * For use with Animator Pro
  7.  *
  8.  */
  9.  
  10. #include "errcodes.h"
  11.  
  12. ErrCode writeVSP(FILE *f,Screen *cel)
  13. {
  14. int width,height,celcnt,i,j;
  15. short w,h;
  16. char *pixbuf = NULL;
  17. ErrCode err;
  18.  
  19.   celcnt = CelFrameCount();
  20.   GetScreenSize(cel,&width,&height);
  21.   w = width; h = height;
  22.   if ((pixbuf=malloc(width))==NULL)
  23.     {
  24.       err = Err_no_memory;
  25.       goto OUT;
  26.     }
  27.   CelSetFrame(0);
  28.   for (j=0;j<celcnt; j++)
  29.     {
  30.       if ((fwrite(&w,sizeof(w),1,f) != 1) || (fwrite(&h,sizeof(h),1,f) != 1))
  31.     {
  32.       err = Err_no_space;
  33.       goto OUT;
  34.     }
  35.       for (i=0; i<height; ++i)
  36.     {
  37.       GetBlock(cel,pixbuf,0,i,width,1);
  38.       if (fwrite(pixbuf,1,width,f) != width)
  39.     {
  40.       err = Err_no_space;
  41.       goto OUT;
  42.     }
  43.     }
  44.       CelNextFrame();
  45.     }
  46.   err = fflush(f);
  47. OUT:
  48.   if (pixbuf != NULL)
  49.     free(pixbuf);
  50.   return(err);
  51. }
  52.  
  53.  
  54. ErrCode SaveVSP(char *name)
  55. {
  56. Screen *cel;
  57. FILE *f;
  58. Errcode err;
  59. int width,height;
  60.  
  61.   if (DosExists(name))
  62.      {
  63.     char *pick[] = {"Yes","No"};
  64.  
  65.     if (Qchoice(pick,2,"Overwrite old \n%s?",name)!=1)
  66.        return(Err_abort);
  67.      }
  68.   cel = GetCelScreen();
  69.   GetScreenSize(cel,&width,&height);
  70.   if ((width>100) || (height>100))
  71.     {
  72.       err = Err_no_space;
  73.       goto OUT;
  74.     }
  75.   if ((f=fopen(name,"wb")) == NULL)
  76.     {
  77.       Qtext("Can't create vsp file %s", name);
  78.       return(Err_reported);
  79.     }
  80.   printf("Saving %d x %d vsp file", width, height);
  81.   err = writeVSP(f,cel);
  82. OUT:
  83.   fclose(f);
  84.   return(Qerror(err,"Trouble saving vsp file: %s", name));
  85. }
  86.  
  87.  
  88. main()
  89. {
  90. static char cel_name[80];
  91.  
  92.   GlobalVarGet("CEL2VSP_PATH",cel_name);
  93.   if (!CelExists())
  94.     Qtext("No cel to save!");
  95.   else
  96.     if (Qfile(".VSP","Save",cel_name,cel_name,TRUE,"Save cel in .VSP format"))
  97.       SaveVSP(cel_name);
  98.   GlobalVarSet("CEL2VSP_PATH",cel_name);
  99. }
  100.