00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 #ifndef ROOT_TDocDirective
00013 #define ROOT_TDocDirective
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #ifndef ROOT_TNamed
00024 #include "TNamed.h"
00025 #endif
00026
00027
00028 class TClass;
00029 class TDocParser;
00030 class TDocOutput;
00031 class THtml;
00032 class TLatex;
00033 class TMacro;
00034 class TVirtualPad;
00035
00036 class TDocDirective: public TNamed {
00037 protected:
00038 TDocParser* fDocParser;
00039 THtml* fHtml;
00040 TDocOutput* fDocOutput;
00041 TString fParameters;
00042 Int_t fCounter;
00043
00044 virtual void AddParameter(const TString& , const char* = 0) {}
00045
00046 TDocDirective() {}
00047 TDocDirective(const char* name):
00048 TNamed(name, ""), fDocParser(0), fHtml(0), fDocOutput(0), fCounter(-1) {};
00049 virtual ~TDocDirective() {}
00050
00051 const char* GetName() const { return TNamed::GetName(); }
00052 void GetName(TString& name) const;
00053 TDocParser* GetDocParser() const { return fDocParser; }
00054 TDocOutput* GetDocOutput() const { return fDocOutput; }
00055 THtml* GetHtml() const { return fHtml; }
00056 const char* GetOutputDir() const;
00057
00058 void SetParser(TDocParser* parser);
00059 void SetParameters(const char* params);
00060 void SetTag(const char* tag) { SetTitle(tag); }
00061 void SetCounter(Int_t count) { fCounter = count; }
00062 virtual void DeleteOutputFiles(const char* ext) const;
00063
00064 public:
00065
00066 virtual const char* GetEndTag() const = 0;
00067
00068
00069 virtual void AddLine(const TSubString& line) = 0;
00070
00071
00072 virtual Bool_t GetResult(TString& result) = 0;
00073
00074
00075 virtual void DeleteOutput() const {}
00076
00077 friend class TDocParser;
00078
00079 ClassDef(TDocDirective, 0);
00080 };
00081
00082 class TDocHtmlDirective: public TDocDirective {
00083 private:
00084 TString fText;
00085 Bool_t fVerbatim;
00086 public:
00087 TDocHtmlDirective(): TDocDirective("HTML"), fVerbatim(kFALSE) {}
00088 virtual ~TDocHtmlDirective() {}
00089
00090 virtual void AddLine(const TSubString& line);
00091 virtual const char* GetEndTag() const { return "end_html"; }
00092 virtual Bool_t GetResult(TString& result);
00093
00094 ClassDef(TDocHtmlDirective, 0);
00095 };
00096
00097 class TDocMacroDirective: public TDocDirective {
00098 private:
00099 TMacro* fMacro;
00100 Bool_t fNeedGraphics;
00101 Bool_t fShowSource;
00102 Bool_t fIsFilename;
00103
00104 virtual void AddParameter(const TString& name, const char* value = 0);
00105
00106 public:
00107 TDocMacroDirective():
00108 TDocDirective("MACRO"), fMacro(0), fNeedGraphics(kFALSE),
00109 fShowSource(kFALSE), fIsFilename(kTRUE) {};
00110 virtual ~TDocMacroDirective();
00111
00112 virtual void AddLine(const TSubString& line);
00113 virtual const char* GetEndTag() const { return "end_macro"; }
00114 virtual Bool_t GetResult(TString& result);
00115
00116 virtual void DeleteOutput() const { DeleteOutputFiles(".gif"); }
00117
00118 ClassDef(TDocMacroDirective, 0);
00119 };
00120
00121 class TDocLatexDirective: public TDocDirective {
00122 protected:
00123 TMacro* fLatex;
00124 Int_t fFontSize;
00125 TString fSeparator;
00126 Bool_t fSepIsRegexp;
00127 TString fAlignment;
00128 TVirtualPad* fBBCanvas;
00129
00130 virtual void CreateLatex(const char* filename);
00131 virtual void AddParameter(const TString& name, const char* value = 0);
00132 virtual void GetBoundingBox(TLatex& latex, const char* text, Float_t& width, Float_t& height);
00133
00134 public:
00135 TDocLatexDirective():
00136 TDocDirective("LATEX"), fLatex(0), fFontSize(16),
00137 fSepIsRegexp(kFALSE), fBBCanvas(0) {};
00138 virtual ~TDocLatexDirective();
00139
00140 virtual void AddLine(const TSubString& line);
00141 virtual const char* GetEndTag() const {return "end_latex";}
00142
00143 const char* GetAlignment() const {return fAlignment;}
00144 const char* GetSeparator() const {return fSeparator;}
00145 Bool_t SeparatorIsRegexp() const {return fSepIsRegexp;}
00146 Int_t GetFontSize() const {return fFontSize;}
00147 TList* GetListOfLines() const;
00148
00149 virtual Bool_t GetResult(TString& result);
00150
00151 virtual void DeleteOutput() const { DeleteOutputFiles(".gif"); }
00152
00153 ClassDef(TDocLatexDirective, 0);
00154 };
00155
00156 #endif // ROOT_TDocDirective