summaryrefslogtreecommitdiffstats
path: root/src/rtfgen.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/rtfgen.h')
-rw-r--r--src/rtfgen.h241
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