Building igl statically and moving to the dep scripts

Fixing dep build script on Windows and removing some warnings.

Use bundled igl by default.

Not building with the dependency scripts if not explicitly stated. This way, it will stay in
Fix the libigl patch to include C source files in header only mode.
This commit is contained in:
tamasmeszaros
2019-06-19 14:52:55 +02:00
parent 89e39e3895
commit 2ae2672ee9
1095 changed files with 181 additions and 5 deletions

View File

@@ -0,0 +1,106 @@
#include "guess_extension.h"
#include <string.h>
#include "is_stl.h"
#include "ply.h"
IGL_INLINE void igl::guess_extension(FILE * fp, std::string & guess)
{
const auto is_off = [](FILE * fp)-> bool
{
char header[1000];
const std::string OFF("OFF");
const std::string NOFF("NOFF");
const std::string COFF("COFF");
bool f = (fscanf(fp,"%s\n",header)==1 && (
std::string(header).compare(0, OFF.length(), OFF)==0 ||
std::string(header).compare(0, COFF.length(), COFF)==0 ||
std::string(header).compare(0,NOFF.length(),NOFF)==0));
rewind(fp);
return f;
};
const auto is_ply = [](FILE * ply_file) -> bool
{
int nelems;
char ** elem_names;
igl::ply::PlyFile * in_ply = igl::ply::ply_read(ply_file,&nelems,&elem_names);
if(in_ply==NULL)
{
return false;
}
free(in_ply);
rewind(ply_file);
return true;
};
const auto is_wrl = [](FILE * wrl_file)->bool
{
bool still_comments = true;
char line[1000];
std::string needle("point [");
std::string haystack;
while(still_comments)
{
if(fgets(line,1000,wrl_file) == NULL)
{
rewind(wrl_file);
return false;
}
haystack = std::string(line);
still_comments = std::string::npos == haystack.find(needle);
}
rewind(wrl_file);
return true;
};
const auto is_mesh = [](FILE * mesh_file )->bool
{
char line[2048];
// eat comments at beginning of file
bool still_comments= true;
while(still_comments)
{
if(fgets(line,2048,mesh_file) == NULL)
{
rewind(mesh_file);
return false;
}
still_comments = (line[0] == '#' || line[0] == '\n');
}
char str[2048];
sscanf(line," %s",str);
// check that first word is MeshVersionFormatted
if(0!=strcmp(str,"MeshVersionFormatted"))
{
rewind(mesh_file);
return false;
}
rewind(mesh_file);
return true;
};
guess = "obj";
if(is_mesh(fp))
{
guess = "mesh";
}else if(is_off(fp))
{
guess = "off";
}else if(is_ply(fp))
{
guess = "ply";
}else if(igl::is_stl(fp))
{
guess = "stl";
}else if(is_wrl(fp))
{
guess = "wrl";
}
// else obj
rewind(fp);
}
IGL_INLINE std::string igl::guess_extension(FILE * fp)
{
std::string guess;
guess_extension(fp,guess);
return guess;
}