Skip to content
Snippets Groups Projects
Commit b8b36a96 authored by Christophe Geuzaine's avatar Christophe Geuzaine
Browse files

make sure -format recognizes all the same formats as CreateFile

parent 2795e213
No related branches found
No related tags found
No related merge requests found
......@@ -631,32 +631,14 @@ void GetOptions(int argc, char *argv[])
CTX::instance()->mesh.fileFormat = FORMAT_MSH;
CTX::instance()->mesh.mshFileVersion = 2.0;
}
else if(!strcmp(argv[i], "msh"))
CTX::instance()->mesh.fileFormat = FORMAT_MSH;
else if(!strcmp(argv[i], "unv"))
CTX::instance()->mesh.fileFormat = FORMAT_UNV;
else if(!strcmp(argv[i], "vrml"))
CTX::instance()->mesh.fileFormat = FORMAT_VRML;
else if(!strcmp(argv[i], "ply2"))
CTX::instance()->mesh.fileFormat = FORMAT_PLY2;
else if(!strcmp(argv[i], "stl"))
CTX::instance()->mesh.fileFormat = FORMAT_STL;
else if(!strcmp(argv[i], "mesh"))
CTX::instance()->mesh.fileFormat = FORMAT_MESH;
else if(!strcmp(argv[i], "bdf"))
CTX::instance()->mesh.fileFormat = FORMAT_BDF;
else if(!strcmp(argv[i], "p3d"))
CTX::instance()->mesh.fileFormat = FORMAT_P3D;
else if(!strcmp(argv[i], "cgns"))
CTX::instance()->mesh.fileFormat = FORMAT_CGNS;
else if(!strcmp(argv[i], "diff"))
CTX::instance()->mesh.fileFormat = FORMAT_DIFF;
else if(!strcmp(argv[i], "med"))
CTX::instance()->mesh.fileFormat = FORMAT_MED;
else if(!strcmp(argv[i], "ir3"))
CTX::instance()->mesh.fileFormat = FORMAT_IR3;
else
Msg::Fatal("Unknown mesh format");
else{
int format = GetFileFormatFromExtension(std::string(".") + argv[i]);
if(format < 0){
Msg::Error("Unknown mesh format `%s', using `msh' instead", argv[i]);
format = FORMAT_MSH;
}
CTX::instance()->mesh.fileFormat = format;
}
i++;
}
else
......
......@@ -27,9 +27,8 @@
#include "gl2yuv.h"
#endif
int GuessFileFormatFromFileName(std::string fileName)
int GetFileFormatFromExtension(const std::string &ext)
{
std::string ext = SplitFileName(fileName)[2];
if (ext == ".geo") return FORMAT_GEO;
else if(ext == ".msh") return FORMAT_MSH;
else if(ext == ".pos") return FORMAT_POS;
......@@ -73,6 +72,12 @@ int GuessFileFormatFromFileName(std::string fileName)
else return -1;
}
int GuessFileFormatFromFileName(const std::string &fileName)
{
std::string ext = SplitFileName(fileName)[2];
return GetFileFormatFromExtension(ext);
}
std::string GetDefaultFileName(int format)
{
std::vector<std::string> split = SplitFileName(GModel::current()->getFileName());
......@@ -158,10 +163,10 @@ static PixelBuffer *GetCompositePixelBuffer(GLenum format, GLenum type)
}
#endif
void CreateOutputFile(std::string fileName, int format, bool redraw)
void CreateOutputFile(const std::string &fileName, int format, bool redraw)
{
if(fileName.empty())
fileName = GetDefaultFileName(format);
std::string name = fileName;
if(name.empty()) name = GetDefaultFileName(format);
int oldFormat = CTX::instance()->print.fileFormat;
CTX::instance()->print.fileFormat = format;
......@@ -169,120 +174,120 @@ void CreateOutputFile(std::string fileName, int format, bool redraw)
bool error = false;
if(redraw)
Msg::StatusBar(2, true, "Writing '%s'...", fileName.c_str());
Msg::StatusBar(2, true, "Writing '%s'...", name.c_str());
switch (format) {
case FORMAT_AUTO:
CreateOutputFile(fileName, GuessFileFormatFromFileName(fileName), false);
CreateOutputFile(name, GuessFileFormatFromFileName(name), false);
break;
case FORMAT_OPT:
PrintOptions(0, GMSH_FULLRC, 1, 1, fileName.c_str());
PrintOptions(0, GMSH_FULLRC, 1, 1, name.c_str());
break;
case FORMAT_MSH:
if(GModel::current()->getMeshPartitions().size() &&
CTX::instance()->mesh.mshFilePartitioned == 1)
GModel::current()->writePartitionedMSH
(fileName, CTX::instance()->mesh.binary, CTX::instance()->mesh.saveAll,
(name, CTX::instance()->mesh.binary, CTX::instance()->mesh.saveAll,
CTX::instance()->mesh.saveParametric, CTX::instance()->mesh.scalingFactor);
else if(GModel::current()->getMeshPartitions().size() &&
CTX::instance()->mesh.mshFilePartitioned == 2)
GModel::current()->writeMSH
(fileName, CTX::instance()->mesh.mshFileVersion,
(name, CTX::instance()->mesh.mshFileVersion,
CTX::instance()->mesh.binary, CTX::instance()->mesh.saveAll,
CTX::instance()->mesh.saveParametric, CTX::instance()->mesh.scalingFactor,
0, -1000);
else
GModel::current()->writeMSH
(fileName, CTX::instance()->mesh.mshFileVersion,
(name, CTX::instance()->mesh.mshFileVersion,
CTX::instance()->mesh.binary, CTX::instance()->mesh.saveAll,
CTX::instance()->mesh.saveParametric, CTX::instance()->mesh.scalingFactor);
break;
case FORMAT_STL:
GModel::current()->writeSTL
(fileName, CTX::instance()->mesh.binary, CTX::instance()->mesh.saveAll,
(name, CTX::instance()->mesh.binary, CTX::instance()->mesh.saveAll,
CTX::instance()->mesh.scalingFactor);
break;
case FORMAT_VRML:
GModel::current()->writeVRML
(fileName, CTX::instance()->mesh.saveAll, CTX::instance()->mesh.scalingFactor);
(name, CTX::instance()->mesh.saveAll, CTX::instance()->mesh.scalingFactor);
break;
case FORMAT_PLY2:
GModel::current()->writePLY2(fileName);
GModel::current()->writePLY2(name);
break;
case FORMAT_UNV:
GModel::current()->writeUNV
(fileName, CTX::instance()->mesh.saveAll, CTX::instance()->mesh.saveGroupsOfNodes,
(name, CTX::instance()->mesh.saveAll, CTX::instance()->mesh.saveGroupsOfNodes,
CTX::instance()->mesh.scalingFactor);
break;
case FORMAT_VTK:
GModel::current()->writeVTK
(fileName, CTX::instance()->mesh.binary, CTX::instance()->mesh.saveAll,
(name, CTX::instance()->mesh.binary, CTX::instance()->mesh.saveAll,
CTX::instance()->mesh.scalingFactor,
CTX::instance()->bigEndian);
break;
case FORMAT_MESH:
GModel::current()->writeMESH
(fileName, CTX::instance()->mesh.saveElementTagType,
(name, CTX::instance()->mesh.saveElementTagType,
CTX::instance()->mesh.saveAll, CTX::instance()->mesh.scalingFactor);
break;
case FORMAT_MAIL:
GModel::current()->writeMAIL
(fileName, CTX::instance()->mesh.saveAll, CTX::instance()->mesh.scalingFactor);
(name, CTX::instance()->mesh.saveAll, CTX::instance()->mesh.scalingFactor);
break;
case FORMAT_IR3:
GModel::current()->writeIR3
(fileName, CTX::instance()->mesh.saveElementTagType,
(name, CTX::instance()->mesh.saveElementTagType,
CTX::instance()->mesh.saveAll, CTX::instance()->mesh.scalingFactor);
break;
case FORMAT_BDF:
GModel::current()->writeBDF
(fileName, CTX::instance()->mesh.bdfFieldFormat,
(name, CTX::instance()->mesh.bdfFieldFormat,
CTX::instance()->mesh.saveElementTagType, CTX::instance()->mesh.saveAll,
CTX::instance()->mesh.scalingFactor);
break;
case FORMAT_DIFF:
GModel::current()->writeDIFF
(fileName, CTX::instance()->mesh.binary, CTX::instance()->mesh.saveAll,
(name, CTX::instance()->mesh.binary, CTX::instance()->mesh.saveAll,
CTX::instance()->mesh.scalingFactor);
break;
case FORMAT_INP:
GModel::current()->writeINP
(fileName, CTX::instance()->mesh.saveAll, CTX::instance()->mesh.scalingFactor);
(name, CTX::instance()->mesh.saveAll, CTX::instance()->mesh.scalingFactor);
break;
case FORMAT_P3D:
GModel::current()->writeP3D
(fileName, CTX::instance()->mesh.saveAll, CTX::instance()->mesh.scalingFactor);
(name, CTX::instance()->mesh.saveAll, CTX::instance()->mesh.scalingFactor);
break;
case FORMAT_CGNS:
GModel::current()->writeCGNS
(fileName, CTX::instance()->mesh.zoneDefinition, CTX::instance()->cgnsOptions,
(name, CTX::instance()->mesh.zoneDefinition, CTX::instance()->cgnsOptions,
CTX::instance()->mesh.scalingFactor);
break;
case FORMAT_MED:
GModel::current()->writeMED
(fileName, CTX::instance()->mesh.saveAll, CTX::instance()->mesh.scalingFactor);
(name, CTX::instance()->mesh.saveAll, CTX::instance()->mesh.scalingFactor);
break;
case FORMAT_POS:
GModel::current()->writePOS
(fileName, CTX::instance()->print.posElementary,
(name, CTX::instance()->print.posElementary,
CTX::instance()->print.posElement, CTX::instance()->print.posGamma,
CTX::instance()->print.posEta, CTX::instance()->print.posRho,
CTX::instance()->print.posDisto, CTX::instance()->mesh.saveAll,
......@@ -290,16 +295,16 @@ void CreateOutputFile(std::string fileName, int format, bool redraw)
break;
case FORMAT_GEO:
GModel::current()->writeGEO(fileName, CTX::instance()->print.geoLabels,
GModel::current()->writeGEO(name, CTX::instance()->print.geoLabels,
CTX::instance()->print.geoOnlyPhysicals);
break;
case FORMAT_BREP:
GModel::current()->writeOCCBREP(fileName);
GModel::current()->writeOCCBREP(name);
break;
case FORMAT_STEP:
GModel::current()->writeOCCSTEP(fileName);
GModel::current()->writeOCCSTEP(name);
break;
#if defined(HAVE_FLTK)
......@@ -311,9 +316,9 @@ void CreateOutputFile(std::string fileName, int format, bool redraw)
{
if(!FlGui::available()) break;
FILE *fp = fopen(fileName.c_str(), "wb");
FILE *fp = fopen(name.c_str(), "wb");
if(!fp){
Msg::Error("Unable to open file '%s'", fileName.c_str());
Msg::Error("Unable to open file '%s'", name.c_str());
error = true;
break;
}
......@@ -348,13 +353,13 @@ void CreateOutputFile(std::string fileName, int format, bool redraw)
{
if(!FlGui::available()) break;
FILE *fp = fopen(fileName.c_str(), "wb");
FILE *fp = fopen(name.c_str(), "wb");
if(!fp){
Msg::Error("Unable to open file '%s'", fileName.c_str());
Msg::Error("Unable to open file '%s'", name.c_str());
error = true;
break;
}
std::string base = SplitFileName(fileName)[1];
std::string base = SplitFileName(name)[1];
GLint width = FlGui::instance()->getCurrentOpenglWindow()->w();
GLint height = FlGui::instance()->getCurrentOpenglWindow()->h();
GLint viewport[4] = {0, 0, width, height};
......@@ -419,13 +424,13 @@ void CreateOutputFile(std::string fileName, int format, bool redraw)
{
if(!FlGui::available()) break;
FILE *fp = fopen(fileName.c_str(), "w");
FILE *fp = fopen(name.c_str(), "w");
if(!fp){
Msg::Error("Unable to open file '%s'", fileName.c_str());
Msg::Error("Unable to open file '%s'", name.c_str());
error = true;
break;
}
std::string base = SplitFileName(fileName)[1];
std::string base = SplitFileName(name)[1];
GLint width = FlGui::instance()->getCurrentOpenglWindow()->w();
GLint height = FlGui::instance()->getCurrentOpenglWindow()->h();
GLint viewport[4] = {0, 0, width, height};
......@@ -487,7 +492,7 @@ void CreateOutputFile(std::string fileName, int format, bool redraw)
"PSEARCH_ALG EXHAUSTIVE\nBSEARCH_ALG CROSS2\n"
"IQSCALE 1\nPQSCALE 1\nBQSCALE 25\nREFERENCE_FRAME DECODED\n"
"OUTPUT %s\nINPUT_CONVERT *\nINPUT_DIR %s\nINPUT\n",
pattern.c_str(), repeat, fileName.c_str(),
pattern.c_str(), repeat, name.c_str(),
CTX::instance()->homeDir.c_str());
for(unsigned int i = 0; i < frames.size(); i++){
fprintf(fp, "%s", frames[i].c_str());
......@@ -526,7 +531,7 @@ void CreateOutputFile(std::string fileName, int format, bool redraw)
CTX::instance()->printing = 0;
if(redraw && !error)
Msg::StatusBar(2, true, "Done writing '%s'", fileName.c_str());
Msg::StatusBar(2, true, "Done writing '%s'", name.c_str());
#if defined(HAVE_OPENGL)
if(redraw) drawContext::global()->draw();
......
......@@ -8,8 +8,9 @@
#include <string>
int GuessFileFormatFromFileName(std::string fileName);
int GetFileFormatFromExtension(const std::string &fileName);
int GuessFileFormatFromFileName(const std::string &fileName);
std::string GetDefaultFileName(int format);
void CreateOutputFile(std::string fileName, int format, bool redraw=true);
void CreateOutputFile(const std::string &fileName, int format, bool redraw=true);
#endif
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment