1 |
// @(#)root/html:$Id: TDocDirective.h 23799 2008-05-12 13:10:34Z axel $
|
2 |
// Author: Axel Naumann 2007-01-25
|
3 |
|
4 |
/*************************************************************************
|
5 |
* Copyright (C) 1995-2007, Rene Brun and Fons Rademakers. *
|
6 |
* All rights reserved. *
|
7 |
* *
|
8 |
* For the licensing terms see $ROOTSYS/LICENSE. *
|
9 |
* For the list of contributors see $ROOTSYS/README/CREDITS. *
|
10 |
*************************************************************************/
|
11 |
|
12 |
#ifndef ROOT_TDocDirective
|
13 |
#define ROOT_TDocDirective
|
14 |
|
15 |
////////////////////////////////////////////////////////////////////////////
|
16 |
// //
|
17 |
// TDocDirective //
|
18 |
// //
|
19 |
// Special treatment of comments, like HTML source, a macro, or latex. //
|
20 |
// //
|
21 |
////////////////////////////////////////////////////////////////////////////
|
22 |
|
23 |
#ifndef ROOT_TNamed
|
24 |
#include "TNamed.h"
|
25 |
#endif
|
26 |
|
27 |
|
28 |
class TClass;
|
29 |
class TDocParser;
|
30 |
class TDocOutput;
|
31 |
class THtml;
|
32 |
class TLatex;
|
33 |
class TMacro;
|
34 |
class TVirtualPad;
|
35 |
|
36 |
class TDocDirective: public TNamed {
|
37 |
protected:
|
38 |
TDocParser* fDocParser; // parser invoking this handler
|
39 |
THtml* fHtml; // parser's THtml object
|
40 |
TDocOutput* fDocOutput; // parser invoking this handler
|
41 |
TString fParameters; // parameters to the directive
|
42 |
Int_t fCounter; // counter to generate unique names, -1 to ignore
|
43 |
|
44 |
virtual void AddParameter(const TString& /*name*/, const char* /*value*/ = 0) {}
|
45 |
|
46 |
TDocDirective() {}
|
47 |
TDocDirective(const char* name): TNamed(name, ""), fDocParser(0), fCounter(-1) {};
|
48 |
virtual ~TDocDirective() {}
|
49 |
|
50 |
const char* GetName() const { return TNamed::GetName(); }
|
51 |
void GetName(TString& name) const;
|
52 |
TDocParser* GetDocParser() const { return fDocParser; }
|
53 |
TDocOutput* GetDocOutput() const { return fDocOutput; }
|
54 |
THtml* GetHtml() const { return fHtml; }
|
55 |
const char* GetOutputDir() const;
|
56 |
|
57 |
void SetParser(TDocParser* parser);
|
58 |
void SetParameters(const char* params);
|
59 |
void SetTag(const char* tag) { SetTitle(tag); }
|
60 |
void SetCounter(Int_t count) { fCounter = count; }
|
61 |
virtual void DeleteOutputFiles(const char* ext) const;
|
62 |
|
63 |
public:
|
64 |
// get the tag ending this directive
|
65 |
virtual const char* GetEndTag() const = 0;
|
66 |
|
67 |
// add a line to the directive's text
|
68 |
virtual void AddLine(const TSubString& line) = 0;
|
69 |
|
70 |
// retrieve the result (replacement) of the directive; return false if invalid
|
71 |
virtual Bool_t GetResult(TString& result) = 0;
|
72 |
|
73 |
// Delete output for the parser's current class or module.
|
74 |
virtual void DeleteOutput() const {}
|
75 |
|
76 |
friend class TDocParser;
|
77 |
|
78 |
ClassDef(TDocDirective, 0); // THtml directive handler
|
79 |
};
|
80 |
|
81 |
class TDocHtmlDirective: public TDocDirective {
|
82 |
private:
|
83 |
TString fText; // HTML text to be kept
|
84 |
Bool_t fVerbatim; // whether we are in a <pre></pre> block
|
85 |
public:
|
86 |
TDocHtmlDirective(): TDocDirective("HTML"), fVerbatim(kFALSE) {}
|
87 |
virtual ~TDocHtmlDirective() {}
|
88 |
|
89 |
virtual void AddLine(const TSubString& line);
|
90 |
virtual const char* GetEndTag() const { return "end_html"; }
|
91 |
virtual Bool_t GetResult(TString& result);
|
92 |
|
93 |
ClassDef(TDocHtmlDirective, 0); // Handler for "Begin_Html"/"End_Html" for raw HTML in documentation comments
|
94 |
};
|
95 |
|
96 |
class TDocMacroDirective: public TDocDirective {
|
97 |
private:
|
98 |
TMacro* fMacro; // macro to be executed
|
99 |
Bool_t fNeedGraphics; // if set, we cannot switch to batch mode
|
100 |
Bool_t fShowSource; // whether a source tab should be created
|
101 |
Bool_t fIsFilename; // whether the directive is a failename to be executed
|
102 |
|
103 |
virtual void AddParameter(const TString& name, const char* value = 0);
|
104 |
|
105 |
public:
|
106 |
TDocMacroDirective():
|
107 |
TDocDirective("MACRO"), fMacro(0), fNeedGraphics(kFALSE),
|
108 |
fShowSource(kFALSE), fIsFilename(kTRUE) {};
|
109 |
virtual ~TDocMacroDirective();
|
110 |
|
111 |
virtual void AddLine(const TSubString& line);
|
112 |
virtual const char* GetEndTag() const { return "end_macro"; }
|
113 |
virtual Bool_t GetResult(TString& result);
|
114 |
// Delete output for the parser's current class or module.
|
115 |
virtual void DeleteOutput() const { DeleteOutputFiles(".gif"); }
|
116 |
|
117 |
ClassDef(TDocMacroDirective, 0); // Handler for "Begin_Macro"/"End_Macro" for code that is executed and that can generate an image for documentation
|
118 |
};
|
119 |
|
120 |
class TDocLatexDirective: public TDocDirective {
|
121 |
protected:
|
122 |
TMacro* fLatex; // collection of lines
|
123 |
Int_t fFontSize; // fontsize for current latex block, in pixels
|
124 |
TString fSeparator; // column separator, often "="
|
125 |
Bool_t fSepIsRegexp; // whether fSeparator is a regexp expression
|
126 |
TString fAlignment; // column alignment: 'l' for justify left, 'c' for center, 'r' for right
|
127 |
TVirtualPad* fBBCanvas; // canvas for bounding box determination
|
128 |
|
129 |
virtual void CreateLatex(const char* filename);
|
130 |
virtual void AddParameter(const TString& name, const char* value = 0);
|
131 |
virtual void GetBoundingBox(TLatex& latex, const char* text, Float_t& width, Float_t& height);
|
132 |
|
133 |
public:
|
134 |
TDocLatexDirective():
|
135 |
TDocDirective("LATEX"), fLatex(0), fFontSize(16),
|
136 |
fSepIsRegexp(kFALSE), fBBCanvas(0) {};
|
137 |
virtual ~TDocLatexDirective();
|
138 |
|
139 |
virtual void AddLine(const TSubString& line);
|
140 |
virtual const char* GetEndTag() const {return "end_latex";}
|
141 |
|
142 |
const char* GetAlignment() const {return fAlignment;}
|
143 |
const char* GetSeparator() const {return fSeparator;}
|
144 |
Bool_t SeparatorIsRegexp() const {return fSepIsRegexp;}
|
145 |
Int_t GetFontSize() const {return fFontSize;}
|
146 |
TList* GetListOfLines() const;
|
147 |
|
148 |
virtual Bool_t GetResult(TString& result);
|
149 |
// Delete output for the parser's current class or module.
|
150 |
virtual void DeleteOutput() const { DeleteOutputFiles(".gif"); }
|
151 |
|
152 |
ClassDef(TDocLatexDirective, 0); // Handler for "Begin_Latex"/"End_Latex" to generate an image from latex
|
153 |
};
|
154 |
|
155 |
#endif // ROOT_TDocDirective
|