123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186 |
- /* -*-c++-*- OpenSceneGraph - Copyright (C) 1998-2006 Robert Osfield
- *
- * This library is open source and may be redistributed and/or modified under
- * the terms of the OpenSceneGraph Public License (OSGPL) version 0.0 or
- * (at your option) any later version. The full license is in LICENSE file
- * included with this distribution, and on the openscenegraph.org website.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * OpenSceneGraph Public License for more details.
- */
- #ifndef OSGDB_PARAMETEROUTPUT
- #define OSGDB_PARAMETEROUTPUT 1
- #include <osgDB/Output>
- namespace osgDB {
- class ParameterOutput
- {
- public:
- ParameterOutput(Output& fw):
- _fw(fw),
- _numItemsPerLine(fw.getNumIndicesPerLine()),
- _column(0) {}
- ParameterOutput(Output& fw,int numItemsPerLine):
- _fw(fw),
- _numItemsPerLine(numItemsPerLine),
- _column(0) {}
- void begin()
- {
- _fw.indent() << "{"<<std::endl;
- _fw.moveIn();
- }
- void newLine()
- {
- if (_column!=0) _fw << std::endl;
- _column = 0;
- }
- void end()
- {
- if (_column!=0) _fw << std::endl;
- _fw.moveOut();
- _fw.indent() << "}"<<std::endl;
- _column = 0;
- }
- 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);
- }
- }
- protected:
- ParameterOutput& operator = (const ParameterOutput&) { return *this; }
- 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
|