Removed use of tellg that is broken in current version of mingw

This commit is contained in:
Paolo Cignoni 2006-12-12 02:47:12 +00:00
parent f07128960f
commit 6d5f52174b
1 changed files with 16 additions and 8 deletions

View File

@ -25,6 +25,9 @@
History
$Log: not supported by cvs2svn $
Revision 1.10 2006/11/21 10:56:41 cignoni
ReWrote loadMask. Now shorter and faster.
Revision 1.9 2006/10/09 19:58:08 cignoni
Added casts to remove warnings
@ -527,6 +530,7 @@ static int Open( OpenMeshType &m, const char * filename, Info &oi)
// we simply ignore other situations
} // end for each line...
} // end while stream not eof
assert((numTriangles +numVertices) == numVerticesPlusFaces);
FaceIterator fi = Allocator<OpenMeshType>::AddFaces(m,numTriangles);
//-------------------------------------------------------------------------------
@ -582,12 +586,12 @@ static int Open( OpenMeshType &m, const char * filename, Info &oi)
tokens.clear();
do
{
while ((line[from]==' ' || line[from]=='\t') && from!=length)
while (from!=length && (line[from]==' ' || line[from]=='\t') )
from++;
if(from!=length)
{
to = from+1;
while (line[to]!=' ' && to!=length)
while (to!=length && line[to]!=' ')
to++;
tokens.push_back(line.substr(from, to-from).c_str());
from = to;
@ -736,13 +740,15 @@ static bool LoadMask(const char * filename, Info &oi)
oi.numFaces=0;
oi.numTexCoords=0;
int lineCount=0;
int totRead=0;
std::string line;
while (!stream.eof())
{
lineCount++;
if(oi.cb && (lineCount%1000)==0)
(*oi.cb)( (int)(100.0*(float(stream.tellg()))/float(length)), "Loading mask...");
std::getline(stream, line);
totRead+=line.size();
if(oi.cb && (lineCount%1000)==0)
(*oi.cb)( (int)(100.0*(float(totRead))/float(length)), "Loading mask...");
if(line.size()>2)
{
if(line[0]=='v')
@ -756,6 +762,8 @@ static bool LoadMask(const char * filename, Info &oi)
}
oi.mask = 0;
if (oi.numTexCoords) oi.mask |= vcg::tri::io::Mask::IOM_WEDGTEXCOORD;
return true;
}