FigureToFile.c

Go to the documentation of this file.
00001 /*-----------------------------------------------------------------------------------*/
00002 /* INRIA 2006 */
00003 /* Allan CORNET */
00004 /*-----------------------------------------------------------------------------------*/
00005 #include "FigureToFile.h"
00006 #include "win_mem_alloc.h" /* MALLOC */
00007 #include "../../../modules/graphics/includes/xs2file.h"
00008 /*-----------------------------------------------------------------------------------*/
00009 #define stricmp _stricmp
00010 /*-----------------------------------------------------------------------------------*/
00011 extern void ExportBMP(struct BCG *ScilabGC,char *pszflname);
00012 extern void ExportEMF(struct BCG *ScilabGC,char *pszflname);
00013 extern BOOL ExportStyle (struct BCG * ScilabGC);
00014 extern void CallTranslateMacroGraphicWindow(char *string);
00015 /*-----------------------------------------------------------------------------------*/
00016 extern LS ls;
00017 /*-----------------------------------------------------------------------------------*/
00018 static void ModifyFilenameExtension(char *Filename,char *ext);
00019 /*-----------------------------------------------------------------------------------*/
00020 void SavePs (struct BCG *ScilabGC)
00021 {
00022   char *d, ori;
00023   char filename[MAXSTR],filename1[MAXSTR];
00024   BYTE *s;
00025   char str[1024];
00026   char formatmacro[]= "[SAVESCG]Export to %s[EOS]%s[EOS]";
00027   int flag, ierr = 0;
00029   ls.use_printer = 0;
00030   if (ExportStyle (ScilabGC) == FALSE) return;
00031 
00033   d = filename;
00034 
00035   switch (ls.ps_type)
00036   {
00037     case 0:
00038                 {
00039                         wsprintf(str,formatmacro,"Postscript","*.eps");
00040                         CallTranslateMacroGraphicWindow(str);
00041                         s = str;
00042                         flag = SciOpenSave (ScilabGC->hWndParent, &s,TRUE,&d, &ierr);
00043                         if (flag == 0 || ierr == 1) return;
00044                         *d = '\0';
00045 
00046                         ModifyFilenameExtension(filename,".pos");
00047 
00049                         SetCursor (LoadCursor (NULL, IDC_WAIT));
00050                         wininfo (MSG_SCIMSG96);
00051                         dos2win32 (filename, filename1);
00052                         scig_toPs (ScilabGC->CurWindow, ls.colored, filename1, "Pos");
00053                         ori = (ls.land == 1) ? 'l' : 'p';
00054                         ScilabPsToEps (ori, filename1, filename);
00055                         wininfo (MSG_SCIMSG97);
00056                         SetCursor (LoadCursor (NULL, IDC_CROSS));
00057                 }
00058                 break;
00059     case 1:
00060                 {
00061                         wsprintf(str,formatmacro,"Postscript No Preamble","*.ps");
00062 
00063                         CallTranslateMacroGraphicWindow(str);
00064                         s = str;
00065                         flag = SciOpenSave (ScilabGC->hWndParent, &s,TRUE,&d, &ierr);
00066                         if (flag == 0 || ierr == 1) return;
00067                         *d = '\0';
00068 
00069                         ModifyFilenameExtension(filename,".ps");
00070 
00071                         SetCursor (LoadCursor (NULL, IDC_WAIT));
00072                         scig_toPs (ScilabGC->CurWindow, ls.colored, filename, "Pos");
00073                         wininfo (MSG_SCIMSG98);
00074                         SetCursor (LoadCursor (NULL, IDC_CROSS));
00075                 }
00076                 break;
00077 
00078     case 2:
00079                 {
00080                         wsprintf(str,formatmacro,"Postscript-Latex","*.tex");
00081 
00082                         CallTranslateMacroGraphicWindow(str);
00083                         s = str;
00084                         flag = SciOpenSave (ScilabGC->hWndParent, &s,TRUE,&d, &ierr);
00085                         if (flag == 0 || ierr == 1) return;
00086                         *d = '\0';
00087 
00088                         ModifyFilenameExtension(filename,".tex");
00089 
00091                         SetCursor (LoadCursor (NULL, IDC_WAIT));
00092                         wininfo (MSG_SCIMSG99);
00093                         dos2win32 (filename, filename1);
00094                         scig_toPs (ScilabGC->CurWindow, ls.colored, filename1, "Pos");
00095                         ori = (ls.land == 1) ? 'l' : 'p';
00096                         ScilabPsToTeX (ori, filename1, filename, 1.0, 1.0);
00097                         wininfo (MSG_SCIMSG100);
00098                         SetCursor (LoadCursor (NULL, IDC_CROSS));
00099                 }
00100     break;
00101     case 3:
00102                 {
00103                         wsprintf(str,formatmacro,"Xfig","*.fig");
00104                         CallTranslateMacroGraphicWindow(str);
00105                         s = str;
00106                         flag = SciOpenSave (ScilabGC->hWndParent, &s,TRUE,&d, &ierr);
00107                         if (flag == 0 || ierr == 1) return;
00108                         *d = '\0';
00109 
00110                         ModifyFilenameExtension(filename,".fig");
00111 
00112                         SetCursor (LoadCursor (NULL, IDC_WAIT));
00113                         scig_toPs (ScilabGC->CurWindow, ls.colored, filename, "Fig");
00114                         wininfo (MSG_SCIMSG101);
00115                         SetCursor (LoadCursor (NULL, IDC_CROSS));
00116                 }
00117                 break;
00118     case 4:
00119                 {
00120                         wsprintf(str,formatmacro,"gif","*.gif");
00121                         CallTranslateMacroGraphicWindow(str);
00122                         s = str;
00123                         flag = SciOpenSave (ScilabGC->hWndParent, &s,TRUE,&d, &ierr);
00124                         if (flag == 0 || ierr == 1) return;
00125                         *d = '\0';
00126 
00127                         ModifyFilenameExtension(filename,".gif");
00128 
00129                         SetCursor (LoadCursor (NULL, IDC_WAIT));
00130                         scig_toPs (ScilabGC->CurWindow, ls.colored, filename, "GIF");
00131                         wininfo (MSG_SCIMSG102);
00132                         SetCursor (LoadCursor (NULL, IDC_CROSS));
00133                 }
00134                 break;
00135     case 5:
00136                 {
00137                         wsprintf(str,formatmacro,"PPM","*.ppm");
00138                         CallTranslateMacroGraphicWindow(str);
00139                         s = str;
00140                         flag = SciOpenSave (ScilabGC->hWndParent, &s,TRUE,&d, &ierr);
00141                         if (flag == 0 || ierr == 1) return;
00142                         *d = '\0';
00143 
00144                         ModifyFilenameExtension(filename,".ppm");
00145 
00146                         SetCursor (LoadCursor (NULL, IDC_WAIT));
00147                         scig_toPs (ScilabGC->CurWindow, ls.colored, filename, "PPM");
00148                         wininfo (MSG_SCIMSG103);
00149                         SetCursor (LoadCursor (NULL, IDC_CROSS));
00150                 }
00151     break;
00152     case 6:
00153                 {
00154                         wsprintf(str,formatmacro,"Bmp","*.bmp");
00155                         CallTranslateMacroGraphicWindow(str);
00156                         s = str;
00157                         flag = SciOpenSave (ScilabGC->hWndParent, &s,TRUE,&d, &ierr);
00158                         if (flag == 0 || ierr == 1) return;
00159                         *d = '\0';
00160 
00161                         ModifyFilenameExtension(filename,".bmp");
00162 
00163                         SetCursor (LoadCursor (NULL, IDC_WAIT));
00164                         ExportBMP(ScilabGC,filename);
00165                         wininfo (MSG_SCIMSG104);
00166                         SetCursor (LoadCursor (NULL, IDC_CROSS));
00167                 }
00168     break;
00169     case 7:
00170                 {
00171                         wsprintf(str,formatmacro,"Enhanced Metafile","*.emf");
00172                         CallTranslateMacroGraphicWindow(str);
00173                         s = str;
00174                         flag = SciOpenSave (ScilabGC->hWndParent, &s,TRUE,&d, &ierr);
00175                         if (flag == 0 || ierr == 1) return;
00176                         *d = '\0';
00177 
00178                         ModifyFilenameExtension(filename,".emf");
00179 
00180                         SetCursor (LoadCursor (NULL, IDC_WAIT));
00181                         ExportEMF(ScilabGC,filename);
00182                         wininfo (MSG_SCIMSG104);
00183                         SetCursor (LoadCursor (NULL, IDC_CROSS));
00184                 }
00185     break;
00186   }
00187         
00188 }
00189 /*-----------------------------------------------------------------------------------*/
00190 void dos2win32 (char *filename, char *filename1)
00191 {
00192 #ifdef CVT_PATH_BEG
00193   if (filename[1] == ':')
00194     {
00195       *filename1++ = '/';
00196       *filename1++ = '/';
00197       *filename1++ = *filename++;
00198       filename++;
00199     }
00200 #endif
00201   while (*filename != '\0')
00202     {
00203       *filename1++ = *filename++;
00204       if (*(filename1 - 1) == '\\')
00205         *(filename1 - 1) = '/';
00206     }
00207   *filename1 = '\0';
00208 }
00209 /*-----------------------------------------------------------------------------------*/
00210 char * GetFileExtension(char* filename)
00211 {
00212         char *StrReturn=NULL;
00213         char ChaineTemp[MAX_PATH];
00214         char *buffer=NULL;
00215         char *lastdot=NULL;
00216         
00217         strcpy(ChaineTemp,filename);
00218         /* Recherche de l'extension du fichier */
00219         buffer=strtok(ChaineTemp,".");
00220         while ( buffer = strtok(NULL,"."))
00221         {
00222                 lastdot=buffer;
00223         }
00224 
00225         if (lastdot)
00226         {
00227                 StrReturn = (char *) MALLOC ((strlen(lastdot)+2)*sizeof(char));
00228                 strcpy(StrReturn,".");
00229                 strcat(StrReturn,lastdot);
00230         }
00231         else
00232         {
00233                 StrReturn = NULL;
00234         }
00235         return StrReturn;
00236 }
00237 /*-----------------------------------------------------------------------------------*/
00238 static void ModifyFilenameExtension(char *Filename,char *ext)
00239 {
00240         char *Ext=NULL;
00241         Ext=GetFileExtension(Filename);
00242         if (Ext)
00243         {
00244                 if (stricmp(Ext,ext)!=0)
00245                 {
00246                         strcat(Filename,ext);
00247                 }
00248                 if (Ext) {FREE(Ext);Ext=NULL;}
00249         }
00250         else strcat(Filename,ext);
00251 }
00252 /*-----------------------------------------------------------------------------------*/

Generated on Sun Mar 4 15:03:54 2007 for Scilab [trunk] by  doxygen 1.5.1