00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef __ROP_Verbose__
00020 #define __ROP_Verbose__
00021
00022 #include "ROP_API.h"
00023 #include <iostream.h>
00024
00025 class ROP_API ROP_Verbose {
00026 public:
00027 ROP_Verbose(ostream *os=NULL)
00028 : myStream(os),
00029 myLevel(1),
00030 myAlfred(false)
00031 {
00032 }
00033 ROP_Verbose(const ROP_Verbose &s)
00034 : myStream(s.myStream),
00035 myLevel(s.myLevel),
00036 myAlfred(s.myAlfred)
00037 {
00038 }
00039 ~ROP_Verbose()
00040 {
00041 }
00042
00043
00044 void clear()
00045 {
00046 myStream = NULL;
00047 myLevel = 1;
00048 myAlfred = false;
00049 }
00050
00051
00052 bool isValid() const { return myStream != NULL; }
00053
00054
00055
00056
00057
00058
00059
00060
00061 bool isLevel(int level) const
00062 { return myStream && level <= myLevel; }
00063
00064
00065 ROP_Verbose &operator=(const ROP_Verbose &s)
00066 {
00067 myStream = s.myStream;
00068 myLevel = s.myLevel;
00069 myAlfred = s.myAlfred;
00070 return *this;
00071 }
00072
00073
00074 void setFrom(const ROP_Verbose *s)
00075 {
00076 if (s)
00077 *this = *s;
00078 else
00079 clear();
00080 }
00081
00082
00083
00084 ostream *getStream() const { return myStream; }
00085 void setStream(ostream *s) { myStream = s; }
00086
00087
00088
00089
00090 int getLevel() const { return myLevel; }
00091 void setLevel(int level) { myLevel = level; }
00092
00093
00094
00095
00096 bool getAlfred() const { return myAlfred; }
00097 void setAlfred(bool flag=true) { myAlfred = flag; }
00098
00099
00100
00101 void showProgress(fpreal percent) const
00102 {
00103 if (myStream && myAlfred)
00104 {
00105 int pct;
00106 pct = SYSclamp((int)(percent*100 + 0.5), 0, 100);
00107 *myStream << "ALF_PROGRESS " << pct << "%\n";
00108 myStream->flush();
00109 }
00110 }
00111
00112
00113 void showProgress(int current, int total) const
00114 {
00115 if (total)
00116 showProgress((fpreal)current/(fpreal)total);
00117 }
00118
00119 private:
00120 ostream *myStream;
00121 int myLevel;
00122 bool myAlfred;
00123 };
00124
00125 #endif