Commit 608af682 authored by Sylvain Thery's avatar Sylvain Thery
Browse files

Remove Qt dependency in CGoGNStream.h

parent 48e27569
...@@ -342,9 +342,9 @@ int main(int argc, char **argv) ...@@ -342,9 +342,9 @@ int main(int argc, char **argv)
GLint texSize; GLint texSize;
glGetIntegerv(GL_MAX_TEXTURE_SIZE, &texSize); glGetIntegerv(GL_MAX_TEXTURE_SIZE, &texSize);
CGoGNdbg2.toConsole(&sqt); CGoGNdbg.toConsole(&sqt);
CGoGNerr.toConsole(&sqt); CGoGNerr.toConsole(&sqt);
CGoGNdbg2 << " TextureSize " << texSize << CGoGNendl; CGoGNdbg << " TextureSize " << texSize << CGoGNendl;
CGoGNerr << " test ERROR " << 5*7 << CGoGNflush; CGoGNerr << " test ERROR " << 5*7 << CGoGNflush;
......
...@@ -83,7 +83,7 @@ enum drawingType ...@@ -83,7 +83,7 @@ enum drawingType
class Special class Special
{}; {};
template<int LEVEL>
class Out class Out
{ {
protected: protected:
...@@ -142,18 +142,18 @@ public: ...@@ -142,18 +142,18 @@ public:
/** /**
* recursive stream operator * recursive stream operator
*/ */
Out<LEVEL>& operator<< (Out& cgstr); Out& operator<< (Out& cgstr);
/** /**
* classic stream operator * classic stream operator
*/ */
template <typename T> template <typename T>
Out<LEVEL>& operator<< (const T& val); Out& operator<< (const T& val);
/** /**
* special cases (endl) stream operator * special cases (endl) stream operator
*/ */
Out<LEVEL>& operator<< (Special& os ); Out& operator<< (Special& os );
/** /**
* for file closing * for file closing
...@@ -164,33 +164,43 @@ public: ...@@ -164,33 +164,43 @@ public:
/** /**
* output stream class for error output (replace cout by cerr) * output stream class for error output (replace cout by cerr)
*/ */
template<int LEVEL> class Err: public Out
class Err: public Out<LEVEL>
{ {
public: public:
Err() { this->m_code = 1; } Err() { this->m_code = 1; }
}; };
template<int LEVEL> class Dbg: public Out
class Dbg: public Out<LEVEL>
{ {
public: public:
Dbg() { this->m_code = 100 + LEVEL; } Dbg() { this->m_code = 100; }
}; };
template <typename T>
Out& Out::operator<< (const T& val)
{
if (m_out_mode & STDOUT)
std::cout << val;
if (m_out_mode & STDERR)
std::cerr << val;
if (m_out_mode && (FILEOUT|QTSTATUSBAR|QTCONSOLE|SSBUFFER))
m_buffer << val;
return *this;
}
} // namespace CGoGNStream } // namespace CGoGNStream
// glocal stream definitions // glocal stream definitions
extern CGoGNStream::Out<0> CGoGNout; extern CGoGNStream::Out CGoGNout;
extern CGoGNStream::Err<0> CGoGNerr; extern CGoGNStream::Err CGoGNerr;
extern CGoGNStream::Dbg<1> CGoGNdbg; extern CGoGNStream::Dbg CGoGNdbg;
extern CGoGNStream::Dbg<2> CGoGNdbg2;
extern CGoGNStream::Dbg<3> CGoGNdbg3;
extern CGoGNStream::Special CGoGNendl; extern CGoGNStream::Special CGoGNendl;
extern CGoGNStream::Special CGoGNflush; extern CGoGNStream::Special CGoGNflush;
} // namespace CGoGN } // namespace CGoGN
#include "Utils/cgognStream.hpp"
#endif /* CGOGNSTREAM_H_ */ #endif /* CGOGNSTREAM_H_ */
/*******************************************************************************
* CGoGN: Combinatorial and Geometric modeling with Generic N-dimensional Maps *
* version 0.1 *
* Copyright (C) 2009, IGG Team, LSIIT, University of Strasbourg *
* *
* This library is free software; you can redistribute it and/or modify it *
* under the terms of the GNU Lesser General Public License as published by the *
* Free Software Foundation; either version 2.1 of the License, or (at your *
* option) any later version. *
* *
* 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 GNU Lesser General Public License *
* for more details. *
* *
* You should have received a copy of the GNU Lesser General Public License *
* along with this library; if not, write to the Free Software Foundation, *
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. *
* *
* Web site: https://iggservis.u-strasbg.fr/CGoGN/ *
* Contact information: cgogn@unistra.fr *
* *
*******************************************************************************/
#include "Utils/qtSimple.h"
#include <QtGui/QTextEdit>
namespace CGoGN
{
namespace CGoGNStream
{
template<int LEVEL>
Out<LEVEL>::Out():
m_out_mode(STDOUT),
m_sqt_bar(NULL),
m_sqt_console(NULL),
m_qte(NULL),
m_ofs(NULL),
m_oss(NULL),
m_code(0)
{}
template<int LEVEL>
Out<LEVEL>::~Out()
{
if (LEVEL <= DBG_MAX_LEVEL)
{
if (m_ofs != NULL)
{
m_ofs->close();
delete m_ofs;
}
}
}
template<int LEVEL>
void Out<LEVEL>::toStd(bool yes)
{
if (LEVEL<=DBG_MAX_LEVEL)
{
if (m_code)
{
if (yes)
this->m_out_mode |= STDERR;
else
this->m_out_mode &= ~STDERR;
}
else
{
if (yes)
m_out_mode |= STDOUT;
else
m_out_mode &= ~STDOUT;
}
}
}
//template<int LEVEL>
//void Err<LEVEL>::toStd(bool yes)
//{
// if (LEVEL<=DBG_MAX_LEVEL)
// {
// if (yes)
// this->m_out_mode |= STDERR;
// else
// this->m_out_mode &= ~STDERR;
// }
//}
template<int LEVEL>
void Out<LEVEL>::toFile(const std::string& filename )
{
if (LEVEL <= DBG_MAX_LEVEL)
{
if (!filename.empty())
m_out_mode |= FILEOUT;
else
m_out_mode &= ~FILEOUT;
if (m_ofs != NULL)
{
m_ofs->close();
delete m_ofs;
}
m_ofs = new std::ofstream(filename.c_str());
}
}
template<int LEVEL>
void Out<LEVEL>::toStatusBar(Utils::QT::SimpleQT* sqt)
{
if (LEVEL <= DBG_MAX_LEVEL)
{
if (sqt != NULL)
m_out_mode |= QTSTATUSBAR;
else
m_out_mode &= ~QTSTATUSBAR;
m_sqt_bar = sqt;
}
}
template<int LEVEL>
void Out<LEVEL>::toConsole(Utils::QT::SimpleQT* sqt)
{
if (LEVEL <= DBG_MAX_LEVEL)
{
if (sqt)
m_out_mode |= QTCONSOLE;
else
m_out_mode &= ~QTCONSOLE;
m_sqt_console = sqt;
}
}
template<int LEVEL>
void Out<LEVEL>::toBuffer(std::stringstream* ss)
{
if (LEVEL <= DBG_MAX_LEVEL)
{
if (ss != NULL)
m_out_mode |= SSBUFFER;
else
m_out_mode &= ~SSBUFFER;
m_oss = ss;
}
}
template<int LEVEL>
Out<LEVEL>& Out<LEVEL>::operator<< (Out& os)
{
return *this;
}
template<int LEVEL>
void Out<LEVEL>::close()
{
if (LEVEL <= DBG_MAX_LEVEL)
{
if (m_ofs != NULL)
{
m_ofs->close();
}
}
}
template<int LEVEL>
template <typename T>
Out<LEVEL>& Out<LEVEL>::operator<< (const T& val)
{
if (m_out_mode & STDOUT)
std::cout << val;
if (m_out_mode & STDERR)
std::cerr << val;
if (m_out_mode && (FILEOUT|QTSTATUSBAR|QTCONSOLE|SSBUFFER))
m_buffer << val;
return *this;
}
template<int LEVEL>
Out<LEVEL>& Out<LEVEL>::operator<< (Special& os )
{
if (LEVEL <= DBG_MAX_LEVEL)
{
if (&os == &CGoGNendl)
{
char bufc[512];
// for cout & cerr just do the endl
if (m_out_mode & STDOUT)
std::cout << std::endl;;
if (m_out_mode & STDERR)
std::cerr << std::endl;
if (m_out_mode & FILEOUT)
{
while (! m_buffer.eof())
{
m_buffer.getline(bufc,512);
*m_ofs << bufc << std::endl;
}
}
if (m_out_mode & QTSTATUSBAR)
{
while (! m_buffer.eof())
{
m_buffer.getline(bufc,512);
m_sqt_bar->statusMsg(bufc);
}
}
if (m_out_mode & QTCONSOLE)
{
while (! m_buffer.eof())
{
m_buffer.getline(bufc,512);
if (m_code >= 100)
m_sqt_console->console()->setTextColor(QColor(0, 150 - (m_code-100) * 20, 50 + (m_code-100) * 20));
else
{
if (m_code > 0)
m_sqt_console->console()->setTextColor(QColor(150, 0, 0));
else
m_sqt_console->console()->setTextColor(QColor(0, 0, 150));
}
// m_sqt_console->console()->insertPlainText(QString(bufc));
// m_sqt_console->console()->insertPlainText(QString("\n"));
m_sqt_console->console()->append(QString(bufc));
}
}
if (m_out_mode & SSBUFFER)
{
while (! m_buffer.eof())
{
m_buffer.getline(bufc, 512);
*m_oss << bufc << std::endl;
}
}
}
if (&os == &CGoGNflush)
{
char bufc[512];
// for cout & cerr just do the endl
if (m_out_mode & STDOUT)
std::cout << std::flush;
if (m_out_mode & STDERR)
std::cerr << std::flush;
if (m_out_mode & FILEOUT)
{
while (! m_buffer.eof())
{
m_buffer.getline(bufc,512);
*m_ofs << bufc << std::flush;
}
}
if (m_out_mode & QTSTATUSBAR)
{
while (! m_buffer.eof())
{
m_buffer.getline(bufc,512);
m_sqt_bar->statusMsg(bufc);
}
}
if (m_out_mode & QTCONSOLE)
{
while (! m_buffer.eof())
{
m_buffer.getline(bufc,512);
if (m_code >= 100)
m_sqt_console->console()->setTextColor(QColor(0, 150 - (m_code-100) * 20, 50 + (m_code-100) * 20));
else
{
if (m_code > 0)
m_sqt_console->console()->setTextColor(QColor(150, 0, 0));
else
m_sqt_console->console()->setTextColor(QColor(0, 0, 150));
}
m_sqt_console->console()->moveCursor(QTextCursor::End);
m_sqt_console->console()->insertPlainText(QString(bufc));
}
}
if (m_out_mode & SSBUFFER)
{
while (! m_buffer.eof())
{
m_buffer.getline(bufc, 512);
*m_oss << bufc << std::flush;
}
}
}
}
m_buffer.clear();
return *this;
}
} // namespace CGoGNStream
} // namespace CGoGN
...@@ -23,22 +23,15 @@ ...@@ -23,22 +23,15 @@
*******************************************************************************/ *******************************************************************************/
#include "Utils/cgognStream.h" #include "Utils/cgognStream.h"
#include "Utils/qtSimple.h"
#include <QtGui/QTextEdit>
namespace CGoGN namespace CGoGN
{ {
//CGoGNStream::Out CGoGNout; CGoGNStream::Out CGoGNout;
//CGoGNStream::Err CGoGNerr; CGoGNStream::Err CGoGNerr;
//CGoGNStream::Out CGoGNdbg; CGoGNStream::Dbg CGoGNdbg;
//
//CGoGNStream::Special CGoGNendl;
CGoGNStream::Out<0> CGoGNout;
CGoGNStream::Err<0> CGoGNerr;
CGoGNStream::Dbg<1> CGoGNdbg;
CGoGNStream::Dbg<2> CGoGNdbg2;
CGoGNStream::Dbg<3> CGoGNdbg3;
CGoGNStream::Special CGoGNendl; CGoGNStream::Special CGoGNendl;
CGoGNStream::Special CGoGNflush; CGoGNStream::Special CGoGNflush;
...@@ -50,8 +43,7 @@ void allToStd(bool yes) ...@@ -50,8 +43,7 @@ void allToStd(bool yes)
CGoGNout.toStd(yes); CGoGNout.toStd(yes);
CGoGNerr.toStd(yes); CGoGNerr.toStd(yes);
CGoGNdbg.toStd(yes); CGoGNdbg.toStd(yes);
CGoGNdbg2.toStd(yes);
CGoGNdbg3.toStd(yes);
} }
void allToFile(const std::string& filename ) void allToFile(const std::string& filename )
...@@ -59,8 +51,7 @@ void allToFile(const std::string& filename ) ...@@ -59,8 +51,7 @@ void allToFile(const std::string& filename )
CGoGNout.toFile(filename); CGoGNout.toFile(filename);
CGoGNerr.toFile(filename); CGoGNerr.toFile(filename);
CGoGNdbg.toFile(filename); CGoGNdbg.toFile(filename);
CGoGNdbg2.toFile(filename);
CGoGNdbg3.toFile(filename);
} }
void allToStatusBar(Utils::QT::SimpleQT* sqt) void allToStatusBar(Utils::QT::SimpleQT* sqt)
...@@ -68,8 +59,7 @@ void allToStatusBar(Utils::QT::SimpleQT* sqt) ...@@ -68,8 +59,7 @@ void allToStatusBar(Utils::QT::SimpleQT* sqt)
CGoGNout.toStatusBar(sqt); CGoGNout.toStatusBar(sqt);
CGoGNerr.toStatusBar(sqt); CGoGNerr.toStatusBar(sqt);
CGoGNdbg.toStatusBar(sqt); CGoGNdbg.toStatusBar(sqt);
CGoGNdbg2.toStatusBar(sqt);
CGoGNdbg3.toStatusBar(sqt);
} }
void allToConsole(Utils::QT::SimpleQT* sqt) void allToConsole(Utils::QT::SimpleQT* sqt)
...@@ -77,8 +67,7 @@ void allToConsole(Utils::QT::SimpleQT* sqt) ...@@ -77,8 +67,7 @@ void allToConsole(Utils::QT::SimpleQT* sqt)
CGoGNout.toConsole(sqt); CGoGNout.toConsole(sqt);
CGoGNerr.toConsole(sqt); CGoGNerr.toConsole(sqt);
CGoGNdbg.toConsole(sqt); CGoGNdbg.toConsole(sqt);
CGoGNdbg2.toConsole(sqt);
CGoGNdbg3.toConsole(sqt);
} }
void allToBuffer(std::stringstream* ss) void allToBuffer(std::stringstream* ss)
...@@ -86,10 +75,243 @@ void allToBuffer(std::stringstream* ss) ...@@ -86,10 +75,243 @@ void allToBuffer(std::stringstream* ss)
CGoGNout.toBuffer(ss); CGoGNout.toBuffer(ss);
CGoGNerr.toBuffer(ss); CGoGNerr.toBuffer(ss);
CGoGNdbg.toBuffer(ss); CGoGNdbg.toBuffer(ss);
CGoGNdbg2.toBuffer(ss);
CGoGNdbg3.toBuffer(ss); }
Out::Out():
m_out_mode(STDOUT),
m_sqt_bar(NULL),
m_sqt_console(NULL),
m_qte(NULL),
m_ofs(NULL),
m_oss(NULL),
m_code(0)
{}
Out::~Out()
{
if (m_ofs != NULL)
{
m_ofs->close();
delete m_ofs;
}
} }
void Out::toStd(bool yes)
{
if (m_code)
{
if (yes)
this->m_out_mode |= STDERR;
else
this->m_out_mode &= ~STDERR;
}
else
{
if (yes)
m_out_mode |= STDOUT;
else
m_out_mode &= ~STDOUT;
}
}
void Out::toFile(const std::string& filename )
{
if (!filename.empty())
m_out_mode |= FILEOUT;
else
m_out_mode &= ~FILEOUT;
if (m_ofs != NULL)
{
m_ofs->close();
delete m_ofs;
}
m_ofs = new std::ofstream(filename.c_str());
}
void Out::toStatusBar(Utils::QT::SimpleQT* sqt)
{
if (sqt != NULL)
m_out_mode |= QTSTATUSBAR;
else
m_out_mode &= ~QTSTATUSBAR;
m_sqt_bar = sqt;
}
void Out::toConsole(Utils::QT::SimpleQT* sqt)
{