2003-01-08 22:32:13 +08:00
|
|
|
//C++ header - Open Scene Graph - Copyright (C) 1998-2002 Robert Osfield
|
|
|
|
//Distributed under the terms of the GNU Library General Public License (LGPL)
|
|
|
|
//as published by the Free Software Foundation.
|
|
|
|
|
|
|
|
#ifndef OSGDB_PARAMETEROUTPUT
|
|
|
|
#define OSGDB_PARAMETEROUTPUT 1
|
|
|
|
|
|
|
|
#include <osgDB/Output>
|
|
|
|
|
|
|
|
namespace osgDB {
|
|
|
|
|
|
|
|
class OSGDB_EXPORT ParameterOutput
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
|
2003-01-11 20:50:39 +08:00
|
|
|
ParameterOutput(Output& fw);
|
2003-01-08 22:32:13 +08:00
|
|
|
|
2003-01-11 20:50:39 +08:00
|
|
|
ParameterOutput(Output& fw,int numItemsPerLine);
|
2003-01-08 22:32:13 +08:00
|
|
|
|
2003-01-11 20:50:39 +08:00
|
|
|
void begin();
|
|
|
|
void newLine();
|
|
|
|
void end();
|
2003-01-08 22:32:13 +08:00
|
|
|
|
|
|
|
template<class T>
|
|
|
|
void write(const T& t)
|
|
|
|
{
|
|
|
|
if (_column==0) _fw.indent();
|
|
|
|
|
|
|
|
_fw << t;
|
|
|
|
|
|
|
|
++_column;
|
|
|
|
if (_column==_numItemsPerLine)
|
|
|
|
{
|
|
|
|
_fw << std::endl;
|
|
|
|
_column = 0;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
_fw << " ";
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
template<class Iterator>
|
|
|
|
void write(Iterator first, Iterator last)
|
|
|
|
{
|
|
|
|
for(Iterator itr=first;
|
|
|
|
itr!=last;
|
|
|
|
++itr)
|
|
|
|
{
|
|
|
|
write(*itr);
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
template<class Iterator>
|
|
|
|
void writeAsInts(Iterator first, Iterator last)
|
|
|
|
{
|
|
|
|
for(Iterator itr=first;
|
|
|
|
itr!=last;
|
|
|
|
++itr)
|
|
|
|
{
|
|
|
|
write((int)*itr);
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
2003-01-11 20:50:39 +08:00
|
|
|
|
|
|
|
protected:
|
2003-01-08 22:32:13 +08:00
|
|
|
|
|
|
|
Output& _fw;
|
|
|
|
int _numItemsPerLine;
|
|
|
|
int _column;
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
template<class Iterator>
|
|
|
|
void writeArray(Output& fw, Iterator first, Iterator last,int noItemsPerLine=0)
|
|
|
|
{
|
|
|
|
if (noItemsPerLine==0) noItemsPerLine=fw.getNumIndicesPerLine();
|
|
|
|
|
|
|
|
fw.indent() << "{"<<std::endl;
|
|
|
|
fw.moveIn();
|
|
|
|
|
|
|
|
int column=0;
|
|
|
|
|
|
|
|
for(Iterator itr=first;
|
|
|
|
itr!=last;
|
|
|
|
++itr)
|
|
|
|
{
|
|
|
|
if (column==0) fw.indent();
|
|
|
|
|
|
|
|
fw << *itr;
|
|
|
|
|
|
|
|
++column;
|
|
|
|
if (column==noItemsPerLine)
|
|
|
|
{
|
|
|
|
fw << std::endl;
|
|
|
|
column = 0;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
fw << " ";
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (column!=0) fw << std::endl;
|
|
|
|
|
|
|
|
fw.moveOut();
|
|
|
|
fw.indent()<<"}"<<std::endl;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
template<class Iterator>
|
|
|
|
void writeArrayAsInts(Output& fw, Iterator first, Iterator last,int noItemsPerLine=0)
|
|
|
|
{
|
|
|
|
if (noItemsPerLine==0) noItemsPerLine=fw.getNumIndicesPerLine();
|
|
|
|
|
|
|
|
fw.indent() << "{"<<std::endl;
|
|
|
|
fw.moveIn();
|
|
|
|
|
|
|
|
int column=0;
|
|
|
|
|
|
|
|
for(Iterator itr=first;
|
|
|
|
itr!=last;
|
|
|
|
++itr)
|
|
|
|
{
|
|
|
|
if (column==0) fw.indent();
|
|
|
|
|
|
|
|
fw << (int)*itr;
|
|
|
|
|
|
|
|
++column;
|
|
|
|
if (column==noItemsPerLine)
|
|
|
|
{
|
|
|
|
fw << std::endl;
|
|
|
|
column = 0;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
fw << " ";
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (column!=0) fw << std::endl;
|
|
|
|
|
|
|
|
fw.moveOut();
|
|
|
|
fw.indent()<<"}"<<std::endl;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
#endif // __SG_OUTPUT_H
|