60 const char* entry = 0;
81 outfilename.
Remove(posExt, outfilename.
Length() - posExt);
130 if (posAssign !=
kNPOS) {
133 if (value[0] ==
'\'')
135 else if (value[0] ==
'"')
171 if (
line.Start() == -1)
return;
173 TPRegexp pretag(
"</?[pP][rR][eE][ >]");
181 while (posPre !=
kNPOS && posPre > 0) {
184 if (posClose ==
kNPOS)
break;
185 Ssiz_t len = posClose - posPre;
222 result =
"</pre><!-- TDocHtmlDirective start -->";
223 result +=
fText +
"<!-- TDocHtmlDirective end --><pre>";
261 Int_t sleepCycles = 50;
268 ::Error(
"TDocMacroDirective::HandleDirective_Macro",
269 "Error processing macro for %s!", out.
Data());
279 typeid(*objRet).name();
280 objRet =
dynamic_cast<const TObject*
>(objRet);
291 ::Info(
"TDocMacroDirective::HandleDirective_Macro",
292 "Saving returned %s to file %s.",
295 if (!
gROOT->IsBatch()) {
303 if (!
gROOT->IsBatch()) {
311#ifdef R__BEPAEPSTLICHERALSDERPAPST
313 if (objRet !=
gPad && padSave ==
gPad) {
358 while (filename.
Length() == 0)
368 if (modulename.
Length()) {
372 const char* pathDelimiter =
":";
382 osDir->
String() += filenameDirPart;
383 macroPath += osDir->
String() + pathDelimiter;
395 if (posOpen !=
kNPOS) {
396 params = filename(posOpen, filename.
Length());
403 Error(
"GetResult",
"Cannot find macro '%s' in path '%s'!",
407 fileSysName += params;
408 fileSysName += plusplus;
413 std::ifstream ifMacro(fileSysName);
417 if (!
line.ReadLine(ifMacro,
kFALSE) || ifMacro.eof())
437 Warning(
"GetResult",
"Empty directive found!");
444 Info(
"HandleDirective_Macro",
"executing macro \"%s\" with %d lines.",
453 Warning(
"GetResult()",
"Will not initialize the graphics system; skipping macro %s!",
GetName());
463 outFileName +=
".gif";
473 TString invoc(
"root.exe -l -q ");
477 invoc +=
"-e 'TDocMacroDirective::SubProcess(\""
478 + subProcInputFile +
"\",\"" + outFileName +
"\");'";
482 if (exitCode &&
gDebug > 0) {
483 Info(
"GetResult()",
"Subprocess exited with status %d\n", exitCode);
491 result =
"<span class=\"macro\"><img class=\"macro\" alt=\"output of ";
492 result += outFileName;
494 result +=
"\" title=\"MACRO\" src=\"";
496 result +=
"\" /></span>";
503 std::stringstream ssRaw;
505 ssRaw << osLine->
String() << std::endl;
511 std::stringstream ssConverted;
517 while (!ssConverted.fail()) {
518 if (!
line.ReadLine(ssConverted,
kFALSE) || ssConverted.eof())
524 id =
id(0,
id.Length()-4);
526 TString tags(
"</pre><div class=\"tabs\">\n"
527 "<a id=\"" +
id +
"_A0\" class=\"tabsel\" href=\"" +
gSystem->
BaseName(outFileName) +
"\" onclick=\"javascript:return SetDiv('" +
id +
"',0);\">Picture</a>\n"
528 "<a id=\"" +
id +
"_A1\" class=\"tab\" href=\"#\" onclick=\"javascript:return SetDiv('" +
id +
"',1);\">Source</a>\n"
529 "<br /></div><div class=\"tabcontent\">\n"
530 "<div id=\"" +
id +
"_0\" class=\"tabvisible\">" + result +
"</div>\n"
531 "<div id=\"" +
id +
"_1\" class=\"tabhidden\"><div class=\"listing\"><pre class=\"code\">");
536 tags += osLine->
String() +
"\n";
539 tags +=
"</pre></div></div><div class=\"clear\"></div></div><pre>";
543 result.
ReplaceAll(
"<span class=\"comment\">",
"<span class=\"codecomment\">");
559 else Warning(
"AddParameter",
"Unknown option %s!",
name.Data());
570 std::vector<Float_t> fWidths;
576 fHeight(0.), fColumns(columns) {
if (columns) fWidths.resize(Size());}
579 Float_t& Height() {
return fHeight;}
586 void Delete() {
delete fColumns; }
624 if (
line.Length() == 0)
660 const Float_t canvSize = 1200.;
664 Form(
"new TCanvas(\"R__TDocLatexDirective_BBCanvas\",\"fBBCanvas\",%g,%g);", -(canvSize + 4.), canvSize + 28.));
666 Error(
"CreateLatex",
"Cannot create a TCanvas via the interpreter!");
674 std::list<TLatexLine> latexLines;
675 std::vector<Float_t> maxWidth(20);
677 Float_t totalHeight = gLinePadding;
704 split = regexp.
MatchS(str);
718 latexLines.push_back(TLatexLine(split));
726 TString* strCol = latexLines.back()[col];
729 if (heightLine < heightLatex) heightLine = heightLatex;
730 if (maxWidth.size() < col)
731 maxWidth.resize(col * 2);
732 if (maxWidth[col] < widthLatex)
733 maxWidth[col] = widthLatex;
734 latexLines.back().Width(col) = widthLatex;
736 latexLines.back().Height() = heightLine;
737 totalHeight += heightLine + gLinePadding;
740 std::vector<Float_t> posX(numColumns + 1);
741 for (
UInt_t col = 0; col <= numColumns; ++col) {
742 if (col == 0) posX[col] = gColumnPadding;
743 else posX[col] = posX[col - 1] + maxWidth[col - 1] + gColumnPadding;
745 Float_t totalWidth = posX[numColumns];
751 Float_t padSizeY = totalHeight + 8.;
754 Form(
"new TCanvas(\"R__TDocLatexDirective_padImg\",\"padImg\",-(Int_t)%g,(Int_t)%g);",
755 padSizeX + 4.5, padSizeY + 28.5));
761 for (std::list<TLatexLine>::iterator iLine = latexLines.begin();
762 iLine != latexLines.end(); ++iLine) {
763 posY += iLine->Height()/2. + gLinePadding;
764 for (
UInt_t iCol = 0; iCol < iLine->Size(); ++iCol) {
773 case 'r':
x += maxWidth[iCol] - iLine->Width(iCol);
break;
774 case 'c':
x += 0.5*(maxWidth[iCol] - iLine->Width(iCol));
break;
776 if (iLine == latexLines.begin())
777 Error(
"CreateLatex",
"Invalid alignment character '%c'!", align);
779 latex.
DrawLatex(
x / padSizeX, 1. - posY / padSizeY, str->
Data());
781 posY += iLine->Height()/2.;
784 padImg->
Print(filename);
787 for (std::list<TLatexLine>::iterator iLine = latexLines.begin();
788 iLine != latexLines.end(); ++iLine) {
835 TString latexFilename(firstLine);
836 for (
Ssiz_t namepos = 0; namepos < latexFilename.
Length(); ++namepos)
838 latexFilename.
Remove(namepos, 1);
842 filename += latexFilename;
850 result =
"<span class=\"latex\"><img class=\"latex\" alt=\"";
852 result +=
"\" title=\"LATEX\" src=\"";
854 result +=
"\" /></span>";
859 Info(
"HandleDirective_Latex",
"Writing Latex \"%s\" to file %s.",
873 if (!value || !value[0])
874 Error(
"AddParameter",
"Option \"fontsize\" needs a value!");
877 if (!value || !value[0])
878 Error(
"AddParameter",
"Option \"separator\" needs a value!");
881 if (!value || !value[0])
882 Error(
"AddParameter",
"Option \"align\" needs a value!");
885 Warning(
"AddParameter",
"Unknown option %s!",
name.Data());
include TDocParser_001 C image html pict1_TDocParser_001 png width
char * Form(const char *fmt,...)
R__EXTERN TSystem * gSystem
#define R__LOCKGUARD(mutex)
virtual void SetFillColor(Color_t fcolor)
Set the fill area color.
virtual void SetTextAlign(Short_t align=11)
Set the text alignment.
virtual void SetTextFont(Font_t tfont=62)
Set the text font.
virtual void SetTextSize(Float_t tsize=1)
Set the text size.
virtual Int_t GetEntries() const
virtual void SetOwner(Bool_t enable=kTRUE)
Set whether this collection is the owner (enable==true) of its content.
virtual void AddParameter(const TString &, const char *=0)
TDocParser * GetDocParser() const
const char * GetName() const
Returns name of object.
virtual void DeleteOutputFiles(const char *ext) const
Delete all output generated by the directive beginning with Name() and ending with ext.
void SetParameters(const char *params)
Given a string containing parameters in params, we call AddParameter() for each of them.
TDocOutput * GetDocOutput() const
void SetParser(TDocParser *parser)
Set the parser, and fDocOutput, fHtml from that.
const char * GetOutputDir() const
Get the directory for documentation output.
virtual void AddLine(const TSubString &line)
Add a line of HTML.
virtual Bool_t GetResult(TString &result)
Set result to the HTML code that was passed in via AddLine().
virtual void CreateLatex(const char *filename)
Create a gif file named filename from a latex expression in fLatex.
virtual ~TDocLatexDirective()
Destructor.
virtual void AddLine(const TSubString &line)
Add a latex line.
TList * GetListOfLines() const
Get the list of lines as TObjStrings.
virtual Bool_t GetResult(TString &result)
convert fLatex to a gif by creating a TLatex, drawing it on a temporary canvas, and saving that to a ...
virtual void AddParameter(const TString &name, const char *value=0)
Parse fParameters, setting fFontSize, fAlignment, and fSeparator.
virtual void GetBoundingBox(TLatex &latex, const char *text, Float_t &width, Float_t &height)
Determines the bounding box for text as height and width.
virtual Bool_t GetResult(TString &result)
Get the result (i.e.
virtual void AddLine(const TSubString &line)
Add a macro line.
virtual ~TDocMacroDirective()
Destructor.
TString CreateSubprocessInputFile()
Create the input file for SubProcess().
virtual void AddParameter(const TString &name, const char *value=0)
Setting fNeedGraphics if name is "GUI", setting fShowSource if name is "SOURCE".
static void SubProcess(const TString &what, const TString &out)
virtual void NameSpace2FileName(TString &name)
Replace "::" in name by "__" Replace "<", ">", " ", ",", "~", "=" in name by "_" Replace "A::X<A::Y>"...
virtual const char * ReplaceSpecialChars(char c)
Replace ampersand, less-than and greater-than character, writing to out.
static Bool_t Strip(TString &s)
strips ' ', tabs, and newlines from both sides of str
void GetCurrentModule(TString &out_module) const
Return the name of module for which sources are currently parsed.
void Convert(std::ostream &out, std::istream &in, const char *relpath, Bool_t isCode, Bool_t interpretDirectives)
Parse text file "in", add links etc, and write output to "out".
TDocOutput * GetDocOutput() const
TClass * GetCurrentClass() const
void GetModuleMacroPath(const TString &module, TString &out_path) const
virtual void GetHtmlFileName(TClass *classPtr, TString &filename) const
Return real HTML filename.
virtual void GetModuleNameForClass(TString &module, TClass *cl) const
Return the module name for a given class.
const TString & GetOutputDir(Bool_t createDir=kTRUE) const
Return the output directory as set by SetOutputDir().
To draw Mathematical Formula.
void GetBoundingBox(UInt_t &w, UInt_t &h, Bool_t angle=kFALSE)
Return text size in pixels.
TLatex * DrawLatex(Double_t x, Double_t y, const char *text)
Make a copy of this object with the new parameters And copy object attributes.
virtual void Delete(Option_t *option="")
Remove all objects from the list AND delete all heap based objects.
virtual TObject * First() const
Return the first object in the list. Returns 0 when list is empty.
Class supporting a collection of lines with C++ code.
virtual TObjString * AddLine(const char *text)
Add line with text in the list of lines of this macro.
void SaveSource(FILE *fp)
Save macro source in file pointer fp.
TList * GetListOfLines() const
virtual const char * GetTitle() const
Returns title of object.
virtual const char * GetName() const
Returns name of object.
Int_t GetEntriesFast() const
Int_t GetEntries() const
Return the number of objects in array (i.e.
TObject * At(Int_t idx) const
Collectable string class.
Mother of all ROOT objects.
virtual const char * GetName() const
Returns name of object.
virtual void Warning(const char *method, const char *msgfmt,...) const
Issue warning message.
virtual void SaveAs(const char *filename="", Option_t *option="") const
Save this object in the file specified by filename.
virtual void Error(const char *method, const char *msgfmt,...) const
Issue error message.
virtual void Info(const char *method, const char *msgfmt,...) const
Issue info message.
TObjArray * MatchS(const TString &s, const TString &mods="", Int_t start=0, Int_t nMaxMatch=10)
Returns a TObjArray of matched substrings as TObjString's.
Bool_t EndsWith(const char *pat, ECaseCompare cmp=kExact) const
Return true if string ends with the specified string.
TSubString Strip(EStripType s=kTrailing, char c=' ') const
Return a substring of self stripped at beginning and/or end.
const char * Data() const
TString & ReplaceAll(const TString &s1, const TString &s2)
Ssiz_t Last(char c) const
Find last occurrence of a character c.
TObjArray * Tokenize(const TString &delim) const
This function is used to isolate sequential tokens in a TString.
Bool_t BeginsWith(const char *s, ECaseCompare cmp=kExact) const
TString & Prepend(const char *cs)
TString & Remove(Ssiz_t pos)
Bool_t Contains(const char *pat, ECaseCompare cmp=kExact) const
Ssiz_t Index(const char *pat, Ssiz_t i=0, ECaseCompare cmp=kExact) const
A zero length substring is legal.
virtual void FreeDirectory(void *dirp)
Free a directory.
virtual void * OpenDirectory(const char *name)
Open a directory. Returns 0 if directory does not exist.
virtual const char * FindFile(const char *search, TString &file, EAccessMode mode=kFileExists)
Find location of file in a search path.
virtual Int_t Exec(const char *shellcmd)
Execute a command.
virtual const char * PrependPathName(const char *dir, TString &name)
Concatenate a directory and a file name.
virtual Bool_t AccessPathName(const char *path, EAccessMode mode=kFileExists)
Returns FALSE if one can access a file using the specified access mode.
virtual const char * GetDirEntry(void *dirp)
Get a directory entry. Returns 0 if no more entries.
virtual const char * BaseName(const char *pathname)
Base name of a file name. Base name of /user/root is root.
virtual void Sleep(UInt_t milliSec)
Sleep milliSec milli seconds.
virtual Bool_t ProcessEvents()
Process pending events (GUI, timers, sockets).
virtual TString GetDirName(const char *pathname)
Return the directory name in pathname.
virtual int Unlink(const char *name)
Unlink, i.e.
virtual const char * TempDirectory() const
Return a user configured or systemwide directory to create temporary files in.
virtual void SetText(Double_t x, Double_t y, const char *text)
TVirtualPad is an abstract base class for the Pad and Canvas classes.
virtual void SetBatch(Bool_t batch=kTRUE)=0
void Print(const char *filename="") const override=0
This method must be overridden when a class wants to print itself.
virtual TVirtualPad * cd(Int_t subpadnumber=0)=0
virtual void SetBorderMode(Short_t bordermode)=0
void Clear(Option_t *option="") override=0