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