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 class TH1; 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 public: 00037 virtual ~DisplayData(){} 00038 }; 00039 00040 00046 class Displayer { 00047 public: 00048 Displayer() {} 00053 virtual shared_ptr<DisplayData> display(shared_ptr<const Sct::Serializable> data, const DisplayInfo& info, std::ostream& os) = 0; 00054 00055 protected: 00059 static shared_ptr<TCanvas> createCanvas(string name, string title); 00060 00064 static void divideCanvas(unsigned int n, TCanvas& canvas); 00065 00069 void printDefectList(const SctData::DefectList& list, std::ostream& os); 00070 00074 void displayHistogram(TH1& hist, std::string option=""); 00078 void displayHistogram(boost::shared_ptr<TH1> hist, std::string option=""); 00079 00080 }; 00081 00082 00086 class GenericDisplayer : public virtual Displayer { 00087 public: 00093 virtual bool canDisplay(const Sct::Serializable& ob) = 0; 00094 00095 }; 00096 00097 } 00098 00099 #endif //SCTDATADISPLAY_DISPLAYER_H