Orb/Doxygen/src/rtfgen.h
changeset 0 42188c7ea2d9
child 4 468f4c8d3d5b
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Orb/Doxygen/src/rtfgen.h	Thu Jan 21 17:29:01 2010 +0000
@@ -0,0 +1,269 @@
+/******************************************************************************
+ *
+ * 
+ *
+ * Copyright (C) 1997-2008 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.
+ *
+ * Documents produced by Doxygen are derivative works derived from the
+ * input used in their production; they are not affected by this license.
+ *
+ */
+
+#ifndef RTFGEN_H
+#define RTFGEN_H
+
+#include "outputgen.h"
+
+class QFile;
+
+class RTFGenerator : public OutputGenerator
+{
+  public:
+    RTFGenerator();
+   ~RTFGenerator();
+    static void init();
+    static void writeStyleSheetFile(QFile &f);
+    static void writeExtensionsFile(QFile &file);
+
+    void enable() 
+    { if (genStack->top()) active=*genStack->top(); else 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; }
+
+    void printDoc(DocNode *,const char *);
+
+    void startFile(const char *name,const char *manName,const char *title);
+    void writeFooter() {}
+    void endFile();
+    void clearBuffer();
+    void postProcess(QByteArray &);
+    
+    void startIndexSection(IndexSections);
+    void endIndexSection(IndexSections);
+    void writePageLink(const char *,bool);
+    void startProjectNumber();
+    void endProjectNumber();
+    void writeStyleInfo(int part);
+    void startTitleHead(const char *);
+    void startTitle();
+    void endTitleHead(const char *,const char *name);
+    void endTitle() {} 
+
+    void newParagraph();
+    void startParagraph();
+    void endParagraph();
+    void writeString(const char *text);
+    void startIndexListItem() {}
+    void endIndexListItem() {}
+    void startIndexList();
+    void endIndexList();
+    void startIndexKey();
+    void endIndexKey();
+    void startIndexValue(bool);
+    void endIndexValue(const char *,bool);
+    void startItemList();
+    void endItemList();
+    void startIndexItem(const char *ref,const char *file);
+    void endIndexItem(const char *ref,const char *file);
+    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,
+                       const char *tooltip);
+    void startTextLink(const char *f,const char *anchor);
+    void endTextLink();
+    void startHtmlLink(const char *url);
+    void endHtmlLink();
+    void startTypewriter() { t << "{\\f2 "; }
+    void endTypewriter()   { t << "}";      }
+    void startGroupHeader();
+    void endGroupHeader();
+    //void writeListItem();
+    void startItemListItem();
+    void endItemListItem();
+
+    void startMemberSections() {}
+    void endMemberSections() {} 
+    void startMemberHeader() { startGroupHeader(); }
+    void endMemberHeader() { endGroupHeader(); }
+    void startMemberSubtitle(); 
+    void endMemberSubtitle(); 
+    void startMemberDocList() {}
+    void endMemberDocList() {}
+    void startMemberList();
+    void endMemberList();
+    void startAnonTypeScope(int) {}
+    void endAnonTypeScope(int) {}
+    void startMemberItem(int);
+    void endMemberItem();
+    void startMemberTemplateParams() {}
+    void endMemberTemplateParams() {}
+    void insertMemberAlign(bool) {}
+
+    void writeRuler() { rtfwriteRuler_thin(); }
+	
+    void writeAnchor(const char *fileName,const char *name);
+    void startCodeFragment();
+    void endCodeFragment();
+    void writeLineNumber(const char *,const char *,const char *,int l) { t << l << " "; }
+    void startCodeLine() { col=0; }
+    void endCodeLine() { lineBreak(); }
+    void startEmphasis() { t << "{\\i ";  }
+    void endEmphasis()   { t << "}"; }
+    void startBold()     { t << "{\\b "; }
+    void endBold()       { t << "}"; }
+    void startDescription();
+    void endDescription();
+    void startDescItem();
+    void endDescItem();
+    void lineBreak(const char *style=0);
+    void startMemberDoc(const char *,const char *,const char *,const char *);
+    void endMemberDoc(bool);
+    void startDoxyAnchor(const char *,const char *,const char *,const char *,const char *);
+    void endDoxyAnchor(const char *,const char *);
+    void startCodeAnchor(const char *) {};
+    void endCodeAnchor() {};
+    void writeChar(char c);
+    void writeLatexSpacing() {};//{ t << "\\hspace{0.3cm}"; }
+    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 startMemberDescription();
+    void endMemberDescription();
+    void startDescList(SectionTypes);
+    void startSimpleSect(SectionTypes,const char *,const char *,const char *);
+    void endSimpleSect();
+    void startParamList(ParamListTypes,const char *);
+    void endParamList();
+    //void writeDescItem();
+    void startDescForItem();
+    void endDescForItem();
+    void startSection(const char *,const char *,SectionInfo::SectionType);
+    void endSection(const char *,SectionInfo::SectionType);
+    void addIndexItem(const char *,const char *);
+    void startIndent();
+    void endIndent();
+    void writeSynopsis()     {}
+    void startClassDiagram();
+    void endClassDiagram(const ClassDiagram &,const char *filename,const char *name);
+    void startPageRef();
+    void endPageRef(const char *,const char *);
+    void startQuickIndices() {}
+    void endQuickIndices() {}
+    void writeQuickLinks(bool,HighlightedItem) {}
+    void startContents() {}
+    void endContents() {}
+    void writeNonBreakableSpace(int);
+	
+    void startDescTable();
+    void endDescTable();
+    void startDescTableTitle();
+    void endDescTableTitle();
+    void startDescTableData();
+    void endDescTableData();
+    
+    void startDotGraph();
+    void endDotGraph(const DotClassGraph &);
+    void startInclDepGraph();
+    void endInclDepGraph(const DotInclDepGraph &);
+    void startGroupCollaboration();
+    void endGroupCollaboration(const DotGroupCollaboration &g);
+    void startCallGraph();
+    void endCallGraph(const DotCallGraph &);
+    void startDirDepGraph();
+    void endDirDepGraph(const DotDirDeps &g);
+    void writeGraphicalHierarchy(const DotGfxHierarchyTable &) {}
+
+    void startMemberGroupHeader(bool);
+    void endMemberGroupHeader();
+    void startMemberGroupDocs();
+    void endMemberGroupDocs();
+    void startMemberGroup();
+    void endMemberGroup(bool);
+    
+    void startTextBlock(bool dense);
+    void endTextBlock(bool);
+    void lastIndexPage();
+
+    void startMemberDocPrefixItem() {}
+    void endMemberDocPrefixItem() {}
+    void startMemberDocName(bool) {}
+    void endMemberDocName() {}
+    void startParameterType(bool,const char *);
+    void endParameterType() {}
+    void startParameterName(bool) {}
+    void endParameterName(bool,bool,bool) {}
+    void startParameterList(bool) {}
+    void endParameterList() {}
+
+    void startConstraintList(const char  *);
+    void startConstraintParam();
+    void endConstraintParam();
+    void startConstraintType();
+    void endConstraintType();
+    void startConstraintDocs();
+    void endConstraintDocs();
+    void endConstraintList();
+
+
+    void startFontClass(const char *) {}
+    void endFontClass() {}
+
+    void writeCodeAnchor(const char *) {}
+    void linkableSymbol(int,const char *,Definition *,Definition *) {}
+
+    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?
+    int  m_numCols; // number of columns in a table
+    QCString relPath;
+
+    void beginRTFDocument();
+    void beginRTFChapter();
+    void beginRTFSection();
+    void rtfwriteRuler_doubleline();
+    void rtfwriteRuler_emboss();
+    void rtfwriteRuler_thick();
+    void rtfwriteRuler_thin();
+    void writeRTFReference(const char *label);
+    //char *getMultiByte(int c);
+};
+
+#endif