/******************************************************************************
*
*
*
* Copyright (C) 1997-2002 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
* granted. No representations are made about the suitability of this software
* for any purpose. It is provided "as is" without express or implied warranty.
* See the GNU General Public License for more details.
*
* Documents produced by Doxygen are derivative works derived from the
* input used in their production; they are not affected by this license.
*
*/
#ifndef HTMLGEN_H
#define HTMLGEN_H
#include "qtbc.h"
#include "outputgen.h"
class QFile;
class HtmlGenerator : public OutputGenerator
{
public:
HtmlGenerator();
virtual ~HtmlGenerator();
static void init();
static void writeStyleSheetFile(QFile &f);
static void writeHeaderFile(QFile &f);
static void writeFooterFile(QFile &f);
OutputGenerator *copy() { return new HtmlGenerator; }
//OutputGenerator *clone() { return new HtmlGenerator(*this); }
void append(const OutputGenerator *o);
void enable() { active=TRUE; }
void disable() { active=FALSE; }
void enableIf(OutputType o) { if (o==Html) active=TRUE; }
void disableIf(OutputType o) { if (o==Html) active=FALSE; }
void disableIfNot(OutputType o) { if (o!=Html) active=FALSE; }
bool isEnabled(OutputType o) { return (o==Html && active); }
OutputGenerator *get(OutputType o) { return (o==Html) ? this : 0; }
//void generateExternalIndex();
void startFile(const char *name,const char *manName,
const char *title,bool external);
void writeFooter(int,bool);
void endFile();
void clearBuffer();
//void writeIndex();
void startIndexSection(IndexSections) {}
void endIndexSection(IndexSections) {}
void startProjectNumber();
void endProjectNumber();
void writeStyleInfo(int part);
void startTitleHead(const char *) { startTitle(); }
void endTitleHead(const char *,const char *) { endTitle(); }
void startTitle() { t << "
"; }
void endTitle() { t << "
"; }
void newParagraph();
void writeString(const char *text);
void startIndexList();
void endIndexList();
void startIndexKey();
void endIndexKey();
void startIndexValue(bool);
void endIndexValue(const char *,bool);
void startItemList() { t << "" << endl; }
void endItemList() { t << "
" << endl; }
void startEnumList() { t << "" << endl; }
void endEnumList() { t << "
" << endl; }
void startAlphabeticalIndexList();
void endAlphabeticalIndexList();
void writeIndexHeading(const char *s);
void writeIndexItem(const char *ref,const char *file,const char *name);
void docify(const char *text);
void codify(const char *text);
void writeObjectLink(const char *ref,const char *file,
const char *anchor,const char *name);
void writeCodeLink(const char *ref,const char *file,
const char *anchor,const char *name);
void startTextLink(const char *file,const char *anchor);
void endTextLink();
void startHtmlLink(const char *url);
void endHtmlLink();
void writeMailLink(const char *url);
void startTypewriter() { t << ""; }
void endTypewriter() { t << "
"; }
void startGroupHeader();
void endGroupHeader();
void writeListItem() { t << ""; }
void startMemberSections();
void endMemberSections();
void startMemberHeader();
void endMemberHeader();
void startMemberSubtitle();
void endMemberSubtitle();
void startMemberList();
void endMemberList();
void startMemberItem(int);
void startMemberGroupHeader(bool);
void endMemberGroupHeader();
void startMemberGroupDocs();
void endMemberGroupDocs();
void startMemberGroup();
void endMemberGroup(bool);
void insertMemberAlign();
void endMemberItem(bool);
void startMemberDescription();
void endMemberDescription();
void writeRuler() { t << "
"; }
void writeAnchor(const char *,const char *name)
{ t << ""; }
void startCodeFragment() { t << ""; }
void endCodeFragment() { t << "
"; }
void startPreFragment() { t << ""; }
void endPreFragment() { t << "
"; }
void startVerbatimFragment() { t << ""; }
void endVerbatimFragment() { t << "
"; }
void writeLineNumber(const char *,const char *,const char *,int);
void startCodeLine() { col=0; }
void endCodeLine() { codify("\n"); }
//void writeBoldString(const char *text)
// { t << ""; docify(text); t << ""; }
void startEmphasis() { t << ""; }
void endEmphasis() { t << ""; }
void startBold() { t << ""; }
void endBold() { t << ""; }
void startDescription() { t << endl << "" << endl; }
void endDescription() { t << endl << "
" << endl; }
void startDescItem() { t << ""; }
void endDescItem() { t << ""; }
void lineBreak() { t << "
" << endl; }
void writeChar(char c);
void startMemberDoc(const char *,const char *,const char *,const char *);
void endMemberDoc();
//void writeDoxyAnchor(const char *fName,const char *clName,
// const char *anchor,const char *name);
void startDoxyAnchor(const char *fName,const char *manName,
const char *anchor,const char *name);
void endDoxyAnchor(const char *fName,const char *anchor);
void startCodeAnchor(const char *label) { t << ""; }
void endCodeAnchor() { }
void writeLatexSpacing() {}
//void writeLatexLabel(const char *,const char *) {}
void writeStartAnnoItem(const char *type,const char *file,
const char *path,const char *name);
void writeEndAnnoItem(const char *) { t << endl; }
void startSubsection() { t << ""; }
void endSubsection() { t << "
" << endl; }
void startSubsubsection() { t << ""; }
void endSubsubsection() { t << "
" << endl; }
void startCenter() { t << "" << endl; }
void endCenter() { t << "" << endl; }
void startSmall() { t << "" << endl; }
void endSmall() { t << "" << endl; }
void startSubscript() { t << ""; }
void endSubscript() { t << ""; }
void startSuperscript() { t << ""; }
void endSuperscript() { t << ""; }
void startTable(bool,int)
{ t << ""; }
void endTable(bool hasCaption)
{ if (!hasCaption) t << "";
t << "
" << endl;
}
void startCaption() { t << ""; }
void endCaption() { t << "" << endl; }
void nextTableRow() { t << ""; }
void endTableRow() { t << " |
" << endl; }
void nextTableColumn() { t << ""; }
void endTableColumn() { t << " | "; }
void writeCopyright() { t << "©"; }
void writeQuote() { t << """; }
void writeUmlaut(char c) { t << "&" << c << "uml;"; }
void writeAcute(char c) { t << "&" << c << "acute;"; }
void writeGrave(char c) { t << "&" << c << "grave;"; }
void writeCirc(char c) { t << "&" << c << "circ;"; }
void writeTilde(char c) { t << "&" << c << "tilde;"; }
void writeRing(char c) { t << "&" << c << "ring;"; }
void writeSharpS() { t << "ß"; }
void writeCCedil(char c) { t << "&" << c << "cedil;"; }
void startDescList(SectionTypes) { t << "- " << endl; }
void endDescList() { t << "
"; }
void startParamList(ParamListTypes) { t << "- " << endl; }
void endParamList() { t << "
"; }
void endDescTitle() { t << ""; }
void writeDescItem() { t << "" << endl; }
void startSection(const char *,const char *,bool);
void endSection(const char *,bool);
void writeSectionRef(const char *,const char *,const char *,const char *);
void writeSectionRefItem(const char *,const char *,const char *);
//void writeSectionRefAnchor(const char *,const char *,const char *);
void addIndexItem(const char *,const char *);
void startIndent();
void endIndent();
void writeSynopsis() {}
void startClassDiagram();
void endClassDiagram(ClassDiagram &,const char *,const char *);
//void startColorFont(uchar r,uchar g,uchar b);
//void endColorFont();
void startPageRef() {}
void endPageRef(const char *,const char *) {}
void startQuickIndexItem(const char *,const char *);
void endQuickIndexItem();
void writeFormula(const char *,const char *);
void writeNonBreakableSpace(int);
void startImage(const char *,const char *,bool);
void endImage(bool);
void startDotFile(const char *,bool);
void endDotFile(bool);
void startDescTable()
{ t << "" << endl; }
void endDescTable()
{ t << "
" << endl; }
void startDescTableTitle()
{ t << ""; }
void endDescTableTitle()
{ t << " | "; }
void startDescTableData()
{ t << "" << endl; }
void endDescTableData()
{ t << " |
" << endl; }
//static void docifyStatic(QTextStream &t,const char *str);
void startDotGraph();
void endDotGraph(DotClassGraph &g);
void startInclDepGraph();
void endInclDepGraph(DotInclDepGraph &g);
void writeGraphicalHierarchy(DotGfxHierarchyTable &g);
void startTextBlock(bool) {}
void endTextBlock() {}
void lastIndexPage() {}
void startMemberDocPrefixItem();
void endMemberDocPrefixItem();
void startMemberDocName();
void endMemberDocName();
void startParameterType(bool first);
void endParameterType();
void startParameterName(bool);
void endParameterName(bool last,bool emptyList);
void startParameterList();
void endParameterList();
void startFontClass(const char *s) { t << ""; }
void endFontClass() { t << ""; }
void startHtmlOnly() {}
void endHtmlOnly() {}
void startLatexOnly() {}
void endLatexOnly() {}
private:
QCString lastTitle;
QCString lastFile;
HtmlGenerator &operator=(const HtmlGenerator &g);
HtmlGenerator(const HtmlGenerator &g);
int col;
};
#endif