00001 #ifndef SCTDATADISPLAY_DISPLAYER_H 00002 #define SCTDATADISPLAY_DISPLAYER_H 00003 00004 #include <boost/shared_ptr.hpp> 00005 #include <string> 00006 #include <iostream> 00007 00008 #include <TH1.h> 00009 00010 using boost::shared_ptr; 00011 using std::string; 00012 00013 namespace Sct { 00014 class Serializable; 00015 } 00016 00017 namespace SctData { 00018 class DefectList; 00019 } 00020 00021 class TCanvas; 00022 00023 00024 00025 namespace SctDataDisplay { 00026 00027 class DisplayInfo; 00028 00029 00035 class DisplayData { 00036 }; 00037 00038 00044 class Displayer { 00045 public: 00046 Displayer() {} 00051 virtual shared_ptr<DisplayData> display(shared_ptr<const Sct::Serializable> data, const DisplayInfo& info, std::ostream& os) = 0; 00052 00053 protected: 00057 static shared_ptr<TCanvas> createCanvas(string name, string title); 00058 00062 static void divideCanvas(unsigned int n, TCanvas& canvas); 00063 00067 void printDefectList(const SctData::DefectList& list, std::ostream& os); 00068 00072 void displayHistogram(TH1& hist, std::string option=""); 00076 void displayHistogram(boost::shared_ptr<TH1> hist, std::string option=""); 00077 00078 }; 00079 00080 00084 class GenericDisplayer : public virtual Displayer { 00085 public: 00091 virtual bool canDisplay(const Sct::Serializable& ob) = 0; 00092 00093 }; 00094 00095 } 00096 00097 #endif //SCTDATADISPLAY_DISPLAYER_H