diff options
Diffstat (limited to 'src/rtfgen.h')
-rw-r--r-- | src/rtfgen.h | 241 |
1 files changed, 241 insertions, 0 deletions
diff --git a/src/rtfgen.h b/src/rtfgen.h new file mode 100644 index 0000000..77e278b --- /dev/null +++ b/src/rtfgen.h @@ -0,0 +1,241 @@ +/****************************************************************************** + * + * $Id$ + * + * Copyright (C) 1997-2000 by Parker Waechter & 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. + * + * All output generated with Doxygen is not covered by this license. + * + */ + +#ifndef RTFGEN_H +#define RTFGEN_H + +#include "outputgen.h" + +class QFile; + +class RTFGenerator : public OutputGenerator +{ + public: + RTFGenerator(); + ~RTFGenerator(); + + OutputGenerator *copy(); + //OutputGenerator *clone() { return new RTFGenerator(*this); } + void append(const OutputGenerator *o); + void enable() { active=TRUE; } + void disable() { active=FALSE; } + void enableIf(OutputType o) { if (o==RTF) active=TRUE; } + void disableIf(OutputType o) { if (o==RTF) active=FALSE; } + void disableIfNot(OutputType o) { if (o!=RTF) active=FALSE; } + bool isEnabled(OutputType o) { return (o==RTF && active); } + OutputGenerator *get(OutputType o) { return (o==RTF) ? this : 0; } + + static void init(); + void startFile(const char *name,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 *); + void startTitle(); + void endTitleHead(const char *,const char *name); + void endTitle() {}; //{ t << "}"; } + + void newParagraph(); + void writeString(const char *text); + void startIndexList(); + void endIndexList(); + void startItemList(); + void endItemList(); + void startEnumList(); + void endEnumList(); + void startAlphabeticalIndexList() {} + void endAlphabeticalIndexList() {} + void writeIndexHeading(const char *) {} + 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 *text); + void writeCodeLink(const char *ref, const char *file, + const char *anchor,const char *text); + void startTextLink(const char *f,const char *anchor); + void endTextLink(); + void writeHtmlLink(const char *,const char *); + void writeMailLink(const char *url); + void startTypewriter() { t << "{\\f2 "; } + void endTypewriter() { t << "}"; } + void startGroupHeader(); + void endGroupHeader(); + void writeListItem(); + + void startMemberSections() {} + void endMemberSections() {} + void startMemberHeader() { startGroupHeader(); } + void endMemberHeader() { endGroupHeader(); } + void startMemberSubtitle(); + void endMemberSubtitle(); + void startMemberList(); + void endMemberList(); + void startMemberItem(bool,int); + void endMemberItem(bool,const char *,const char *,bool); + void memberGroupSpacing(bool) {} + void memberGroupSeparator() {} + void insertMemberAlign() {} + + void writeRuler(){RtfwriteRuler_thin();}; + + void writeAnchor(const char *name); + void startCodeFragment(); + void endCodeFragment(); + void startCodeLine() { col=0; } + void endCodeLine() { lineBreak(); } + void writeBoldString(const char *text) + { t << "{\\b "; docify(text); t << "}"; } + void startEmphasis() { t << "{\\i "; } + void endEmphasis() { t << "}"; } + void startBold() { t << "{\\b "; } + void endBold() { t << "}"; } + void startDescription(); + void endDescription(); + void startDescItem(); + void endDescItem(); + void lineBreak(); + void startMemberDoc(const char *,const char *,const char *,const char *); + void endMemberDoc(); + void startDoxyAnchor(const char *,const char *,const char *,const char *); + void endDoxyAnchor(); + void startCodeAnchor(const char *) {}; + void endCodeAnchor() {}; + void writeChar(char c); + void writeLatexSpacing() {};//{ t << "\\hspace{0.3cm}"; } + //void writeLatexLabel(const char *scope,const char *anchor); + void writeStartAnnoItem(const char *type,const char *file, + const char *path,const char *name); + void writeEndAnnoItem(const char *name); + void startSubsection(); + void endSubsection(); + void startSubsubsection(); + void endSubsubsection(); + void startCenter() { t << "{\\qc" << endl; } + void endCenter() { t << "}"; } + void startSmall() { t << "{\\sub "; } + void endSmall() { t << "}"; } + void startSubscript() { t << "{\\sub " << endl;} + void endSubscript() { t << "}"; } + void startSuperscript() { t << "{\\super " << endl;} + void endSuperscript() { t << "}"; } + void startTable(int ) { }//t << "\\begin{TabularC}{" << c << "}\n\\hline\n"; + void endTable() { }//t << "\\\\\\hline\n\\end{TabularC}\n"; + void nextTableRow() { } + void endTableRow() { }//t << "\\\\\\hline\n"; + void nextTableColumn() { }//t << "&"; + void endTableColumn() { } + void writeCopyright() { t << "\\copyright"; } + void writeQuote() { t << "\""; } + void writeUmlaut(char c) { if (c=='i') t << "\\\"{\\i}"; else + t << "\\\"{" << c << "}"; + } + void writeAcute(char c) { if (c=='i') t << "\\'{\\i}"; else + t << "\\'{" << c << "}"; + } + void writeGrave(char c) { if (c=='i') t << "\\`{\\i}"; else + t << "\\`{" << c << "}"; + } + void writeCirc(char c) { if (c=='i') t << "\\^{\\i}"; else + t << "\\^{" << c << "}"; + } + void writeTilde(char c) { t << "\\~{" << c << "}"; } + void writeRing(char c) { t << "\\" << c << c; } + void writeSharpS() { t << "\"s"; } + + void startMemberDescription(); + void endMemberDescription(); + void startDescList(); + void endDescTitle(); + void writeDescItem(); + void endDescList(); + void writeSection(const char *,const char *,bool); + void writeSectionRef(const char *,const char *,const char *); + void writeSectionRefItem(const char *,const char *,const char *); + void writeSectionRefAnchor(const char *,const char *,const char *); + void addToIndex(const char *,const char *); + void startIndent(); + void endIndent(); + void writeSynopsis() {} + //void generateExternalIndex() {} + void startClassDiagram(); + void endClassDiagram(ClassDiagram &,const char *filename,const char *name); + void startColorFont(uchar,uchar,uchar) {} + 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(); + void writeImage(const char *,const char *,const char *); + + void startDescTable(); + void endDescTable(); + void startDescTableTitle(); + void endDescTableTitle(); + void startDescTableData(); + void endDescTableData(); + + void startCollaborationDiagram(); + void endCollaborationDiagram(DotGfxUsageGraph &); + void startInclDepGraph(); + void endInclDepGraph(DotInclDepGraph &); + void writeGraphicalHierarchy(DotGfxHierarchyTable &) {} + + void startTextBlock(bool dense); + void endTextBlock(); + void lastIndexPage(); + + static bool preProcessFileInplace(const char *path,const char *name); + + private: + RTFGenerator(const RTFGenerator &); + RTFGenerator &operator=(const RTFGenerator &); + + const char *Rtf_BList_DepthStyle(); + const char *Rtf_CList_DepthStyle(); + const char *Rtf_EList_DepthStyle(); + const char *Rtf_LCList_DepthStyle(); + const char *Rtf_DList_DepthStyle(); + const char *Rtf_Code_DepthStyle(); + void incrementIndentLevel(); + void decrementIndentLevel(); + int col; + + bool m_bstartedBody; // has startbody been called yet? + int m_listLevel; // // RTF does not really have a addative indent...manually set list level. + bool m_omitParagraph; // should a the next paragraph command be ignored? + + void beginRTFDocument(); + void beginRTFChapter(); + void beginRTFSection(); + void RtfwriteRuler_doubleline() {t << "{\\pard\\widctlpar\\brdrb\\brdrdb\\brdrw15\\brsp20 \\adjustright \\par}" << endl; }; + void RtfwriteRuler_emboss() {t << "{\\pard\\widctlpar\\brdrb\\brdremboss\\brdrw15\\brsp20 \\adjustright \\par}" << endl; }; + void RtfwriteRuler_thick() {t << "{\\pard\\widctlpar\\brdrb\\brdrs\\brdrw75\\brsp20 \\adjustright \\par}" << endl; }; + void RtfwriteRuler_thin() {t << "{\\pard\\widctlpar\\brdrb\\brdrs\\brdrw5\\brsp20 \\adjustright \\par}" << endl; }; + void WriteRTFReference(const char *label); +}; + +#endif |