Added support for placing comments at end of each line.

This commit is contained in:
Robert Osfield 2011-03-14 11:29:08 +00:00
parent 7cd74f0282
commit 74cf1168e0

View File

@ -880,28 +880,48 @@ osg::TransferFunction1D* ReaderWriterP3DXML::readTransferFunctionFile(const std:
std::string foundFile = osgDB::findDataFile(filename); std::string foundFile = osgDB::findDataFile(filename);
if (foundFile.empty()) if (foundFile.empty())
{ {
std::cout<<"Error: could not find transfer function file : "<<filename<<std::endl; OSG_NOTICE<<"Error: could not find transfer function file : "<<filename<<std::endl;
return 0; return 0;
} }
std::cout<<"Reading transfer function "<<filename<<std::endl; OSG_NOTICE<<"Reading transfer function "<<filename<<std::endl;
osg::TransferFunction1D::ColorMap colorMap; osg::TransferFunction1D::ColorMap colorMap;
osgDB::ifstream fin(foundFile.c_str()); osgDB::ifstream fin(foundFile.c_str());
while(fin) while(fin)
{ {
float value, red, green, blue, alpha; char readline[4096];
fin >> value >> red >> green >> blue >> alpha; *readline = 0;
if (fin) fin.getline(readline, sizeof(readline));
if (*readline!=0)
{ {
std::cout<<"value = "<<value<<" ("<<red<<", "<<green<<", "<<blue<<", "<<alpha<<")"<<std::endl; std::stringstream str(readline);
float value, red, green, blue, alpha;
str >> value >> red >> green >> blue >> alpha;
*readline = 0;
str.getline(readline, sizeof(readline));
char* comment = readline;
while(*comment==' ' || *comment=='\t' ) ++comment;
if (*comment!=0)
{
OSG_NOTICE<<"value = "<<value<<" ("<<red<<", "<<green<<", "<<blue<<", "<<alpha<<") comment = ["<<comment<<"]"<<std::endl;
}
else
{
OSG_NOTICE<<"value = "<<value<<" ("<<red<<", "<<green<<", "<<blue<<", "<<alpha<<")"<<std::endl;
}
colorMap[value] = osg::Vec4(red*scale,green*scale,blue*scale,alpha*scale); colorMap[value] = osg::Vec4(red*scale,green*scale,blue*scale,alpha*scale);
} }
} }
if (colorMap.empty()) if (colorMap.empty())
{ {
std::cout<<"Error: No values read from transfer function file: "<<filename<<std::endl; OSG_NOTICE<<"Error: No values read from transfer function file: "<<filename<<std::endl;
return 0; return 0;
} }