diff -r 000000000000 -r 42188c7ea2d9 Orb/Doxygen/src/rtfgen.h --- /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