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