00001
00002
00003
00004
00005 #include "FigureToFile.h"
00006 #include "win_mem_alloc.h"
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
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