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