|
Packit |
1c1d7e |
/******************************************************************************
|
|
Packit |
1c1d7e |
*
|
|
Packit |
1c1d7e |
*
|
|
Packit |
1c1d7e |
*
|
|
Packit |
1c1d7e |
* Copyright (C) 1997-2015 by Parker Waechter & Dimitri van Heesch.
|
|
Packit |
1c1d7e |
*
|
|
Packit |
1c1d7e |
* Style sheet additions by Alexander Bartolich
|
|
Packit |
1c1d7e |
*
|
|
Packit |
1c1d7e |
* Permission to use, copy, modify, and distribute this software and its
|
|
Packit |
1c1d7e |
* documentation under the terms of the GNU General Public License is hereby
|
|
Packit |
1c1d7e |
* granted. No representations are made about the suitability of this software
|
|
Packit |
1c1d7e |
* for any purpose. It is provided "as is" without express or implied warranty.
|
|
Packit |
1c1d7e |
* See the GNU General Public License for more details.
|
|
Packit |
1c1d7e |
*
|
|
Packit |
1c1d7e |
* Documents produced by Doxygen are derivative works derived from the
|
|
Packit |
1c1d7e |
* input used in their production; they are not affected by this license.
|
|
Packit |
1c1d7e |
*
|
|
Packit |
1c1d7e |
*/
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
#include <stdlib.h>
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
#include <qdir.h>
|
|
Packit |
1c1d7e |
#include <qregexp.h>
|
|
Packit |
1c1d7e |
#include <qtextstream.h>
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
#include "rtfgen.h"
|
|
Packit |
1c1d7e |
#include "config.h"
|
|
Packit |
1c1d7e |
#include "message.h"
|
|
Packit |
1c1d7e |
#include "doxygen.h"
|
|
Packit |
1c1d7e |
#include "util.h"
|
|
Packit |
1c1d7e |
#include "diagram.h"
|
|
Packit |
1c1d7e |
#include "language.h"
|
|
Packit |
1c1d7e |
#include "dot.h"
|
|
Packit |
1c1d7e |
#include "version.h"
|
|
Packit |
1c1d7e |
#include "pagedef.h"
|
|
Packit |
1c1d7e |
#include "rtfstyle.h"
|
|
Packit |
1c1d7e |
#include "rtfdocvisitor.h"
|
|
Packit |
1c1d7e |
#include "docparser.h"
|
|
Packit |
1c1d7e |
#include "dirdef.h"
|
|
Packit |
1c1d7e |
#include "vhdldocgen.h"
|
|
Packit |
1c1d7e |
#include "portable.h"
|
|
Packit |
1c1d7e |
#include "groupdef.h"
|
|
Packit |
1c1d7e |
#include "classlist.h"
|
|
Packit |
1c1d7e |
#include "filename.h"
|
|
Packit |
1c1d7e |
#include "namespacedef.h"
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
//#define DBG_RTF(x) x;
|
|
Packit |
1c1d7e |
#define DBG_RTF(x)
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
static QCString dateToRTFDateString()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
const QDateTime &d = QDateTime::currentDateTime();
|
|
Packit |
1c1d7e |
QCString result;
|
|
Packit |
1c1d7e |
result.sprintf("\\yr%d\\mo%d\\dy%d\\hr%d\\min%d\\sec%d",
|
|
Packit |
1c1d7e |
d.date().year(), d.date().month(), d.date().day(),
|
|
Packit |
1c1d7e |
d.time().hour(),d.time().minute(),d.time().second());
|
|
Packit |
1c1d7e |
return result;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
RTFGenerator::RTFGenerator() : OutputGenerator()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
dir=Config_getString(RTF_OUTPUT);
|
|
Packit |
1c1d7e |
col=0;
|
|
Packit |
1c1d7e |
//insideTabbing=FALSE;
|
|
Packit |
1c1d7e |
m_listLevel = 0;
|
|
Packit |
1c1d7e |
m_bstartedBody = FALSE;
|
|
Packit |
1c1d7e |
m_omitParagraph = FALSE;
|
|
Packit |
1c1d7e |
m_numCols = 0;
|
|
Packit |
1c1d7e |
m_prettyCode=Config_getBool(RTF_SOURCE_CODE);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
RTFGenerator::~RTFGenerator()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
//void RTFGenerator::append(const OutputGenerator *g)
|
|
Packit |
1c1d7e |
//{
|
|
Packit |
1c1d7e |
// t << g->getContents();
|
|
Packit |
1c1d7e |
// col+=((RTFGenerator *)g)->col;
|
|
Packit |
1c1d7e |
// //insideTabbing=insideTabbing || ((RTFGenerator *)g)->insideTabbing;
|
|
Packit |
1c1d7e |
// m_listLevel=((RTFGenerator *)g)->m_listLevel;
|
|
Packit |
1c1d7e |
// m_omitParagraph=((RTFGenerator *)g)->m_omitParagraph;
|
|
Packit |
1c1d7e |
// //printf("RTFGenerator::append(%s) insideTabbing=%s\n", g->getContents().data(),
|
|
Packit |
1c1d7e |
// // insideTabbing ? "TRUE" : "FALSE" );
|
|
Packit |
1c1d7e |
//}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
//OutputGenerator *RTFGenerator::copy()
|
|
Packit |
1c1d7e |
//{
|
|
Packit |
1c1d7e |
// RTFGenerator *result = new RTFGenerator;
|
|
Packit |
1c1d7e |
// //result->insideTabbing=insideTabbing;
|
|
Packit |
1c1d7e |
// result->m_listLevel=m_listLevel;
|
|
Packit |
1c1d7e |
// result->m_omitParagraph=m_omitParagraph;
|
|
Packit |
1c1d7e |
// return result;
|
|
Packit |
1c1d7e |
//}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void RTFGenerator::writeStyleSheetFile(QFile &file)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
FTextStream t(&file;;
|
|
Packit |
1c1d7e |
t << "# Generated by doxygen " << versionString << "\n\n";
|
|
Packit |
1c1d7e |
t << "# This file describes styles used for generating RTF output.\n";
|
|
Packit |
1c1d7e |
t << "# All text after a hash (#) is considered a comment and will be ignored.\n";
|
|
Packit |
1c1d7e |
t << "# Remove a hash to activate a line.\n\n";
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
int i;
|
|
Packit |
1c1d7e |
for ( i=0 ; rtf_Style_Default[i].reference!=0 ; i++ )
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "# " << rtf_Style_Default[i].name << " = "
|
|
Packit |
1c1d7e |
<< rtf_Style_Default[i].reference
|
|
Packit |
1c1d7e |
<< rtf_Style_Default[i].definition << endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void RTFGenerator::writeExtensionsFile(QFile &file)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
FTextStream t(&file;;
|
|
Packit |
1c1d7e |
t << "# Generated by doxygen " << versionString << "\n\n";
|
|
Packit |
1c1d7e |
t << "# This file describes extensions used for generating RTF output.\n";
|
|
Packit |
1c1d7e |
t << "# All text after a hash (#) is considered a comment and will be ignored.\n";
|
|
Packit |
1c1d7e |
t << "# Remove a hash to activate a line.\n\n";
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
t << "# Overrides the project title.\n";
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
t << "#Title = \n\n";
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
t << "# Name of the company that produced this document.\n";
|
|
Packit |
1c1d7e |
t << "#Company = \n\n";
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
t << "# Filename of a company or project logo.\n";
|
|
Packit |
1c1d7e |
t << "#LogoFilename = \n\n";
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
t << "# Author of the document.\n";
|
|
Packit |
1c1d7e |
t << "#Author = \n\n";
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
t << "# Type of document (e.g. Design Specification, User Manual, etc.).\n";
|
|
Packit |
1c1d7e |
t << "#DocumentType = \n\n";
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
t << "# Document tracking number.\n";
|
|
Packit |
1c1d7e |
t << "#DocumentId = \n\n";
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
t << "# Name of the author's manager.\n";
|
|
Packit |
1c1d7e |
t << "# This field is not displayed in the document itself, but it is \n";
|
|
Packit |
1c1d7e |
t << "# available in the information block of the rtf file. In Microsoft \n";
|
|
Packit |
1c1d7e |
t << "# Word, it is available under File:Properties.\n";
|
|
Packit |
1c1d7e |
t << "#Manager = \n\n";
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
t << "# Subject of the document.\n";
|
|
Packit |
1c1d7e |
t << "# This field is not displayed in the document itself, but it is \n";
|
|
Packit |
1c1d7e |
t << "# available in the information block of the rtf file. In Microsoft \n";
|
|
Packit |
1c1d7e |
t << "# Word, it is available under File:Properties.\n";
|
|
Packit |
1c1d7e |
t << "#Subject = \n\n";
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
t << "# Comments regarding the document.\n";
|
|
Packit |
1c1d7e |
t << "# This field is not displayed in the document itself, but it is \n";
|
|
Packit |
1c1d7e |
t << "# available in the information block of the rtf file. In Microsoft \n";
|
|
Packit |
1c1d7e |
t << "# Word, it is available under File:Properties.\n";
|
|
Packit |
1c1d7e |
t << "#Comments = \n\n";
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
t << "# Keywords associated with the document.\n";
|
|
Packit |
1c1d7e |
t << "# This field is not displayed in the document itself, but it is \n";
|
|
Packit |
1c1d7e |
t << "# available in the information block of the rtf file. In Microsoft \n";
|
|
Packit |
1c1d7e |
t << "# Word, it is available under File:Properties.\n";
|
|
Packit |
1c1d7e |
t << "#Keywords = \n\n";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void RTFGenerator::init()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
QCString dir=Config_getString(RTF_OUTPUT);
|
|
Packit |
1c1d7e |
QDir d(dir);
|
|
Packit |
1c1d7e |
if (!d.exists() && !d.mkdir(dir))
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
err("Could not create output directory %s\n",dir.data());
|
|
Packit |
1c1d7e |
exit(1);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
rtf_Style.setAutoDelete(TRUE);
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
// first duplicate strings of rtf_Style_Default
|
|
Packit |
1c1d7e |
const struct Rtf_Style_Default* def = rtf_Style_Default;
|
|
Packit |
1c1d7e |
while(def->reference != 0)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (def->definition == 0)
|
|
Packit |
1c1d7e |
err("Internal: rtf_Style_Default[%s] has no definition.\n", def->name);
|
|
Packit |
1c1d7e |
StyleData* styleData = new StyleData(def->reference, def->definition);
|
|
Packit |
1c1d7e |
rtf_Style.insert(def->name, styleData);
|
|
Packit |
1c1d7e |
def++;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
// overwrite some (or all) definitions from file
|
|
Packit |
1c1d7e |
QCString &rtfStyleSheetFile = Config_getString(RTF_STYLESHEET_FILE);
|
|
Packit |
1c1d7e |
if (!rtfStyleSheetFile.isEmpty())
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
loadStylesheet(rtfStyleSheetFile, rtf_Style);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
// If user has defined an extension file, load its contents.
|
|
Packit |
1c1d7e |
QCString &rtfExtensionsFile = Config_getString(RTF_EXTENSIONS_FILE);
|
|
Packit |
1c1d7e |
if (!rtfExtensionsFile.isEmpty())
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
loadExtensions(rtfExtensionsFile);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
createSubDirs(d);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
static QCString makeIndexName(const char *s,int i)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
QCString result=s;
|
|
Packit |
1c1d7e |
result+=(char)(i+'0');
|
|
Packit |
1c1d7e |
return result;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void RTFGenerator::beginRTFDocument()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
/* all the included RTF files should begin with the
|
|
Packit |
1c1d7e |
* same header
|
|
Packit |
1c1d7e |
*/
|
|
Packit |
1c1d7e |
t <<"{\\rtf1\\ansi\\ansicpg" << theTranslator->trRTFansicp();
|
|
Packit |
1c1d7e |
t <<"\\uc1 \\deff0\\deflang1033\\deflangfe1033\n";
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
DBG_RTF(t <<"{\\comment Beginning font list}\n")
|
|
Packit |
1c1d7e |
t <<"{\\fonttbl ";
|
|
Packit |
1c1d7e |
t <<"{\\f0\\froman\\fcharset" << theTranslator->trRTFCharSet();
|
|
Packit |
1c1d7e |
t <<"\\fprq2{\\*\\panose 02020603050405020304}Times New Roman;}\n";
|
|
Packit |
1c1d7e |
t <<"{\\f1\\fswiss\\fcharset" << theTranslator->trRTFCharSet();
|
|
Packit |
1c1d7e |
t <<"\\fprq2{\\*\\panose 020b0604020202020204}Arial;}\n";
|
|
Packit |
1c1d7e |
t <<"{\\f2\\fmodern\\fcharset" << theTranslator->trRTFCharSet();
|
|
Packit |
1c1d7e |
t <<"\\fprq1{\\*\\panose 02070309020205020404}Courier New;}\n";
|
|
Packit |
1c1d7e |
t <<"{\\f3\\froman\\fcharset2\\fprq2{\\*\\panose 05050102010706020507}Symbol;}\n";
|
|
Packit |
1c1d7e |
t <<"}\n";
|
|
Packit |
1c1d7e |
DBG_RTF(t <<"{\\comment begin colors}\n")
|
|
Packit |
1c1d7e |
t <<"{\\colortbl;";
|
|
Packit |
1c1d7e |
t <<"\\red0\\green0\\blue0;";
|
|
Packit |
1c1d7e |
t <<"\\red0\\green0\\blue255;";
|
|
Packit |
1c1d7e |
t <<"\\red0\\green255\\blue255;";
|
|
Packit |
1c1d7e |
t <<"\\red0\\green255\\blue0;";
|
|
Packit |
1c1d7e |
t <<"\\red255\\green0\\blue255;";
|
|
Packit |
1c1d7e |
t <<"\\red255\\green0\\blue0;";
|
|
Packit |
1c1d7e |
t <<"\\red255\\green255\\blue0;";
|
|
Packit |
1c1d7e |
t <<"\\red255\\green255\\blue255;";
|
|
Packit |
1c1d7e |
t <<"\\red0\\green0\\blue128;";
|
|
Packit |
1c1d7e |
t <<"\\red0\\green128\\blue128;";
|
|
Packit |
1c1d7e |
t <<"\\red0\\green128\\blue0;";
|
|
Packit |
1c1d7e |
t <<"\\red128\\green0\\blue128;";
|
|
Packit |
1c1d7e |
t <<"\\red128\\green0\\blue0;";
|
|
Packit |
1c1d7e |
t <<"\\red128\\green128\\blue0;";
|
|
Packit |
1c1d7e |
t <<"\\red128\\green128\\blue128;";
|
|
Packit |
1c1d7e |
t <<"\\red192\\green192\\blue192;}" << endl;
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
DBG_RTF(t <<"{\\comment Beginning style list}\n")
|
|
Packit |
1c1d7e |
t <<"{\\stylesheet\n";
|
|
Packit |
1c1d7e |
t <<"{\\widctlpar\\adjustright \\fs20\\cgrid \\snext0 Normal;}\n";
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
// set the paper dimensions according to PAPER_TYPE
|
|
Packit |
1c1d7e |
QCString paperName = Config_getEnum(PAPER_TYPE);
|
|
Packit |
1c1d7e |
t << "{";
|
|
Packit |
1c1d7e |
if (paperName=="a4")
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "\\paperw11900\\paperh16840"; // width & height values are inches * 1440
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
else if (paperName=="letter")
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "\\paperw12240\\paperh15840";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
else if (paperName=="legal")
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "\\paperw12240\\paperh20160";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
else if (paperName=="executive")
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "\\paperw10440\\paperh15120";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
t << "\\margl1800\\margr1800\\margt1440\\margb1440\\gutter0\\ltrsect}\n";
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
// sort styles ascending by \s-number via an intermediate QArray
|
|
Packit |
1c1d7e |
QArray<const StyleData*> array(128);
|
|
Packit |
1c1d7e |
array.fill(0);
|
|
Packit |
1c1d7e |
QDictIterator<StyleData> iter(rtf_Style);
|
|
Packit |
1c1d7e |
const StyleData* style;
|
|
Packit |
1c1d7e |
for(; (style = iter.current()); ++iter)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
unsigned index = style->index;
|
|
Packit |
1c1d7e |
unsigned size = array.size();
|
|
Packit |
1c1d7e |
if (index >= size)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
// +1 to add at least one element, then align up to multiple of 8
|
|
Packit |
1c1d7e |
array.resize((index + 1 + 7) & ~7);
|
|
Packit |
1c1d7e |
array.fill(0, size);
|
|
Packit |
1c1d7e |
ASSERT(index < array.size());
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
if (array.at(index) != 0)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
QCString key(iter.currentKey());
|
|
Packit |
1c1d7e |
msg("Style '%s' redefines \\s%d.\n", key.data(), index);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
array.at(index) = style;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
// write array elements
|
|
Packit |
1c1d7e |
unsigned size = array.size();
|
|
Packit |
1c1d7e |
for(unsigned i = 0; i < size; i++)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
const StyleData* style = array.at(i);
|
|
Packit |
1c1d7e |
if (style != 0)
|
|
Packit |
1c1d7e |
t <<"{" << style->reference << style->definition << ";}\n";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
t <<"}" << endl;
|
|
Packit |
1c1d7e |
// this comment is needed for postprocessing!
|
|
Packit |
1c1d7e |
t <<"{\\comment begin body}" << endl;
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void RTFGenerator::beginRTFChapter()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t <<"\n";
|
|
Packit |
1c1d7e |
DBG_RTF(t << "{\\comment BeginRTFChapter}\n")
|
|
Packit |
1c1d7e |
t << rtf_Style_Reset;
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
// if we are compact, no extra page breaks...
|
|
Packit |
1c1d7e |
if (Config_getBool(COMPACT_RTF))
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
// t <<"\\sect\\sectd\\sbknone\n";
|
|
Packit |
1c1d7e |
t <<"\\sect\\sbknone\n";
|
|
Packit |
1c1d7e |
rtfwriteRuler_thick();
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
else
|
|
Packit |
1c1d7e |
t <<"\\sect\\sbkpage\n";
|
|
Packit |
1c1d7e |
//t <<"\\sect\\sectd\\sbkpage\n";
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
t << rtf_Style["Heading1"]->reference << "\n";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void RTFGenerator::beginRTFSection()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t <<"\n";
|
|
Packit |
1c1d7e |
DBG_RTF(t << "{\\comment BeginRTFSection}\n")
|
|
Packit |
1c1d7e |
t << rtf_Style_Reset;
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
// if we are compact, no extra page breaks...
|
|
Packit |
1c1d7e |
if (Config_getBool(COMPACT_RTF))
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
// t <<"\\sect\\sectd\\sbknone\n";
|
|
Packit |
1c1d7e |
t <<"\\sect\\sbknone\n";
|
|
Packit |
1c1d7e |
rtfwriteRuler_emboss();
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
else
|
|
Packit |
1c1d7e |
t <<"\\sect\\sbkpage\n";
|
|
Packit |
1c1d7e |
//t <<"\\sect\\sectd\\sbkpage\n";
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
t << rtf_Style["Heading2"]->reference << "\n";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void RTFGenerator::startFile(const char *name,const char *,const char *)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
//setEncoding(QCString().sprintf("CP%s",theTranslator->trRTFansicp()));
|
|
Packit |
1c1d7e |
QCString fileName=name;
|
|
Packit |
1c1d7e |
relPath = relativePathToRoot(fileName);
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
if (fileName.right(4)!=".rtf" ) fileName+=".rtf";
|
|
Packit |
1c1d7e |
startPlainFile(fileName);
|
|
Packit |
1c1d7e |
beginRTFDocument();
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void RTFGenerator::endFile()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
DBG_RTF(t << "{\\comment endFile}\n")
|
|
Packit |
1c1d7e |
t << "}";
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
endPlainFile();
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void RTFGenerator::startProjectNumber()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
DBG_RTF(t <<"{\\comment startProjectNumber }" << endl)
|
|
Packit |
1c1d7e |
t << " ";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void RTFGenerator::endProjectNumber()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
DBG_RTF(t <<"{\\comment endProjectNumber }" << endl)
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void RTFGenerator::startIndexSection(IndexSections is)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
//QCString paperName;
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
m_listLevel = 0;
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
switch (is)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
case isTitlePageStart:
|
|
Packit |
1c1d7e |
// basic RTFstart
|
|
Packit |
1c1d7e |
// get readyfor author etc
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
t << "{\\info \n";
|
|
Packit |
1c1d7e |
t << "{\\title {\\comment ";
|
|
Packit |
1c1d7e |
break;
|
|
Packit |
1c1d7e |
case isTitlePageAuthor:
|
|
Packit |
1c1d7e |
t << "}\n";
|
|
Packit |
1c1d7e |
if (rtf_subject) t << "{\\subject " << rtf_subject << "}\n";
|
|
Packit |
1c1d7e |
if (rtf_comments) t << "{\\comment " << rtf_comments << "}\n";
|
|
Packit |
1c1d7e |
if (rtf_company) t << "{\\company " << rtf_company << "}\n";
|
|
Packit |
1c1d7e |
if (rtf_author) t << "{\\author " << rtf_author << "}\n";
|
|
Packit |
1c1d7e |
if (rtf_manager) t << "{\\manager " << rtf_manager << "}\n";
|
|
Packit |
1c1d7e |
if (rtf_documentType) t << "{\\category " << rtf_documentType << "}\n";
|
|
Packit |
1c1d7e |
if (rtf_keywords) t << "{\\keywords " << rtf_keywords << "}\n";
|
|
Packit |
1c1d7e |
t << "{\\comment ";
|
|
Packit |
1c1d7e |
break;
|
|
Packit |
1c1d7e |
case isMainPage:
|
|
Packit |
1c1d7e |
//Introduction
|
|
Packit |
1c1d7e |
beginRTFChapter();
|
|
Packit |
1c1d7e |
break;
|
|
Packit |
1c1d7e |
//case isPackageIndex:
|
|
Packit |
1c1d7e |
// //Package Index
|
|
Packit |
1c1d7e |
// beginRTFChapter();
|
|
Packit |
1c1d7e |
// break;
|
|
Packit |
1c1d7e |
case isModuleIndex:
|
|
Packit |
1c1d7e |
//Module Index
|
|
Packit |
1c1d7e |
beginRTFChapter();
|
|
Packit |
1c1d7e |
break;
|
|
Packit |
1c1d7e |
case isDirIndex:
|
|
Packit |
1c1d7e |
//Directory Index
|
|
Packit |
1c1d7e |
beginRTFChapter();
|
|
Packit |
1c1d7e |
break;
|
|
Packit |
1c1d7e |
case isNamespaceIndex:
|
|
Packit |
1c1d7e |
//Namespace Index
|
|
Packit |
1c1d7e |
beginRTFChapter();
|
|
Packit |
1c1d7e |
break;
|
|
Packit |
1c1d7e |
case isClassHierarchyIndex:
|
|
Packit |
1c1d7e |
//Hierarchical Index
|
|
Packit |
1c1d7e |
DBG_RTF(t << "{\\comment start classhierarchy}\n")
|
|
Packit |
1c1d7e |
beginRTFChapter();
|
|
Packit |
1c1d7e |
break;
|
|
Packit |
1c1d7e |
case isCompoundIndex:
|
|
Packit |
1c1d7e |
//Annotated Compound Index
|
|
Packit |
1c1d7e |
beginRTFChapter();
|
|
Packit |
1c1d7e |
break;
|
|
Packit |
1c1d7e |
case isFileIndex:
|
|
Packit |
1c1d7e |
//Annotated File Index
|
|
Packit |
1c1d7e |
beginRTFChapter();
|
|
Packit |
1c1d7e |
break;
|
|
Packit |
1c1d7e |
case isPageIndex:
|
|
Packit |
1c1d7e |
//Related Page Index
|
|
Packit |
1c1d7e |
beginRTFChapter();
|
|
Packit |
1c1d7e |
break;
|
|
Packit |
1c1d7e |
case isModuleDocumentation:
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
//Module Documentation
|
|
Packit |
1c1d7e |
GroupSDict::Iterator gli(*Doxygen::groupSDict);
|
|
Packit |
1c1d7e |
GroupDef *gd;
|
|
Packit |
1c1d7e |
bool found=FALSE;
|
|
Packit |
1c1d7e |
for (gli.toFirst();(gd=gli.current()) && !found;++gli)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (!gd->isReference())
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
beginRTFChapter();
|
|
Packit |
1c1d7e |
found=TRUE;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
break;
|
|
Packit |
1c1d7e |
case isDirDocumentation:
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
//Directory Documentation
|
|
Packit |
1c1d7e |
SDict<DirDef>::Iterator dli(*Doxygen::directories);
|
|
Packit |
1c1d7e |
DirDef *dd;
|
|
Packit |
1c1d7e |
bool found=FALSE;
|
|
Packit |
1c1d7e |
for (dli.toFirst();(dd=dli.current()) && !found;++dli)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (dd->isLinkableInProject())
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
beginRTFChapter();
|
|
Packit |
1c1d7e |
found=TRUE;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
break;
|
|
Packit |
1c1d7e |
case isNamespaceDocumentation:
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
// Namespace Documentation
|
|
Packit |
1c1d7e |
NamespaceSDict::Iterator nli(*Doxygen::namespaceSDict);
|
|
Packit |
1c1d7e |
NamespaceDef *nd;
|
|
Packit |
1c1d7e |
bool found=FALSE;
|
|
Packit |
1c1d7e |
for (nli.toFirst();(nd=nli.current()) && !found;++nli)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (nd->isLinkableInProject())
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
beginRTFChapter();
|
|
Packit |
1c1d7e |
found=TRUE;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
break;
|
|
Packit |
1c1d7e |
case isClassDocumentation:
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
//Compound Documentation
|
|
Packit |
1c1d7e |
ClassSDict::Iterator cli(*Doxygen::classSDict);
|
|
Packit |
1c1d7e |
ClassDef *cd=0;
|
|
Packit |
1c1d7e |
bool found=FALSE;
|
|
Packit |
1c1d7e |
for (cli.toFirst();(cd=cli.current()) && !found;++cli)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (cd->isLinkableInProject() &&
|
|
Packit |
1c1d7e |
cd->templateMaster()==0 &&
|
|
Packit |
1c1d7e |
!cd->isEmbeddedInOuterScope()
|
|
Packit |
1c1d7e |
)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
beginRTFChapter();
|
|
Packit |
1c1d7e |
found=TRUE;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
break;
|
|
Packit |
1c1d7e |
case isFileDocumentation:
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
//File Documentation
|
|
Packit |
1c1d7e |
bool isFirst=TRUE;
|
|
Packit |
1c1d7e |
FileNameListIterator fnli(*Doxygen::inputNameList);
|
|
Packit |
1c1d7e |
FileName *fn;
|
|
Packit |
1c1d7e |
for (fnli.toFirst();(fn=fnli.current());++fnli)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
FileNameIterator fni(*fn);
|
|
Packit |
1c1d7e |
FileDef *fd;
|
|
Packit |
1c1d7e |
for (;(fd=fni.current());++fni)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (fd->isLinkableInProject())
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (isFirst)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
beginRTFChapter();
|
|
Packit |
1c1d7e |
isFirst=FALSE;
|
|
Packit |
1c1d7e |
break;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
break;
|
|
Packit |
1c1d7e |
case isExampleDocumentation:
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
//Example Documentation
|
|
Packit |
1c1d7e |
beginRTFChapter();
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
break;
|
|
Packit |
1c1d7e |
case isPageDocumentation:
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
//Page Documentation
|
|
Packit |
1c1d7e |
beginRTFChapter();
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
break;
|
|
Packit |
1c1d7e |
case isPageDocumentation2:
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "{\\tc \\v ";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
break;
|
|
Packit |
1c1d7e |
case isEndIndex:
|
|
Packit |
1c1d7e |
break;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void RTFGenerator::endIndexSection(IndexSections is)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
bool fortranOpt = Config_getBool(OPTIMIZE_FOR_FORTRAN);
|
|
Packit |
1c1d7e |
bool vhdlOpt = Config_getBool(OPTIMIZE_OUTPUT_VHDL);
|
|
Packit |
1c1d7e |
static bool sourceBrowser = Config_getBool(SOURCE_BROWSER);
|
|
Packit |
1c1d7e |
static QCString projectName = Config_getString(PROJECT_NAME);
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
switch (is)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
case isTitlePageStart:
|
|
Packit |
1c1d7e |
if (rtf_title)
|
|
Packit |
1c1d7e |
// User has overridden document title in extensions file
|
|
Packit |
1c1d7e |
t << "}" << rtf_title;
|
|
Packit |
1c1d7e |
else
|
|
Packit |
1c1d7e |
t << "}" << projectName;
|
|
Packit |
1c1d7e |
break;
|
|
Packit |
1c1d7e |
case isTitlePageAuthor:
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "Doxgyen. }\n";
|
|
Packit |
1c1d7e |
t << "{\\creatim " << dateToRTFDateString() << "}\n}";
|
|
Packit |
1c1d7e |
DBG_RTF(t << "{\\comment end of infoblock}\n");
|
|
Packit |
1c1d7e |
// setup for this section
|
|
Packit |
1c1d7e |
t << rtf_Style_Reset <<"\n";
|
|
Packit |
1c1d7e |
t <<"\\sectd\\pgnlcrm\n";
|
|
Packit |
1c1d7e |
t <<"{\\footer "<<rtf_Style["Footer"]->reference << "{\\chpgn}}\n";
|
|
Packit |
1c1d7e |
// the title entry
|
|
Packit |
1c1d7e |
DBG_RTF(t << "{\\comment begin title page}\n")
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
t << rtf_Style_Reset << rtf_Style["SubTitle"]->reference << endl; // set to title style
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
t << "\\vertalc\\qc\\par\\par\\par\\par\\par\\par\\par\n";
|
|
Packit |
1c1d7e |
if (rtf_logoFilename)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "{\\field\\flddirty {\\*\\fldinst INCLUDEPICTURE \"" << rtf_logoFilename;
|
|
Packit |
1c1d7e |
t << "\" \\\\d \\\\*MERGEFORMAT} {\\fldrslt IMAGE }}\\par\\par\n";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
if (rtf_company)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << rtf_company << "\\par\\par\n";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
t << rtf_Style_Reset << rtf_Style["Title"]->reference << endl; // set to title style
|
|
Packit |
1c1d7e |
if (rtf_title)
|
|
Packit |
1c1d7e |
// User has overridden document title in extensions file
|
|
Packit |
1c1d7e |
t << "{\\field\\fldedit {\\*\\fldinst " << rtf_title << " \\\\*MERGEFORMAT}{\\fldrslt " << rtf_title << "}}\\par" << endl;
|
|
Packit |
1c1d7e |
else
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
DocText *root = validatingParseText(projectName);
|
|
Packit |
1c1d7e |
t << "{\\field\\fldedit {\\*\\fldinst TITLE \\\\*MERGEFORMAT}{\\fldrslt ";
|
|
Packit |
1c1d7e |
writeDoc(root,0,0);
|
|
Packit |
1c1d7e |
t << "}}\\par" << endl;
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
t << rtf_Style_Reset << rtf_Style["SubTitle"]->reference << endl; // set to title style
|
|
Packit |
1c1d7e |
t << "\\par\n";
|
|
Packit |
1c1d7e |
if (rtf_documentType)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << rtf_documentType << "\\par\n";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
if (rtf_documentId)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << rtf_documentId << "\\par\n";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
t << "\\par\\par\\par\\par\\par\\par\\par\\par\\par\\par\\par\\par\n";
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
t << rtf_Style_Reset << rtf_Style["SubTitle"]->reference << endl; // set to subtitle style
|
|
Packit |
1c1d7e |
if (rtf_author)
|
|
Packit |
1c1d7e |
t << "{\\field\\fldedit {\\*\\fldinst AUTHOR \\\\*MERGEFORMAT}{\\fldrslt "<< rtf_author << " }}\\par" << endl;
|
|
Packit |
1c1d7e |
else
|
|
Packit |
1c1d7e |
t << "{\\field\\fldedit {\\*\\fldinst AUTHOR \\\\*MERGEFORMAT}{\\fldrslt AUTHOR}}\\par" << endl;
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
t << theTranslator->trVersion() << " " << Config_getString(PROJECT_NUMBER) << "\\par";
|
|
Packit |
1c1d7e |
t << "{\\field\\fldedit {\\*\\fldinst CREATEDATE \\\\*MERGEFORMAT}"
|
|
Packit |
1c1d7e |
"{\\fldrslt "<< dateToString(FALSE) << " }}\\par"<
|
|
Packit |
1c1d7e |
t << "\\page\\page";
|
|
Packit |
1c1d7e |
DBG_RTF(t << "{\\comment End title page}" << endl)
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
// table of contents section
|
|
Packit |
1c1d7e |
DBG_RTF(t << "{\\comment Table of contents}\n")
|
|
Packit |
1c1d7e |
t << "\\vertalt\n";
|
|
Packit |
1c1d7e |
t << rtf_Style_Reset << endl;
|
|
Packit |
1c1d7e |
t << rtf_Style["Heading1"]->reference;
|
|
Packit |
1c1d7e |
t << theTranslator->trRTFTableOfContents() << "\\par"<< endl;
|
|
Packit |
1c1d7e |
t << rtf_Style_Reset << "\\par" << endl;
|
|
Packit |
1c1d7e |
t << "{\\field\\fldedit {\\*\\fldinst TOC \\\\f \\\\*MERGEFORMAT}{\\fldrslt Table of contents}}\\par\n";
|
|
Packit |
1c1d7e |
t << rtf_Style_Reset << endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
break;
|
|
Packit |
1c1d7e |
case isMainPage:
|
|
Packit |
1c1d7e |
t << "\\par " << rtf_Style_Reset << endl;
|
|
Packit |
1c1d7e |
if (!Doxygen::mainPage || Doxygen::mainPage->title().isEmpty())
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "{\\tc \\v " << theTranslator->trMainPage() << "}"<< endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
else
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "{\\tc \\v " << substitute(Doxygen::mainPage->title(),"%","") << "}"<< endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
t << "{\\field\\fldedit{\\*\\fldinst INCLUDETEXT \"";
|
|
Packit |
1c1d7e |
//if (Config_getBool(GENERATE_TREEVIEW)) t << "main"; else t << "index";
|
|
Packit |
1c1d7e |
t << "index";
|
|
Packit |
1c1d7e |
t << ".rtf\" \\\\*MERGEFORMAT}{\\fldrslt includedstuff}}\n";
|
|
Packit |
1c1d7e |
break;
|
|
Packit |
1c1d7e |
//case isPackageIndex:
|
|
Packit |
1c1d7e |
// t << "\\par " << rtf_Style_Reset << endl;
|
|
Packit |
1c1d7e |
// t << "{\\tc \\v " << theTranslator->trPackageList() << "}"<< endl;
|
|
Packit |
1c1d7e |
// t << "{\\field\\fldedit{\\*\\fldinst INCLUDETEXT \"packages.rtf\" \\\\*MERGEFORMAT}{\\fldrslt includedstuff}}\n";
|
|
Packit |
1c1d7e |
// break;
|
|
Packit |
1c1d7e |
case isModuleIndex:
|
|
Packit |
1c1d7e |
t << "\\par " << rtf_Style_Reset << endl;
|
|
Packit |
1c1d7e |
t << "{\\tc \\v " << theTranslator->trModuleIndex() << "}"<< endl;
|
|
Packit |
1c1d7e |
t << "{\\field\\fldedit{\\*\\fldinst INCLUDETEXT \"modules.rtf\" \\\\*MERGEFORMAT}{\\fldrslt includedstuff}}\n";
|
|
Packit |
1c1d7e |
break;
|
|
Packit |
1c1d7e |
case isDirIndex:
|
|
Packit |
1c1d7e |
t << "\\par " << rtf_Style_Reset << endl;
|
|
Packit |
1c1d7e |
t << "{\\tc \\v " << theTranslator->trDirIndex() << "}"<< endl;
|
|
Packit |
1c1d7e |
t << "{\\field\\fldedit{\\*\\fldinst INCLUDETEXT \"dirs.rtf\" \\\\*MERGEFORMAT}{\\fldrslt includedstuff}}\n";
|
|
Packit |
1c1d7e |
break;
|
|
Packit |
1c1d7e |
case isNamespaceIndex:
|
|
Packit |
1c1d7e |
t << "\\par " << rtf_Style_Reset << endl;
|
|
Packit |
1c1d7e |
if (fortranOpt)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "{\\tc \\v " << theTranslator->trModulesIndex() << "}" << endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
else
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "{\\tc \\v " << theTranslator->trNamespaceIndex() << "}" << endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
t << "{\\field\\fldedit{\\*\\fldinst INCLUDETEXT \"namespaces.rtf\" \\\\*MERGEFORMAT}{\\fldrslt includedstuff}}\n";
|
|
Packit |
1c1d7e |
break;
|
|
Packit |
1c1d7e |
case isClassHierarchyIndex:
|
|
Packit |
1c1d7e |
t << "\\par " << rtf_Style_Reset << endl;
|
|
Packit |
1c1d7e |
t << "{\\tc \\v " << theTranslator->trHierarchicalIndex() << "}"<< endl;
|
|
Packit |
1c1d7e |
t << "{\\field\\fldedit{\\*\\fldinst INCLUDETEXT \"hierarchy.rtf\" \\\\*MERGEFORMAT}{\\fldrslt includedstuff}}\n";
|
|
Packit |
1c1d7e |
break;
|
|
Packit |
1c1d7e |
case isCompoundIndex:
|
|
Packit |
1c1d7e |
t << "\\par " << rtf_Style_Reset << endl;
|
|
Packit |
1c1d7e |
if (fortranOpt)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "{\\tc \\v " << theTranslator->trCompoundIndexFortran() << "}"<< endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
else if (vhdlOpt)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "{\\tc \\v " << VhdlDocGen::trDesignUnitIndex() << "}"<< endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
else
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "{\\tc \\v " << theTranslator->trCompoundIndex() << "}"<< endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
t << "{\\field\\fldedit{\\*\\fldinst INCLUDETEXT \"annotated.rtf\" \\\\*MERGEFORMAT}{\\fldrslt includedstuff}}\n";
|
|
Packit |
1c1d7e |
break;
|
|
Packit |
1c1d7e |
case isFileIndex:
|
|
Packit |
1c1d7e |
t << "\\par " << rtf_Style_Reset << endl;
|
|
Packit |
1c1d7e |
t << "{\\tc \\v " << theTranslator->trFileIndex() << "}"<< endl;
|
|
Packit |
1c1d7e |
t << "{\\field\\fldedit{\\*\\fldinst INCLUDETEXT \"files.rtf\" \\\\*MERGEFORMAT}{\\fldrslt includedstuff}}\n";
|
|
Packit |
1c1d7e |
break;
|
|
Packit |
1c1d7e |
case isPageIndex:
|
|
Packit |
1c1d7e |
t << "\\par " << rtf_Style_Reset << endl;
|
|
Packit |
1c1d7e |
t << "{\\tc \\v " << theTranslator->trPageIndex() << "}"<< endl;
|
|
Packit |
1c1d7e |
t << "{\\field\\fldedit{\\*\\fldinst INCLUDETEXT \"pages.rtf\" \\\\*MERGEFORMAT}{\\fldrslt includedstuff}}\n";
|
|
Packit |
1c1d7e |
break;
|
|
Packit |
1c1d7e |
case isModuleDocumentation:
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
GroupSDict::Iterator gli(*Doxygen::groupSDict);
|
|
Packit |
1c1d7e |
GroupDef *gd;
|
|
Packit |
1c1d7e |
t << "{\\tc \\v " << theTranslator->trModuleDocumentation() << "}"<< endl;
|
|
Packit |
1c1d7e |
for (gli.toFirst();(gd=gli.current());++gli)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (!gd->isReference())
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "\\par " << rtf_Style_Reset << endl;
|
|
Packit |
1c1d7e |
t << "{\\field\\fldedit{\\*\\fldinst INCLUDETEXT \"";
|
|
Packit |
1c1d7e |
t << gd->getOutputFileBase();
|
|
Packit |
1c1d7e |
t << ".rtf\" \\\\*MERGEFORMAT}{\\fldrslt includedstuff}}\n";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
break;
|
|
Packit |
1c1d7e |
case isDirDocumentation:
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
SDict<DirDef>::Iterator dli(*Doxygen::directories);
|
|
Packit |
1c1d7e |
DirDef *dd;
|
|
Packit |
1c1d7e |
t << "{\\tc \\v " << theTranslator->trDirDocumentation() << "}"<< endl;
|
|
Packit |
1c1d7e |
for (dli.toFirst();(dd=dli.current());++dli)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (dd->isLinkableInProject())
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "\\par " << rtf_Style_Reset << endl;
|
|
Packit |
1c1d7e |
t << "{\\field\\fldedit{\\*\\fldinst INCLUDETEXT \"";
|
|
Packit |
1c1d7e |
t << dd->getOutputFileBase();
|
|
Packit |
1c1d7e |
t << ".rtf\" \\\\*MERGEFORMAT}{\\fldrslt includedstuff}}\n";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
break;
|
|
Packit |
1c1d7e |
case isNamespaceDocumentation:
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
NamespaceSDict::Iterator nli(*Doxygen::namespaceSDict);
|
|
Packit |
1c1d7e |
NamespaceDef *nd;
|
|
Packit |
1c1d7e |
bool found=FALSE;
|
|
Packit |
1c1d7e |
for (nli.toFirst();(nd=nli.current()) && !found;++nli)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (nd->isLinkableInProject())
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "\\par " << rtf_Style_Reset << endl;
|
|
Packit |
1c1d7e |
t << "{\\field\\fldedit{\\*\\fldinst INCLUDETEXT \"";
|
|
Packit |
1c1d7e |
t << nd->getOutputFileBase();
|
|
Packit |
1c1d7e |
t << ".rtf\" \\\\*MERGEFORMAT}{\\fldrslt includedstuff}}\n";
|
|
Packit |
1c1d7e |
found=TRUE;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
while ((nd=nli.current()))
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (nd->isLinkableInProject())
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "\\par " << rtf_Style_Reset << endl;
|
|
Packit |
1c1d7e |
beginRTFSection();
|
|
Packit |
1c1d7e |
t << "{\\field\\fldedit{\\*\\fldinst INCLUDETEXT \"";
|
|
Packit |
1c1d7e |
t << nd->getOutputFileBase();
|
|
Packit |
1c1d7e |
t << ".rtf\" \\\\*MERGEFORMAT}{\\fldrslt includedstuff}}\n";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
++nli;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
break;
|
|
Packit |
1c1d7e |
case isClassDocumentation:
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
ClassSDict::Iterator cli(*Doxygen::classSDict);
|
|
Packit |
1c1d7e |
ClassDef *cd=0;
|
|
Packit |
1c1d7e |
bool found=FALSE;
|
|
Packit |
1c1d7e |
if (fortranOpt)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "{\\tc \\v " << theTranslator->trTypeDocumentation() << "}"<< endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
else
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "{\\tc \\v " << theTranslator->trClassDocumentation() << "}"<< endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
for (cli.toFirst();(cd=cli.current()) && !found;++cli)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (cd->isLinkableInProject() &&
|
|
Packit |
1c1d7e |
cd->templateMaster()==0 &&
|
|
Packit |
1c1d7e |
!cd->isEmbeddedInOuterScope()
|
|
Packit |
1c1d7e |
)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "\\par " << rtf_Style_Reset << endl;
|
|
Packit |
1c1d7e |
t << "{\\field\\fldedit{\\*\\fldinst INCLUDETEXT \"";
|
|
Packit |
1c1d7e |
t << cd->getOutputFileBase();
|
|
Packit |
1c1d7e |
t << ".rtf\" \\\\*MERGEFORMAT}{\\fldrslt includedstuff}}\n";
|
|
Packit |
1c1d7e |
found=TRUE;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
for (;(cd=cli.current());++cli)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (cd->isLinkableInProject() &&
|
|
Packit |
1c1d7e |
cd->templateMaster()==0 &&
|
|
Packit |
1c1d7e |
!cd->isEmbeddedInOuterScope()
|
|
Packit |
1c1d7e |
)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "\\par " << rtf_Style_Reset << endl;
|
|
Packit |
1c1d7e |
beginRTFSection();
|
|
Packit |
1c1d7e |
t << "{\\field\\fldedit{\\*\\fldinst INCLUDETEXT \"";
|
|
Packit |
1c1d7e |
t << cd->getOutputFileBase();
|
|
Packit |
1c1d7e |
t << ".rtf\" \\\\*MERGEFORMAT}{\\fldrslt includedstuff}}\n";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
break;
|
|
Packit |
1c1d7e |
case isFileDocumentation:
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
bool isFirst=TRUE;
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
t << "{\\tc \\v " << theTranslator->trFileDocumentation() << "}"<< endl;
|
|
Packit |
1c1d7e |
FileNameListIterator fnli(*Doxygen::inputNameList);
|
|
Packit |
1c1d7e |
FileName *fn;
|
|
Packit |
1c1d7e |
for (fnli.toFirst();(fn=fnli.current());++fnli)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
FileNameIterator fni(*fn);
|
|
Packit |
1c1d7e |
FileDef *fd;
|
|
Packit |
1c1d7e |
for (;(fd=fni.current());++fni)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (fd->isLinkableInProject())
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (isFirst)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "\\par " << rtf_Style_Reset << endl;
|
|
Packit |
1c1d7e |
t << "{\\field\\fldedit{\\*\\fldinst INCLUDETEXT \"";
|
|
Packit |
1c1d7e |
t << fd->getOutputFileBase();
|
|
Packit |
1c1d7e |
t << ".rtf\" \\\\*MERGEFORMAT}{\\fldrslt includedstuff}}\n";
|
|
Packit |
1c1d7e |
if (sourceBrowser && m_prettyCode && fd->generateSourceFile())
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "\\par " << rtf_Style_Reset << endl;
|
|
Packit |
1c1d7e |
t << "{\\field\\fldedit{\\*\\fldinst INCLUDETEXT \"" << fd->getSourceFileBase() << ".rtf\" \\\\*MERGEFORMAT}{\\fldrslt includedstuff}}\n";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
isFirst=FALSE;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
else
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "\\par " << rtf_Style_Reset << endl;
|
|
Packit |
1c1d7e |
beginRTFSection();
|
|
Packit |
1c1d7e |
t << "{\\field\\fldedit{\\*\\fldinst INCLUDETEXT \"";
|
|
Packit |
1c1d7e |
t << fd->getOutputFileBase();
|
|
Packit |
1c1d7e |
t << ".rtf\" \\\\*MERGEFORMAT}{\\fldrslt includedstuff}}\n";
|
|
Packit |
1c1d7e |
if (sourceBrowser && m_prettyCode && fd->generateSourceFile())
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "\\par " << rtf_Style_Reset << endl;
|
|
Packit |
1c1d7e |
t << "{\\field\\fldedit{\\*\\fldinst INCLUDETEXT \"" << fd->getSourceFileBase() << ".rtf\" \\\\*MERGEFORMAT}{\\fldrslt includedstuff}}\n";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
break;
|
|
Packit |
1c1d7e |
case isExampleDocumentation:
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
//t << "}\n";
|
|
Packit |
1c1d7e |
t << "{\\tc \\v " << theTranslator->trExampleDocumentation() << "}"<< endl;
|
|
Packit |
1c1d7e |
PageSDict::Iterator pdi(*Doxygen::exampleSDict);
|
|
Packit |
1c1d7e |
PageDef *pd=pdi.toFirst();
|
|
Packit |
1c1d7e |
if (pd)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "\\par " << rtf_Style_Reset << endl;
|
|
Packit |
1c1d7e |
t << "{\\field\\fldedit{\\*\\fldinst INCLUDETEXT \"";
|
|
Packit |
1c1d7e |
t << pd->getOutputFileBase();
|
|
Packit |
1c1d7e |
t << ".rtf\" \\\\*MERGEFORMAT}{\\fldrslt includedstuff}}\n";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
for (++pdi;(pd=pdi.current());++pdi)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "\\par " << rtf_Style_Reset << endl;
|
|
Packit |
1c1d7e |
beginRTFSection();
|
|
Packit |
1c1d7e |
t << "{\\field\\fldedit{\\*\\fldinst INCLUDETEXT \"";
|
|
Packit |
1c1d7e |
t << pd->getOutputFileBase();
|
|
Packit |
1c1d7e |
t << ".rtf\" \\\\*MERGEFORMAT}{\\fldrslt includedstuff}}\n";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
break;
|
|
Packit |
1c1d7e |
case isPageDocumentation:
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
//#error "fix me in the same way as the latex index..."
|
|
Packit |
1c1d7e |
//t << "{\\tc \\v " << theTranslator->trPageDocumentation() << "}"<< endl;
|
|
Packit |
1c1d7e |
//t << "}"<< endl;
|
|
Packit |
1c1d7e |
//PageSDict::Iterator pdi(*Doxygen::pageSDict);
|
|
Packit |
1c1d7e |
//PageDef *pd=pdi.toFirst();
|
|
Packit |
1c1d7e |
//bool first=TRUE;
|
|
Packit |
1c1d7e |
//for (pdi.toFirst();(pd=pdi.current());++pdi)
|
|
Packit |
1c1d7e |
//{
|
|
Packit |
1c1d7e |
// if (!pd->getGroupDef() && !pd->isReference())
|
|
Packit |
1c1d7e |
// {
|
|
Packit |
1c1d7e |
// if (first) t << "\\par " << rtf_Style_Reset << endl;
|
|
Packit |
1c1d7e |
// t << "{\\field\\fldedit{\\*\\fldinst INCLUDETEXT \"";
|
|
Packit |
1c1d7e |
// t << pd->getOutputFileBase();
|
|
Packit |
1c1d7e |
// t << ".rtf\" \\\\*MERGEFORMAT}{\\fldrslt includedstuff}}\n";
|
|
Packit |
1c1d7e |
// first=FALSE;
|
|
Packit |
1c1d7e |
// }
|
|
Packit |
1c1d7e |
//}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
break;
|
|
Packit |
1c1d7e |
case isPageDocumentation2:
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "}";
|
|
Packit |
1c1d7e |
t << "\\par " << rtf_Style_Reset << endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
break;
|
|
Packit |
1c1d7e |
case isEndIndex:
|
|
Packit |
1c1d7e |
beginRTFChapter();
|
|
Packit |
1c1d7e |
t << rtf_Style["Heading1"]->reference;
|
|
Packit |
1c1d7e |
t << theTranslator->trRTFGeneralIndex() << "\\par "<< endl;
|
|
Packit |
1c1d7e |
t << rtf_Style_Reset << endl;
|
|
Packit |
1c1d7e |
t << "{\\tc \\v " << theTranslator->trRTFGeneralIndex() << "}" << endl;
|
|
Packit |
1c1d7e |
t << "{\\field\\fldedit {\\*\\fldinst INDEX \\\\c2 \\\\*MERGEFORMAT}{\\fldrslt INDEX}}\n";
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
break;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void RTFGenerator::writePageLink(const char *name,bool first)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (first) t << "\\par " << rtf_Style_Reset << endl;
|
|
Packit |
1c1d7e |
t << "{\\field\\fldedit{\\*\\fldinst INCLUDETEXT \"";
|
|
Packit |
1c1d7e |
t << name;
|
|
Packit |
1c1d7e |
t << ".rtf\" \\\\*MERGEFORMAT}{\\fldrslt includedstuff}}\n";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void RTFGenerator::lastIndexPage()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
DBG_RTF(t <<"{\\comment Beginning Body of RTF Document}\n")
|
|
Packit |
1c1d7e |
// end page and setup for rest of document
|
|
Packit |
1c1d7e |
t <<"\\sect \\sbkpage \\pgndec \\pgnrestart\n";
|
|
Packit |
1c1d7e |
t <<"\\sect \\sectd \\sbknone\n";
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
// set new footer with arabic numbers
|
|
Packit |
1c1d7e |
t <<"{\\footer "<< rtf_Style["Footer"]->reference << "{\\chpgn}}\n";
|
|
Packit |
1c1d7e |
//t << rtf_Style["Heading1"]->reference << "\n";
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void RTFGenerator::writeStyleInfo(int)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void RTFGenerator::lineBreak(const char *)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
DBG_RTF(t << "{\\comment (lineBreak)}" << endl)
|
|
Packit |
1c1d7e |
t << "\\par" << endl;
|
|
Packit |
1c1d7e |
m_omitParagraph = TRUE;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void RTFGenerator::writeString(const char *text)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << text;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void RTFGenerator::startIndexList()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
DBG_RTF(t << "{\\comment (startIndexList)}" << endl)
|
|
Packit |
1c1d7e |
t << "{" << endl;
|
|
Packit |
1c1d7e |
t << "\\par" << endl;
|
|
Packit |
1c1d7e |
incrementIndentLevel();
|
|
Packit |
1c1d7e |
t << rtf_Style_Reset << rtf_LCList_DepthStyle() << endl;
|
|
Packit |
1c1d7e |
m_omitParagraph = TRUE;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void RTFGenerator::endIndexList()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
DBG_RTF(t << "{\\comment (endIndexList)}" << endl)
|
|
Packit |
1c1d7e |
if (!m_omitParagraph)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "\\par";
|
|
Packit |
1c1d7e |
m_omitParagraph = TRUE;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
t << "}";
|
|
Packit |
1c1d7e |
decrementIndentLevel();
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
/*! start bullet list */
|
|
Packit |
1c1d7e |
void RTFGenerator::startItemList()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
newParagraph();
|
|
Packit |
1c1d7e |
DBG_RTF(t << "{\\comment (startItemList level=" << m_listLevel << ") }" << endl)
|
|
Packit |
1c1d7e |
t << "{";
|
|
Packit |
1c1d7e |
incrementIndentLevel();
|
|
Packit |
1c1d7e |
rtf_listItemInfo[m_listLevel].isEnum = FALSE;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
/*! end bullet list */
|
|
Packit |
1c1d7e |
void RTFGenerator::endItemList()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
newParagraph();
|
|
Packit |
1c1d7e |
DBG_RTF(t << "{\\comment (endItemList level=" << m_listLevel << ")}" << endl)
|
|
Packit |
1c1d7e |
t << "}";
|
|
Packit |
1c1d7e |
decrementIndentLevel();
|
|
Packit |
1c1d7e |
m_omitParagraph = TRUE;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
///*! start enumeration list */
|
|
Packit |
1c1d7e |
//void RTFGenerator::startEnumList() // starts an enumeration list
|
|
Packit |
1c1d7e |
//{
|
|
Packit |
1c1d7e |
// DBG_RTF(t << "{\\comment (startEnumList)}" << endl)
|
|
Packit |
1c1d7e |
// t << "{" << endl;
|
|
Packit |
1c1d7e |
// incrementIndentLevel();
|
|
Packit |
1c1d7e |
// rtf_listItemInfo[m_listLevel].isEnum = TRUE;
|
|
Packit |
1c1d7e |
// rtf_listItemInfo[m_listLevel].number = 1;
|
|
Packit |
1c1d7e |
//}
|
|
Packit |
1c1d7e |
//
|
|
Packit |
1c1d7e |
///*! end enumeration list */
|
|
Packit |
1c1d7e |
//void RTFGenerator::endEnumList()
|
|
Packit |
1c1d7e |
//{
|
|
Packit |
1c1d7e |
// newParagraph();
|
|
Packit |
1c1d7e |
// DBG_RTF(t << "{\\comment (endEnumList)}" << endl)
|
|
Packit |
1c1d7e |
// t << "}";
|
|
Packit |
1c1d7e |
// decrementIndentLevel();
|
|
Packit |
1c1d7e |
// m_omitParagraph = TRUE;
|
|
Packit |
1c1d7e |
//}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
/*! write bullet or enum item */
|
|
Packit |
1c1d7e |
void RTFGenerator::startItemListItem()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
DBG_RTF(t << "{\\comment (startItemListItem)}" << endl)
|
|
Packit |
1c1d7e |
newParagraph();
|
|
Packit |
1c1d7e |
t << rtf_Style_Reset;
|
|
Packit |
1c1d7e |
if (rtf_listItemInfo[m_listLevel].isEnum)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << rtf_EList_DepthStyle() << endl;
|
|
Packit |
1c1d7e |
t << rtf_listItemInfo[m_listLevel].number << ".\\tab ";
|
|
Packit |
1c1d7e |
rtf_listItemInfo[m_listLevel].number++;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
else
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << rtf_BList_DepthStyle() << endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
m_omitParagraph = TRUE;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void RTFGenerator::endItemListItem()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
DBG_RTF(t << "{\\comment (endItemListItem)}" << endl)
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void RTFGenerator::startIndexItem(const char *,const char *)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
DBG_RTF(t << "{\\comment (startIndexItem)}" << endl)
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
if (!m_omitParagraph)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "\\par" << endl;
|
|
Packit |
1c1d7e |
m_omitParagraph = TRUE;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void RTFGenerator::endIndexItem(const char *ref,const char *fn)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
DBG_RTF(t << "{\\comment (endIndexItem)}" << endl)
|
|
Packit |
1c1d7e |
if (!ref && fn)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "\\tab ";
|
|
Packit |
1c1d7e |
writeRTFReference(fn);
|
|
Packit |
1c1d7e |
t << endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
else
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
m_omitParagraph = TRUE;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
//void RTFGenerator::writeIndexFileItem(const char *,const char *text)
|
|
Packit |
1c1d7e |
//{
|
|
Packit |
1c1d7e |
// t << "\\item\\contentsline{section}{";
|
|
Packit |
1c1d7e |
// docify(text);
|
|
Packit |
1c1d7e |
// t << "}{\\pageref{" << text << "}}" << endl;
|
|
Packit |
1c1d7e |
//}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void RTFGenerator::startHtmlLink(const char *url)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
if (Config_getBool(RTF_HYPERLINKS))
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "{\\field {\\*\\fldinst { HYPERLINK \"";
|
|
Packit |
1c1d7e |
t << url;
|
|
Packit |
1c1d7e |
t << "\" }{}";
|
|
Packit |
1c1d7e |
t << "}{\\fldrslt {\\cs37\\ul\\cf2 ";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
else
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
startTypewriter();
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void RTFGenerator::endHtmlLink()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (Config_getBool(RTF_HYPERLINKS))
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "}}}" << endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
else
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
endTypewriter();
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
//void RTFGenerator::writeMailLink(const char *url)
|
|
Packit |
1c1d7e |
//{
|
|
Packit |
1c1d7e |
// startTypewriter();
|
|
Packit |
1c1d7e |
// docify(url);
|
|
Packit |
1c1d7e |
// endTypewriter();
|
|
Packit |
1c1d7e |
//}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void RTFGenerator::writeStartAnnoItem(const char *,const char *f,
|
|
Packit |
1c1d7e |
const char *path,const char *name)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
DBG_RTF(t << "{\\comment (writeStartAnnoItem)}" << endl)
|
|
Packit |
1c1d7e |
t << "{\\b ";
|
|
Packit |
1c1d7e |
if (path) docify(path);
|
|
Packit |
1c1d7e |
if (f && Config_getBool(RTF_HYPERLINKS))
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "{\\field {\\*\\fldinst { HYPERLINK \\\\l \"";
|
|
Packit |
1c1d7e |
t << rtfFormatBmkStr(f);
|
|
Packit |
1c1d7e |
t << "\" }{}";
|
|
Packit |
1c1d7e |
t << "}{\\fldrslt {\\cs37\\ul\\cf2 ";
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
docify(name);
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
t << "}}}" << endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
else
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
docify(name);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
t << "} ";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void RTFGenerator::writeEndAnnoItem(const char *name)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
DBG_RTF(t << "{\\comment (writeEndAnnoItem)}" << endl)
|
|
Packit |
1c1d7e |
if (name)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "\\tab ";
|
|
Packit |
1c1d7e |
writeRTFReference(name);
|
|
Packit |
1c1d7e |
t << endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
else
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
newParagraph();
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void RTFGenerator::startIndexKey()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
DBG_RTF(t << "{\\comment (startIndexKey)}" << endl)
|
|
Packit |
1c1d7e |
t << "{\\b ";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void RTFGenerator::endIndexKey()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
DBG_RTF(t << "{\\comment (endIndexKey)}" << endl)
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void RTFGenerator::startIndexValue(bool hasBrief)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
DBG_RTF(t << "{\\comment (startIndexValue)}" << endl)
|
|
Packit |
1c1d7e |
t << " ";
|
|
Packit |
1c1d7e |
if (hasBrief) t << "(";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void RTFGenerator::endIndexValue(const char *name,bool hasBrief)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
DBG_RTF(t << "{\\comment (endIndexValue)}" << endl)
|
|
Packit |
1c1d7e |
if (hasBrief) t << ")";
|
|
Packit |
1c1d7e |
t << "} ";
|
|
Packit |
1c1d7e |
if (name)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "\\tab ";
|
|
Packit |
1c1d7e |
writeRTFReference(name);
|
|
Packit |
1c1d7e |
t << endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
else
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
m_omitParagraph=FALSE;
|
|
Packit |
1c1d7e |
newParagraph();
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void RTFGenerator::startSubsection()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
//beginRTFSubSection();
|
|
Packit |
1c1d7e |
t <<"\n";
|
|
Packit |
1c1d7e |
DBG_RTF(t << "{\\comment Begin SubSection}\n")
|
|
Packit |
1c1d7e |
t << rtf_Style_Reset;
|
|
Packit |
1c1d7e |
t << rtf_Style["Heading3"]->reference << "\n";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void RTFGenerator::endSubsection()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
newParagraph();
|
|
Packit |
1c1d7e |
t << rtf_Style_Reset << endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void RTFGenerator::startSubsubsection()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
//beginRTFSubSubSection();
|
|
Packit |
1c1d7e |
t << "\n";
|
|
Packit |
1c1d7e |
DBG_RTF(t << "{\\comment Begin SubSubSection}\n")
|
|
Packit |
1c1d7e |
t << "{" << endl;
|
|
Packit |
1c1d7e |
t << rtf_Style_Reset << rtf_Style["Heading4"]->reference << "\n";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void RTFGenerator::endSubsubsection()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
newParagraph();
|
|
Packit |
1c1d7e |
t << "}" << endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
//void RTFGenerator::writeClassLink(const char *,const char *,
|
|
Packit |
1c1d7e |
// const char *,const char *name)
|
|
Packit |
1c1d7e |
//{
|
|
Packit |
1c1d7e |
// t << "{\\bf ";
|
|
Packit |
1c1d7e |
// docify(name);
|
|
Packit |
1c1d7e |
// t << "}";
|
|
Packit |
1c1d7e |
//}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
//void RTFGenerator::startTable(bool,int colNumbers)
|
|
Packit |
1c1d7e |
//{
|
|
Packit |
1c1d7e |
// DBG_RTF(t << "{\\comment startTable}\n";)
|
|
Packit |
1c1d7e |
// m_numCols=colNumbers;
|
|
Packit |
1c1d7e |
// t << "\\par\n";
|
|
Packit |
1c1d7e |
//}
|
|
Packit |
1c1d7e |
//
|
|
Packit |
1c1d7e |
//void RTFGenerator::endTable(bool hasCaption)
|
|
Packit |
1c1d7e |
//{
|
|
Packit |
1c1d7e |
// DBG_RTF(t << "{\\comment endTable}\n";)
|
|
Packit |
1c1d7e |
// if (!hasCaption)
|
|
Packit |
1c1d7e |
// t << "\n\\pard \\widctlpar\\intbl\\adjustright\n{\\row }\n";
|
|
Packit |
1c1d7e |
// t << "\\pard\n" << endl;
|
|
Packit |
1c1d7e |
//}
|
|
Packit |
1c1d7e |
//
|
|
Packit |
1c1d7e |
//void RTFGenerator::startCaption()
|
|
Packit |
1c1d7e |
//{
|
|
Packit |
1c1d7e |
// DBG_RTF(t << "{\\comment startCaption}\n";)
|
|
Packit |
1c1d7e |
// endTableRow();
|
|
Packit |
1c1d7e |
// t << "\\trowd \\trgaph108\\trleft-108\\trbrdrt\\brdrs\\brdrw10 \\trbrdrl\\brdrs\\brdrw10 \\trbrdrb\\brdrs\\brdrw10 \\trbrdrr\\brdrs\\brdrw10 \\trbrdrh\\brdrs\\brdrw10 \\trbrdrv\\brdrs\\brdrw10" << endl;
|
|
Packit |
1c1d7e |
// t << "\\clvertalt\\clbrdrt\\brdrs\\brdrw10 \\clbrdrl\\brdrs\\brdrw10 \\clbrdrb\\brdrs\\brdrw10 \\clbrdrr \\brdrs\\brdrw10 \\cltxlrtb \\cellx"<
|
|
Packit |
1c1d7e |
// nextTableColumn();
|
|
Packit |
1c1d7e |
//}
|
|
Packit |
1c1d7e |
//
|
|
Packit |
1c1d7e |
//void RTFGenerator::endCaption()
|
|
Packit |
1c1d7e |
//{
|
|
Packit |
1c1d7e |
// DBG_RTF(t << "{\\comment endCaption}\n";)
|
|
Packit |
1c1d7e |
// endTableColumn();
|
|
Packit |
1c1d7e |
// endTableRow();
|
|
Packit |
1c1d7e |
//}
|
|
Packit |
1c1d7e |
//
|
|
Packit |
1c1d7e |
//void RTFGenerator::nextTableRow()
|
|
Packit |
1c1d7e |
//{
|
|
Packit |
1c1d7e |
// DBG_RTF(t << "{\\comment nextTableRow}\n";)
|
|
Packit |
1c1d7e |
// ASSERT(m_numCols>0 && m_numCols<25);
|
|
Packit |
1c1d7e |
// uint columnWidth=rtf_pageWidth/m_numCols;
|
|
Packit |
1c1d7e |
// t << "\\trowd \\trgaph108\\trleft-108\\trbrdrt\\brdrs\\brdrw10 "
|
|
Packit |
1c1d7e |
// "\\trbrdrl\\brdrs\\brdrw10 \\trbrdrb\\brdrs\\brdrw10 "
|
|
Packit |
1c1d7e |
// "\\trbrdrr\\brdrs\\brdrw10 \\trbrdrh\\brdrs\\brdrw10 "
|
|
Packit |
1c1d7e |
// "\\trbrdrv\\brdrs\\brdrw10 "<
|
|
Packit |
1c1d7e |
// for (int i=0;i
|
|
Packit |
1c1d7e |
// {
|
|
Packit |
1c1d7e |
// t << "\\clvertalt\\clbrdrt\\brdrs\\brdrw10 \\clbrdrl\\brdrs\\brdrw10 "
|
|
Packit |
1c1d7e |
// "\\clbrdrb\\brdrs\\brdrw10 \\clbrdrr \\brdrs\\brdrw10 \\cltxlrtb "
|
|
Packit |
1c1d7e |
// "\\cellx" << (i*columnWidth) << endl;
|
|
Packit |
1c1d7e |
// }
|
|
Packit |
1c1d7e |
// t << "\\pard \\widctlpar\\intbl\\adjustright\n{";
|
|
Packit |
1c1d7e |
//}
|
|
Packit |
1c1d7e |
//
|
|
Packit |
1c1d7e |
//void RTFGenerator::endTableRow()
|
|
Packit |
1c1d7e |
//{
|
|
Packit |
1c1d7e |
// DBG_RTF(t << "{\\comment endTableRow}\n";)
|
|
Packit |
1c1d7e |
// t << "\n\\pard \\widctlpar\\intbl\\adjustright\n{\\row }\n";
|
|
Packit |
1c1d7e |
//}
|
|
Packit |
1c1d7e |
//
|
|
Packit |
1c1d7e |
//void RTFGenerator::nextTableColumn()
|
|
Packit |
1c1d7e |
//{
|
|
Packit |
1c1d7e |
// DBG_RTF(t << "{\\comment nextTableColumn}\n";)
|
|
Packit |
1c1d7e |
// t << "{ ";
|
|
Packit |
1c1d7e |
//}
|
|
Packit |
1c1d7e |
//
|
|
Packit |
1c1d7e |
//void RTFGenerator::endTableColumn()
|
|
Packit |
1c1d7e |
//{
|
|
Packit |
1c1d7e |
// DBG_RTF(t << "{\\comment endTableColumn}\n";)
|
|
Packit |
1c1d7e |
// t << " \\cell }";
|
|
Packit |
1c1d7e |
//}
|
|
Packit |
1c1d7e |
//
|
|
Packit |
1c1d7e |
void RTFGenerator::startTextLink(const char *f,const char *anchor)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (Config_getBool(RTF_HYPERLINKS))
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
QCString ref;
|
|
Packit |
1c1d7e |
if (f)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
ref+=f;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
if (anchor)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
ref+='_';
|
|
Packit |
1c1d7e |
ref+=anchor;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
t << "{\\field {\\*\\fldinst { HYPERLINK \\\\l \"";
|
|
Packit |
1c1d7e |
t << rtfFormatBmkStr(ref);
|
|
Packit |
1c1d7e |
t << "\" }{}";
|
|
Packit |
1c1d7e |
t << "}{\\fldrslt {\\cs37\\ul\\cf2 ";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void RTFGenerator::endTextLink()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (Config_getBool(RTF_HYPERLINKS))
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "}}}" << endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void RTFGenerator::writeObjectLink(const char *ref, const char *f,
|
|
Packit |
1c1d7e |
const char *anchor, const char *text)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (!ref && Config_getBool(RTF_HYPERLINKS))
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
QCString refName;
|
|
Packit |
1c1d7e |
if (f)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
refName+=f;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
if (anchor)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
refName+='_';
|
|
Packit |
1c1d7e |
refName+=anchor;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
t << "{\\field {\\*\\fldinst { HYPERLINK \\\\l \"";
|
|
Packit |
1c1d7e |
t << rtfFormatBmkStr(refName);
|
|
Packit |
1c1d7e |
t << "\" }{}";
|
|
Packit |
1c1d7e |
t << "}{\\fldrslt {\\cs37\\ul\\cf2 ";
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
docify(text);
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
t << "}}}" << endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
else
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
startBold();
|
|
Packit |
1c1d7e |
docify(text);
|
|
Packit |
1c1d7e |
endBold();
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void RTFGenerator::startPageRef()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << " (";
|
|
Packit |
1c1d7e |
startEmphasis();
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void RTFGenerator::endPageRef(const char *clname, const char *anchor)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
QCString ref;
|
|
Packit |
1c1d7e |
if (clname)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
ref+=clname;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
if (anchor)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
ref+='_';
|
|
Packit |
1c1d7e |
ref+=anchor;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
writeRTFReference(ref);
|
|
Packit |
1c1d7e |
endEmphasis();
|
|
Packit |
1c1d7e |
t << ")";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void RTFGenerator::writeCodeLink(const char *ref,const char *f,
|
|
Packit |
1c1d7e |
const char *anchor,const char *name,
|
|
Packit |
1c1d7e |
const char *)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (!ref && Config_getBool(RTF_HYPERLINKS))
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
QCString refName;
|
|
Packit |
1c1d7e |
if (f)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
refName+=f;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
if (anchor)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
refName+='_';
|
|
Packit |
1c1d7e |
refName+=anchor;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
t << "{\\field {\\*\\fldinst { HYPERLINK \\\\l \"";
|
|
Packit |
1c1d7e |
t << rtfFormatBmkStr(refName);
|
|
Packit |
1c1d7e |
t << "\" }{}";
|
|
Packit |
1c1d7e |
t << "}{\\fldrslt {\\cs37\\ul\\cf2 ";
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
codify(name);
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
t << "}}}" << endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
else
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
codify(name);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void RTFGenerator::startTitleHead(const char *)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
DBG_RTF(t <<"{\\comment startTitleHead}" << endl)
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
// beginRTFSection();
|
|
Packit |
1c1d7e |
t << rtf_Style_Reset << rtf_Style["Heading2"]->reference << endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void RTFGenerator::endTitleHead(const char *fileName,const char *name)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
DBG_RTF(t <<"{\\comment endTitleHead}" << endl)
|
|
Packit |
1c1d7e |
t << "\\par " << rtf_Style_Reset << endl;
|
|
Packit |
1c1d7e |
if (name)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
// make table of contents entry
|
|
Packit |
1c1d7e |
t << "{\\tc\\tcl2 \\v ";
|
|
Packit |
1c1d7e |
docify(name);
|
|
Packit |
1c1d7e |
t << "}" << endl;
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
// make an index entry
|
|
Packit |
1c1d7e |
addIndexItem(name,0);
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
//if (name)
|
|
Packit |
1c1d7e |
//{
|
|
Packit |
1c1d7e |
// writeAnchor(0,name);
|
|
Packit |
1c1d7e |
//}
|
|
Packit |
1c1d7e |
//
|
|
Packit |
1c1d7e |
//if (Config_getBool(RTF_HYPERLINKS) && fileName)
|
|
Packit |
1c1d7e |
//{
|
|
Packit |
1c1d7e |
writeAnchor(fileName,0);
|
|
Packit |
1c1d7e |
//}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void RTFGenerator::startTitle()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
DBG_RTF(t <<"{\\comment startTitle}" << endl)
|
|
Packit |
1c1d7e |
if (Config_getBool(COMPACT_RTF))
|
|
Packit |
1c1d7e |
beginRTFSection();
|
|
Packit |
1c1d7e |
else
|
|
Packit |
1c1d7e |
beginRTFChapter();
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void RTFGenerator::startGroupHeader(int extraIndent)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
DBG_RTF(t <<"{\\comment startGroupHeader}" << endl)
|
|
Packit |
1c1d7e |
//newParagraph();
|
|
Packit |
1c1d7e |
t << rtf_Style_Reset;
|
|
Packit |
1c1d7e |
if (extraIndent==2)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << rtf_Style["Heading5"]->reference;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
else if (extraIndent==1)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << rtf_Style["Heading4"]->reference;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
else // extraIndent==0
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << rtf_Style["Heading3"]->reference;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
t << endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void RTFGenerator::endGroupHeader(int)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
DBG_RTF(t <<"{\\comment endGroupHeader}" << endl)
|
|
Packit |
1c1d7e |
t << "\\par" << endl;
|
|
Packit |
1c1d7e |
t << rtf_Style_Reset << endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void RTFGenerator::startMemberDoc(const char *clname,
|
|
Packit |
1c1d7e |
const char *memname,
|
|
Packit |
1c1d7e |
const char *,
|
|
Packit |
1c1d7e |
const char *,
|
|
Packit |
1c1d7e |
int,
|
|
Packit |
1c1d7e |
int,
|
|
Packit |
1c1d7e |
bool showInline)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
DBG_RTF(t << "{\\comment startMemberDoc}" << endl)
|
|
Packit |
1c1d7e |
if (memname && memname[0]!='@')
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
addIndexItem(memname,clname);
|
|
Packit |
1c1d7e |
addIndexItem(clname,memname);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
t << rtf_Style_Reset << rtf_Style[showInline ? "Heading5" : "Heading4"]->reference;
|
|
Packit |
1c1d7e |
//styleStack.push(rtf_Style_Heading4);
|
|
Packit |
1c1d7e |
t << "{" << endl;
|
|
Packit |
1c1d7e |
//printf("RTFGenerator::startMemberDoc() `%s'\n",rtf_Style["Heading4"]->reference);
|
|
Packit |
1c1d7e |
startBold();
|
|
Packit |
1c1d7e |
t << endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void RTFGenerator::endMemberDoc(bool)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
DBG_RTF(t << "{\\comment endMemberDoc}" << endl)
|
|
Packit |
1c1d7e |
//const char *style = styleStack.pop();
|
|
Packit |
1c1d7e |
//printf("RTFGenerator::endMemberDoc() `%s'\n",style);
|
|
Packit |
1c1d7e |
//ASSERT(style==rtf_Style["Heading4"]->reference);
|
|
Packit |
1c1d7e |
endBold();
|
|
Packit |
1c1d7e |
t << "}" << endl;
|
|
Packit |
1c1d7e |
newParagraph();
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void RTFGenerator::startDoxyAnchor(const char *,const char *,
|
|
Packit |
1c1d7e |
const char *,const char *,
|
|
Packit |
1c1d7e |
const char *
|
|
Packit |
1c1d7e |
)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
DBG_RTF(t << "{\\comment startDoxyAnchor}" << endl)
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void RTFGenerator::endDoxyAnchor(const char *fName,const char *anchor)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
QCString ref;
|
|
Packit |
1c1d7e |
if (fName)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
ref+=fName;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
if (anchor)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
ref+='_';
|
|
Packit |
1c1d7e |
ref+=anchor;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
DBG_RTF(t << "{\\comment endDoxyAnchor}" << endl)
|
|
Packit |
1c1d7e |
t << "{\\bkmkstart ";
|
|
Packit |
1c1d7e |
t << rtfFormatBmkStr(ref);
|
|
Packit |
1c1d7e |
t << "}" << endl;
|
|
Packit |
1c1d7e |
t << "{\\bkmkend ";
|
|
Packit |
1c1d7e |
t << rtfFormatBmkStr(ref);
|
|
Packit |
1c1d7e |
t << "}" << endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
//void RTFGenerator::writeLatexLabel(const char *clName,const char *anchor)
|
|
Packit |
1c1d7e |
//{
|
|
Packit |
1c1d7e |
// writeDoxyAnchor(0,clName,anchor,0);
|
|
Packit |
1c1d7e |
//}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void RTFGenerator::addIndexItem(const char *s1,const char *s2)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (s1)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "{\\xe \\v ";
|
|
Packit |
1c1d7e |
docify(s1);
|
|
Packit |
1c1d7e |
if (s2)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "\\:";
|
|
Packit |
1c1d7e |
docify(s2);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
t << "}" << endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void RTFGenerator::startIndent()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
incrementIndentLevel();
|
|
Packit |
1c1d7e |
DBG_RTF(t << "{\\comment (startIndent) }" << endl)
|
|
Packit |
1c1d7e |
t << "{" << endl;
|
|
Packit |
1c1d7e |
t << rtf_Style_Reset << rtf_CList_DepthStyle() << endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void RTFGenerator::endIndent()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "}" << endl;
|
|
Packit |
1c1d7e |
decrementIndentLevel();
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void RTFGenerator::startDescription()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
DBG_RTF(t << "{\\comment (startDescription)}" << endl)
|
|
Packit |
1c1d7e |
t << "{" << endl;
|
|
Packit |
1c1d7e |
t << rtf_Style_Reset << rtf_DList_DepthStyle();
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void RTFGenerator::endDescription()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
DBG_RTF(t << "{\\comment (endDescription)}" << endl)
|
|
Packit |
1c1d7e |
newParagraph();
|
|
Packit |
1c1d7e |
t << "}";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void RTFGenerator::startDescItem()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
newParagraph();
|
|
Packit |
1c1d7e |
DBG_RTF(t << "{\\comment (startDescItem)}" << endl)
|
|
Packit |
1c1d7e |
t << "{\\b ";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void RTFGenerator::endDescItem()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
DBG_RTF(t << "{\\comment (endDescItem)}" << endl)
|
|
Packit |
1c1d7e |
t << "}" << endl;
|
|
Packit |
1c1d7e |
newParagraph();
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void RTFGenerator::startMemberDescription(const char *,const char *)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
DBG_RTF(t << "{\\comment (startMemberDescription)}" << endl)
|
|
Packit |
1c1d7e |
t << "{" << endl;
|
|
Packit |
1c1d7e |
incrementIndentLevel();
|
|
Packit |
1c1d7e |
t << rtf_Style_Reset << rtf_CList_DepthStyle();
|
|
Packit |
1c1d7e |
startEmphasis();
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void RTFGenerator::endMemberDescription()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
DBG_RTF(t << "{\\comment (endMemberDescription)}" << endl)
|
|
Packit |
1c1d7e |
endEmphasis();
|
|
Packit |
1c1d7e |
newParagraph();
|
|
Packit |
1c1d7e |
decrementIndentLevel();
|
|
Packit |
1c1d7e |
//t << "\\par";
|
|
Packit |
1c1d7e |
t << "}" << endl;
|
|
Packit |
1c1d7e |
//m_omitParagraph = TRUE;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void RTFGenerator::startDescList(SectionTypes)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
DBG_RTF(t << "{\\comment (startDescList)}" << endl)
|
|
Packit |
1c1d7e |
t << "{"; // ends at endDescList
|
|
Packit |
1c1d7e |
t << "{"; // ends at endDescTitle
|
|
Packit |
1c1d7e |
startBold();
|
|
Packit |
1c1d7e |
newParagraph();
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
//void RTFGenerator::endDescTitle()
|
|
Packit |
1c1d7e |
//{
|
|
Packit |
1c1d7e |
// DBG_RTF(t << "{\\comment (endDescTitle) }" << endl)
|
|
Packit |
1c1d7e |
// endBold();
|
|
Packit |
1c1d7e |
// t << "}";
|
|
Packit |
1c1d7e |
// newParagraph();
|
|
Packit |
1c1d7e |
// incrementIndentLevel();
|
|
Packit |
1c1d7e |
// t << rtf_Style_Reset << rtf_DList_DepthStyle();
|
|
Packit |
1c1d7e |
//}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void RTFGenerator::startDescForItem()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
DBG_RTF(t << "{\\comment (startDescForItem) }" << endl)
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void RTFGenerator::endDescForItem()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
DBG_RTF(t << "{\\comment (endDescForItem) }" << endl)
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
//void RTFGenerator::endDescList()
|
|
Packit |
1c1d7e |
//{
|
|
Packit |
1c1d7e |
// DBG_RTF(t << "{\\comment (endDescList)}" << endl)
|
|
Packit |
1c1d7e |
// newParagraph();
|
|
Packit |
1c1d7e |
// decrementIndentLevel();
|
|
Packit |
1c1d7e |
// m_omitParagraph = TRUE;
|
|
Packit |
1c1d7e |
// t << "}";
|
|
Packit |
1c1d7e |
//}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void RTFGenerator::startSection(const char *,const char *title,SectionInfo::SectionType type)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
DBG_RTF(t << "{\\comment (startSection)}" << endl)
|
|
Packit |
1c1d7e |
t << "{";
|
|
Packit |
1c1d7e |
t<< rtf_Style_Reset;
|
|
Packit |
1c1d7e |
int num=4;
|
|
Packit |
1c1d7e |
switch(type)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
case SectionInfo::Page: num=2; break;
|
|
Packit |
1c1d7e |
case SectionInfo::Section: num=3; break;
|
|
Packit |
1c1d7e |
case SectionInfo::Subsection: num=4; break;
|
|
Packit |
1c1d7e |
case SectionInfo::Subsubsection: num=4; break;
|
|
Packit |
1c1d7e |
case SectionInfo::Paragraph: num=4; break;
|
|
Packit |
1c1d7e |
default: ASSERT(0); break;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
QCString heading;
|
|
Packit |
1c1d7e |
heading.sprintf("Heading%d",num);
|
|
Packit |
1c1d7e |
// set style
|
|
Packit |
1c1d7e |
t << rtf_Style[heading]->reference;
|
|
Packit |
1c1d7e |
// make table of contents entry
|
|
Packit |
1c1d7e |
t << "{\\tc\\tcl" << num << " \\v ";
|
|
Packit |
1c1d7e |
docify(title);
|
|
Packit |
1c1d7e |
t << "}" << endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void RTFGenerator::endSection(const char *lab,SectionInfo::SectionType)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
DBG_RTF(t << "{\\comment (endSection)}" << endl)
|
|
Packit |
1c1d7e |
// make bookmark
|
|
Packit |
1c1d7e |
m_omitParagraph=FALSE;
|
|
Packit |
1c1d7e |
newParagraph();
|
|
Packit |
1c1d7e |
writeAnchor(0,lab);
|
|
Packit |
1c1d7e |
t << "}";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
//void RTFGenerator::writeSectionRef(const char *ref,const char *,
|
|
Packit |
1c1d7e |
// const char *lab,const char *title)
|
|
Packit |
1c1d7e |
//{
|
|
Packit |
1c1d7e |
// if (ref)
|
|
Packit |
1c1d7e |
// {
|
|
Packit |
1c1d7e |
// docify(title);
|
|
Packit |
1c1d7e |
// }
|
|
Packit |
1c1d7e |
// else
|
|
Packit |
1c1d7e |
// {
|
|
Packit |
1c1d7e |
// startBold();
|
|
Packit |
1c1d7e |
// docify(title);
|
|
Packit |
1c1d7e |
// endBold();
|
|
Packit |
1c1d7e |
// t << " (";
|
|
Packit |
1c1d7e |
// docify(theTranslator->trPageAbbreviation());
|
|
Packit |
1c1d7e |
// writeRTFReference(lab);
|
|
Packit |
1c1d7e |
// t << ")" << endl;
|
|
Packit |
1c1d7e |
// }
|
|
Packit |
1c1d7e |
//}
|
|
Packit |
1c1d7e |
//
|
|
Packit |
1c1d7e |
//void RTFGenerator::writeSectionRefItem(const char *,const char *lab,
|
|
Packit |
1c1d7e |
// const char *title)
|
|
Packit |
1c1d7e |
//{
|
|
Packit |
1c1d7e |
// docify(title);
|
|
Packit |
1c1d7e |
// t << "\\tab";
|
|
Packit |
1c1d7e |
// writeRTFReference(lab);
|
|
Packit |
1c1d7e |
// t << endl;
|
|
Packit |
1c1d7e |
//}
|
|
Packit |
1c1d7e |
//
|
|
Packit |
1c1d7e |
//void RTFGenerator::writeSectionRefAnchor(const char *name,const char *lab,
|
|
Packit |
1c1d7e |
// const char *title)
|
|
Packit |
1c1d7e |
//{
|
|
Packit |
1c1d7e |
// writeSectionRef(name,lab,title);
|
|
Packit |
1c1d7e |
//}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
//char* RTFGenerator::getMultiByte(int c)
|
|
Packit |
1c1d7e |
//{
|
|
Packit |
1c1d7e |
// static char s[10];
|
|
Packit |
1c1d7e |
//
|
|
Packit |
1c1d7e |
// sprintf(s,"\\'%X",c);
|
|
Packit |
1c1d7e |
// return s;
|
|
Packit |
1c1d7e |
//}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void RTFGenerator::docify(const char *str)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (str)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
const unsigned char *p=(const unsigned char *)str;
|
|
Packit |
1c1d7e |
unsigned char c;
|
|
Packit |
1c1d7e |
//unsigned char pc='\0';
|
|
Packit |
1c1d7e |
while (*p)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
//static bool MultiByte = FALSE;
|
|
Packit |
1c1d7e |
c=*p++;
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
#if 0
|
|
Packit |
1c1d7e |
if ( MultiByte )
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << getMultiByte( c );
|
|
Packit |
1c1d7e |
MultiByte = FALSE;
|
|
Packit |
1c1d7e |
continue;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
if ( c >= 0x80 )
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
MultiByte = TRUE;
|
|
Packit |
1c1d7e |
t << getMultiByte( c );
|
|
Packit |
1c1d7e |
continue;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
#endif
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
switch (c)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
case '{': t << "\\{"; break;
|
|
Packit |
1c1d7e |
case '}': t << "\\}"; break;
|
|
Packit |
1c1d7e |
case '\\': t << "\\\\"; break;
|
|
Packit |
1c1d7e |
default:
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
// see if we can insert an hyphenation hint
|
|
Packit |
1c1d7e |
//if (isupper(c) && islower(pc) && !insideTabbing) t << "\\-";
|
|
Packit |
1c1d7e |
t << (char)c;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
//pc = c;
|
|
Packit |
1c1d7e |
m_omitParagraph = FALSE;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void RTFGenerator::codify(const char *str)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
// note that RTF does not have a "verbatim", so "\n" means
|
|
Packit |
1c1d7e |
// nothing... add a "newParagraph()";
|
|
Packit |
1c1d7e |
//static char spaces[]=" ";
|
|
Packit |
1c1d7e |
if (str)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
const unsigned char *p=(const unsigned char *)str;
|
|
Packit |
1c1d7e |
unsigned char c;
|
|
Packit |
1c1d7e |
int spacesToNextTabStop;
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
while (*p)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
//static bool MultiByte = FALSE;
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
c=*p++;
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
switch(c)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
case '\t': spacesToNextTabStop = Config_getInt(TAB_SIZE) - (col%Config_getInt(TAB_SIZE));
|
|
Packit |
1c1d7e |
t << Doxygen::spaces.left(spacesToNextTabStop);
|
|
Packit |
1c1d7e |
col+=spacesToNextTabStop;
|
|
Packit |
1c1d7e |
break;
|
|
Packit |
1c1d7e |
case '\n': newParagraph();
|
|
Packit |
1c1d7e |
t << '\n'; col=0;
|
|
Packit |
1c1d7e |
break;
|
|
Packit |
1c1d7e |
case '{': t << "\\{"; col++; break;
|
|
Packit |
1c1d7e |
case '}': t << "\\}"; col++; break;
|
|
Packit |
1c1d7e |
case '\\': t << "\\\\"; col++; break;
|
|
Packit |
1c1d7e |
default: p=(const unsigned char *)writeUtf8Char(t,(const char *)p-1); col++; break;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void RTFGenerator::writeChar(char c)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
char cs[2];
|
|
Packit |
1c1d7e |
cs[0]=c;
|
|
Packit |
1c1d7e |
cs[1]=0;
|
|
Packit |
1c1d7e |
docify(cs);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void RTFGenerator::startClassDiagram()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
DBG_RTF(t <<"{\\comment startClassDiagram }" << endl)
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void RTFGenerator::endClassDiagram(const ClassDiagram &d,
|
|
Packit |
1c1d7e |
const char *fileName,const char *)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
newParagraph();
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
// create a png file
|
|
Packit |
1c1d7e |
d.writeImage(t,dir,relPath,fileName,FALSE);
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
// display the file
|
|
Packit |
1c1d7e |
t << "{" << endl;
|
|
Packit |
1c1d7e |
t << rtf_Style_Reset << endl;
|
|
Packit |
1c1d7e |
t << "\\par\\pard \\qc {\\field\\flddirty {\\*\\fldinst INCLUDEPICTURE \"";
|
|
Packit |
1c1d7e |
t << fileName << ".png\"";
|
|
Packit |
1c1d7e |
t << " \\\\d \\\\*MERGEFORMAT}{\\fldrslt IMAGE}}\\par" << endl;
|
|
Packit |
1c1d7e |
t << "}" << endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
//void RTFGenerator::writeFormula(const char *,const char *text)
|
|
Packit |
1c1d7e |
//{
|
|
Packit |
1c1d7e |
// t << text;
|
|
Packit |
1c1d7e |
//}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void RTFGenerator::startMemberItem(const char *,int,const char *)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
DBG_RTF(t <<"{\\comment startMemberItem }" << endl)
|
|
Packit |
1c1d7e |
t << rtf_Style_Reset << rtf_BList_DepthStyle() << endl; // set style to appropriate depth
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void RTFGenerator::endMemberItem()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
DBG_RTF(t <<"{\\comment endMemberItem }" << endl)
|
|
Packit |
1c1d7e |
newParagraph();
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void RTFGenerator::writeAnchor(const char *fileName,const char *name)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
QCString anchor;
|
|
Packit |
1c1d7e |
if (fileName)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
anchor+=fileName;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
if (fileName && name)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
anchor+='_';
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
if (name)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
anchor+=name;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
DBG_RTF(t <<"{\\comment writeAnchor (" << anchor << ")}" << endl)
|
|
Packit |
1c1d7e |
t << "{\\bkmkstart " << rtfFormatBmkStr(anchor) << "}" << endl;
|
|
Packit |
1c1d7e |
t << "{\\bkmkend " << rtfFormatBmkStr(anchor) << "}" << endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void RTFGenerator::writeRTFReference(const char *label)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "{\\field\\fldedit {\\*\\fldinst PAGEREF ";
|
|
Packit |
1c1d7e |
t << rtfFormatBmkStr(label);
|
|
Packit |
1c1d7e |
t << " \\\\*MERGEFORMAT}{\\fldrslt pagenum}}";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void RTFGenerator::startCodeFragment()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
DBG_RTF(t << "{\\comment (startCodeFragment) }" << endl)
|
|
Packit |
1c1d7e |
t << "{" << endl;
|
|
Packit |
1c1d7e |
//newParagraph();
|
|
Packit |
1c1d7e |
t << rtf_Style_Reset << rtf_Code_DepthStyle();
|
|
Packit |
1c1d7e |
//styleStack.push(rtf_Style_CodeExample);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void RTFGenerator::endCodeFragment()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
//newParagraph();
|
|
Packit |
1c1d7e |
//styleStack.pop();
|
|
Packit |
1c1d7e |
//printf("RTFGenerator::endCodeFrament() top=%s\n",styleStack.top());
|
|
Packit |
1c1d7e |
//t << rtf_Style_Reset << styleStack.top() << endl;
|
|
Packit |
1c1d7e |
DBG_RTF(t << "{\\comment (endCodeFragment) }" << endl)
|
|
Packit |
1c1d7e |
t << "}" << endl;
|
|
Packit |
1c1d7e |
m_omitParagraph = TRUE;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void RTFGenerator::writeNonBreakableSpace(int)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "\\~ ";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void RTFGenerator::startMemberList()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << endl;
|
|
Packit |
1c1d7e |
DBG_RTF(t << "{\\comment (startMemberList) }" << endl)
|
|
Packit |
1c1d7e |
t << "{" << endl;
|
|
Packit |
1c1d7e |
#ifdef DELETEDCODE
|
|
Packit |
1c1d7e |
if (!insideTabbing)
|
|
Packit |
1c1d7e |
t << "\\begin{CompactItemize}" << endl;
|
|
Packit |
1c1d7e |
#endif
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void RTFGenerator::endMemberList()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
DBG_RTF(t << "{\\comment (endMemberList) }" << endl)
|
|
Packit |
1c1d7e |
t << "}" << endl;
|
|
Packit |
1c1d7e |
#ifdef DELETEDCODE
|
|
Packit |
1c1d7e |
if (!insideTabbing)
|
|
Packit |
1c1d7e |
t << "\\end{CompactItemize}" << endl;
|
|
Packit |
1c1d7e |
#endif
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
//void RTFGenerator::startImage(const char *name,const char *,bool)
|
|
Packit |
1c1d7e |
//{
|
|
Packit |
1c1d7e |
// newParagraph();
|
|
Packit |
1c1d7e |
// t << "{" << endl;
|
|
Packit |
1c1d7e |
// t << rtf_Style_Reset << endl;
|
|
Packit |
1c1d7e |
// t << "\\par\\pard \\qc {\\field\\flddirty {\\*\\fldinst INCLUDEPICTURE ";
|
|
Packit |
1c1d7e |
// t << name;
|
|
Packit |
1c1d7e |
// t << " \\\\d \\\\*MERGEFORMAT}{\\fldrslt IMAGE}}\\par" << endl;
|
|
Packit |
1c1d7e |
// t << "}" << endl;
|
|
Packit |
1c1d7e |
//}
|
|
Packit |
1c1d7e |
//
|
|
Packit |
1c1d7e |
//void RTFGenerator::endImage(bool)
|
|
Packit |
1c1d7e |
//{
|
|
Packit |
1c1d7e |
// // not yet implemented
|
|
Packit |
1c1d7e |
//}
|
|
Packit |
1c1d7e |
//
|
|
Packit |
1c1d7e |
//void RTFGenerator::startDotFile(const char *name,bool)
|
|
Packit |
1c1d7e |
//{
|
|
Packit |
1c1d7e |
// QCString baseName=name;
|
|
Packit |
1c1d7e |
// int i;
|
|
Packit |
1c1d7e |
// if ((i=baseName.findRev('/'))!=-1 || (i=baseName.findRev('\\'))!=-1)
|
|
Packit |
1c1d7e |
// {
|
|
Packit |
1c1d7e |
// baseName=baseName.right(baseName.length()-i-1);
|
|
Packit |
1c1d7e |
// }
|
|
Packit |
1c1d7e |
// QCString outDir = Config_getString(RTF_OUTPUT);
|
|
Packit |
1c1d7e |
// writeDotGraphFromFile(name,outDir,baseName,BITMAP);
|
|
Packit |
1c1d7e |
// newParagraph();
|
|
Packit |
1c1d7e |
// t << "{" << endl;
|
|
Packit |
1c1d7e |
// t << rtf_Style_Reset << endl;
|
|
Packit |
1c1d7e |
// t << "\\par\\pard \\qc {\\field\\flddirty {\\*\\fldinst INCLUDEPICTURE ";
|
|
Packit |
1c1d7e |
// t << outDir << "\\" << baseName;
|
|
Packit |
1c1d7e |
// t << " \\\\d \\\\*MERGEFORMAT}{\\fldrslt IMAGE}}\\par" << endl;
|
|
Packit |
1c1d7e |
// t << "}" << endl;
|
|
Packit |
1c1d7e |
//}
|
|
Packit |
1c1d7e |
//
|
|
Packit |
1c1d7e |
//void RTFGenerator::endDotFile(bool)
|
|
Packit |
1c1d7e |
//{
|
|
Packit |
1c1d7e |
// // not yet implemented
|
|
Packit |
1c1d7e |
//}
|
|
Packit |
1c1d7e |
//
|
|
Packit |
1c1d7e |
void RTFGenerator::startDescTable(const char *title)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
DBG_RTF(t << "{\\comment (startDescTable) }" << endl)
|
|
Packit |
1c1d7e |
t << "{\\par" << endl;
|
|
Packit |
1c1d7e |
t << "{" << rtf_Style["Heading5"]->reference << endl;
|
|
Packit |
1c1d7e |
docify(title);
|
|
Packit |
1c1d7e |
t << ":\\par}" << endl;
|
|
Packit |
1c1d7e |
t << rtf_Style_Reset << rtf_DList_DepthStyle();
|
|
Packit |
1c1d7e |
t << "\\trowd \\trgaph108\\trleft426\\tblind426"
|
|
Packit |
1c1d7e |
"\\trbrdrt\\brdrs\\brdrw10\\brdrcf15 "
|
|
Packit |
1c1d7e |
"\\trbrdrl\\brdrs\\brdrw10\\brdrcf15 "
|
|
Packit |
1c1d7e |
"\\trbrdrb\\brdrs\\brdrw10\\brdrcf15 "
|
|
Packit |
1c1d7e |
"\\trbrdrr\\brdrs\\brdrw10\\brdrcf15 "
|
|
Packit |
1c1d7e |
"\\trbrdrh\\brdrs\\brdrw10\\brdrcf15 "
|
|
Packit |
1c1d7e |
"\\trbrdrv\\brdrs\\brdrw10\\brdrcf15 "<< endl;
|
|
Packit |
1c1d7e |
int i,columnPos[2] = { 25, 100 };
|
|
Packit |
1c1d7e |
for (i=0;i<2;i++)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "\\clvertalt\\clbrdrt\\brdrs\\brdrw10\\brdrcf15 "
|
|
Packit |
1c1d7e |
"\\clbrdrl\\brdrs\\brdrw10\\brdrcf15 "
|
|
Packit |
1c1d7e |
"\\clbrdrb\\brdrs\\brdrw10\\brdrcf15 "
|
|
Packit |
1c1d7e |
"\\clbrdrr \\brdrs\\brdrw10\\brdrcf15 "
|
|
Packit |
1c1d7e |
"\\cltxlrtb "
|
|
Packit |
1c1d7e |
"\\cellx" << (rtf_pageWidth*columnPos[i]/100) << endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
t << "\\pard \\widctlpar\\intbl\\adjustright" << endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void RTFGenerator::endDescTable()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
DBG_RTF(t << "{\\comment (endDescTable)}" << endl)
|
|
Packit |
1c1d7e |
t << "}" << endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void RTFGenerator::startDescTableRow()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void RTFGenerator::endDescTableRow()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void RTFGenerator::startDescTableTitle()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
DBG_RTF(t << "{\\comment (startDescTableTitle) }" << endl)
|
|
Packit |
1c1d7e |
t << "{\\qr ";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void RTFGenerator::endDescTableTitle()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
DBG_RTF(t << "{\\comment (endDescTableTitle) }" << endl)
|
|
Packit |
1c1d7e |
t << "\\cell }";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void RTFGenerator::startDescTableData()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
DBG_RTF(t << "{\\comment (startDescTableData) }" << endl)
|
|
Packit |
1c1d7e |
t << "{";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void RTFGenerator::endDescTableData()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
DBG_RTF(t << "{\\comment (endDescTableData) }" << endl)
|
|
Packit |
1c1d7e |
t << "\\cell }{\\row }" << endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
// a style for list formatted as a "bulleted list"
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void RTFGenerator::incrementIndentLevel()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
m_listLevel++;
|
|
Packit |
1c1d7e |
if (m_listLevel>rtf_maxIndentLevels-1)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
err("Maximum indent level (%d) exceeded while generating RTF output!\n",rtf_maxIndentLevels);
|
|
Packit |
1c1d7e |
m_listLevel=rtf_maxIndentLevels-1;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void RTFGenerator::decrementIndentLevel()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
m_listLevel--;
|
|
Packit |
1c1d7e |
if (m_listLevel<0)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
err("Negative indent level while generating RTF output!\n");
|
|
Packit |
1c1d7e |
m_listLevel=0;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
// a style for list formatted with "list continue" style
|
|
Packit |
1c1d7e |
const char * RTFGenerator::rtf_CList_DepthStyle()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
QCString n=makeIndexName("ListContinue",m_listLevel);
|
|
Packit |
1c1d7e |
return rtf_Style[n]->reference;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
// a style for list formatted as a "latext style" table of contents
|
|
Packit |
1c1d7e |
const char * RTFGenerator::rtf_LCList_DepthStyle()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
QCString n=makeIndexName("LatexTOC",m_listLevel);
|
|
Packit |
1c1d7e |
return rtf_Style[n]->reference;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
// a style for list formatted as a "bullet" style
|
|
Packit |
1c1d7e |
const char * RTFGenerator::rtf_BList_DepthStyle()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
QCString n=makeIndexName("ListBullet",m_listLevel);
|
|
Packit |
1c1d7e |
return rtf_Style[n]->reference;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
// a style for list formatted as a "enumeration" style
|
|
Packit |
1c1d7e |
const char * RTFGenerator::rtf_EList_DepthStyle()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
QCString n=makeIndexName("ListEnum",m_listLevel);
|
|
Packit |
1c1d7e |
return rtf_Style[n]->reference;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
const char * RTFGenerator::rtf_DList_DepthStyle()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
QCString n=makeIndexName("DescContinue",m_listLevel);
|
|
Packit |
1c1d7e |
return rtf_Style[n]->reference;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
const char * RTFGenerator::rtf_Code_DepthStyle()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
QCString n=makeIndexName("CodeExample",m_listLevel);
|
|
Packit |
1c1d7e |
return rtf_Style[n]->reference;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void RTFGenerator::startTextBlock(bool dense)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
DBG_RTF(t << "{\\comment startTextBlock}" << endl)
|
|
Packit |
1c1d7e |
t << "{" << endl;
|
|
Packit |
1c1d7e |
t << rtf_Style_Reset;
|
|
Packit |
1c1d7e |
if (dense) // no spacing between "paragraphs"
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << rtf_Style["DenseText"]->reference;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
else // some spacing
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << rtf_Style["BodyText"]->reference;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void RTFGenerator::endTextBlock(bool /*paraBreak*/)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
newParagraph();
|
|
Packit |
1c1d7e |
DBG_RTF(t << "{\\comment endTextBlock}" << endl)
|
|
Packit |
1c1d7e |
t << "}" << endl;
|
|
Packit |
1c1d7e |
//m_omitParagraph = TRUE;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void RTFGenerator::newParagraph()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (!m_omitParagraph)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
DBG_RTF(t << "{\\comment (newParagraph)}" << endl)
|
|
Packit |
1c1d7e |
t << "\\par" << endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
m_omitParagraph = FALSE;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void RTFGenerator::startParagraph(const char *)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
DBG_RTF(t << "{\\comment startParagraph}" << endl)
|
|
Packit |
1c1d7e |
newParagraph();
|
|
Packit |
1c1d7e |
t << "{" << endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void RTFGenerator::endParagraph()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
DBG_RTF(t << "{\\comment endParagraph}" << endl)
|
|
Packit |
1c1d7e |
t << "}\\par" << endl;
|
|
Packit |
1c1d7e |
m_omitParagraph = TRUE;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void RTFGenerator::startMemberSubtitle()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
DBG_RTF(t << "{\\comment startMemberSubtitle}" << endl)
|
|
Packit |
1c1d7e |
t << "{" << endl;
|
|
Packit |
1c1d7e |
t << rtf_Style_Reset << rtf_CList_DepthStyle() << endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void RTFGenerator::endMemberSubtitle()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
DBG_RTF(t << "{\\comment endMemberSubtitle}" << endl)
|
|
Packit |
1c1d7e |
newParagraph();
|
|
Packit |
1c1d7e |
t << "}" << endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
//void RTFGenerator::writeUmlaut(char c)
|
|
Packit |
1c1d7e |
//{
|
|
Packit |
1c1d7e |
// switch(c)
|
|
Packit |
1c1d7e |
// {
|
|
Packit |
1c1d7e |
// case 'A' : t << '\304'; break;
|
|
Packit |
1c1d7e |
// case 'E' : t << '\313'; break;
|
|
Packit |
1c1d7e |
// case 'I' : t << '\317'; break;
|
|
Packit |
1c1d7e |
// case 'O' : t << '\326'; break;
|
|
Packit |
1c1d7e |
// case 'U' : t << '\334'; break;
|
|
Packit |
1c1d7e |
// case 'Y' : t << 'Y'; break;
|
|
Packit |
1c1d7e |
// case 'a' : t << '\344'; break;
|
|
Packit |
1c1d7e |
// case 'e' : t << '\353'; break;
|
|
Packit |
1c1d7e |
// case 'i' : t << '\357'; break;
|
|
Packit |
1c1d7e |
// case 'o' : t << '\366'; break;
|
|
Packit |
1c1d7e |
// case 'u' : t << '\374'; break;
|
|
Packit |
1c1d7e |
// case 'y' : t << '\377'; break;
|
|
Packit |
1c1d7e |
// default: t << '?'; break;
|
|
Packit |
1c1d7e |
// }
|
|
Packit |
1c1d7e |
//}
|
|
Packit |
1c1d7e |
//
|
|
Packit |
1c1d7e |
//void RTFGenerator::writeAcute(char c)
|
|
Packit |
1c1d7e |
//{
|
|
Packit |
1c1d7e |
// switch(c)
|
|
Packit |
1c1d7e |
// {
|
|
Packit |
1c1d7e |
// case 'A' : t << '\301'; break;
|
|
Packit |
1c1d7e |
// case 'E' : t << '\311'; break;
|
|
Packit |
1c1d7e |
// case 'I' : t << '\315'; break;
|
|
Packit |
1c1d7e |
// case 'O' : t << '\323'; break;
|
|
Packit |
1c1d7e |
// case 'U' : t << '\332'; break;
|
|
Packit |
1c1d7e |
// case 'Y' : t << '\335'; break;
|
|
Packit |
1c1d7e |
// case 'a' : t << '\341'; break;
|
|
Packit |
1c1d7e |
// case 'e' : t << '\351'; break;
|
|
Packit |
1c1d7e |
// case 'i' : t << '\355'; break;
|
|
Packit |
1c1d7e |
// case 'o' : t << '\363'; break;
|
|
Packit |
1c1d7e |
// case 'u' : t << '\372'; break;
|
|
Packit |
1c1d7e |
// case 'y' : t << '\375'; break;
|
|
Packit |
1c1d7e |
// default: t << '?'; break;
|
|
Packit |
1c1d7e |
// }
|
|
Packit |
1c1d7e |
//}
|
|
Packit |
1c1d7e |
//
|
|
Packit |
1c1d7e |
//void RTFGenerator::writeGrave(char c)
|
|
Packit |
1c1d7e |
//{
|
|
Packit |
1c1d7e |
// switch(c)
|
|
Packit |
1c1d7e |
// {
|
|
Packit |
1c1d7e |
// case 'A' : t << '\300'; break;
|
|
Packit |
1c1d7e |
// case 'E' : t << '\310'; break;
|
|
Packit |
1c1d7e |
// case 'I' : t << '\314'; break;
|
|
Packit |
1c1d7e |
// case 'O' : t << '\322'; break;
|
|
Packit |
1c1d7e |
// case 'U' : t << '\331'; break;
|
|
Packit |
1c1d7e |
// case 'a' : t << '\340'; break;
|
|
Packit |
1c1d7e |
// case 'e' : t << '\350'; break;
|
|
Packit |
1c1d7e |
// case 'i' : t << '\354'; break;
|
|
Packit |
1c1d7e |
// case 'o' : t << '\362'; break;
|
|
Packit |
1c1d7e |
// case 'u' : t << '\371'; break;
|
|
Packit |
1c1d7e |
// default: t << '?'; break;
|
|
Packit |
1c1d7e |
// }
|
|
Packit |
1c1d7e |
//}
|
|
Packit |
1c1d7e |
//
|
|
Packit |
1c1d7e |
//void RTFGenerator::writeCirc(char c)
|
|
Packit |
1c1d7e |
//{
|
|
Packit |
1c1d7e |
// switch(c)
|
|
Packit |
1c1d7e |
// {
|
|
Packit |
1c1d7e |
// case 'A' : t << '\302'; break;
|
|
Packit |
1c1d7e |
// case 'E' : t << '\312'; break;
|
|
Packit |
1c1d7e |
// case 'I' : t << '\316'; break;
|
|
Packit |
1c1d7e |
// case 'O' : t << '\324'; break;
|
|
Packit |
1c1d7e |
// case 'U' : t << '\333'; break;
|
|
Packit |
1c1d7e |
// case 'a' : t << '\342'; break;
|
|
Packit |
1c1d7e |
// case 'e' : t << '\352'; break;
|
|
Packit |
1c1d7e |
// case 'i' : t << '\356'; break;
|
|
Packit |
1c1d7e |
// case 'o' : t << '\364'; break;
|
|
Packit |
1c1d7e |
// case 'u' : t << '\373'; break;
|
|
Packit |
1c1d7e |
// default: t << '?'; break;
|
|
Packit |
1c1d7e |
// }
|
|
Packit |
1c1d7e |
//}
|
|
Packit |
1c1d7e |
//
|
|
Packit |
1c1d7e |
//void RTFGenerator::writeTilde(char c)
|
|
Packit |
1c1d7e |
//{
|
|
Packit |
1c1d7e |
// switch(c)
|
|
Packit |
1c1d7e |
// {
|
|
Packit |
1c1d7e |
// case 'A' : t << '\303'; break;
|
|
Packit |
1c1d7e |
// case 'N' : t << '\321'; break;
|
|
Packit |
1c1d7e |
// case 'O' : t << '\325'; break;
|
|
Packit |
1c1d7e |
// case 'a' : t << '\343'; break;
|
|
Packit |
1c1d7e |
// case 'n' : t << '\361'; break;
|
|
Packit |
1c1d7e |
// case 'o' : t << '\365'; break;
|
|
Packit |
1c1d7e |
// default: t << '?'; break;
|
|
Packit |
1c1d7e |
// }
|
|
Packit |
1c1d7e |
//}
|
|
Packit |
1c1d7e |
//
|
|
Packit |
1c1d7e |
//void RTFGenerator::writeRing(char c)
|
|
Packit |
1c1d7e |
//{
|
|
Packit |
1c1d7e |
// switch(c)
|
|
Packit |
1c1d7e |
// {
|
|
Packit |
1c1d7e |
// case 'A' : t << '\305'; break;
|
|
Packit |
1c1d7e |
// case 'a' : t << '\345'; break;
|
|
Packit |
1c1d7e |
// default: t << '?'; break;
|
|
Packit |
1c1d7e |
// }
|
|
Packit |
1c1d7e |
//}
|
|
Packit |
1c1d7e |
//
|
|
Packit |
1c1d7e |
//void RTFGenerator::writeCCedil(char c)
|
|
Packit |
1c1d7e |
//{
|
|
Packit |
1c1d7e |
// switch(c)
|
|
Packit |
1c1d7e |
// {
|
|
Packit |
1c1d7e |
// case 'C' : t << '\307'; break;
|
|
Packit |
1c1d7e |
// case 'c' : t << '\347'; break;
|
|
Packit |
1c1d7e |
// default: t << '?'; break;
|
|
Packit |
1c1d7e |
// }
|
|
Packit |
1c1d7e |
//}
|
|
Packit |
1c1d7e |
//
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
bool isLeadBytes(int c)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
bool result;
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
QCString codePage = theTranslator->trRTFansicp();
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
if (codePage == "932") // cp932 (Japanese Shift-JIS)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
result = (0x81<=c && c<=0x9f) || (0xe0<=c && c<=0xfc);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
else if (codePage == "936") // cp936 (Simplified Chinese GBK)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
result = 0x81<=c && c<=0xFE;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
else if (codePage == "949") // cp949 (Korean)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
result = 0x81<=c && c<=0xFE;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
else if (codePage == "950") // cp950 (Traditional Chinese Big5)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
result = 0x81<=c && c<=0xFE;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
else // for SBCS Codepages (cp1252,1251 etc...)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
result = false;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
return result;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
// note: function is not reentrant!
|
|
Packit |
1c1d7e |
static void encodeForOutput(FTextStream &t,const char *s)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (s==0) return;
|
|
Packit |
1c1d7e |
QCString encoding;
|
|
Packit |
1c1d7e |
bool converted=FALSE;
|
|
Packit |
1c1d7e |
int l = qstrlen(s);
|
|
Packit |
1c1d7e |
static QByteArray enc;
|
|
Packit |
1c1d7e |
if (l*4>(int)enc.size()) enc.resize(l*4); // worst case
|
|
Packit |
1c1d7e |
encoding.sprintf("CP%s",theTranslator->trRTFansicp().data());
|
|
Packit |
1c1d7e |
if (!encoding.isEmpty())
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
// convert from UTF-8 back to the output encoding
|
|
Packit |
1c1d7e |
void *cd = portable_iconv_open(encoding,"UTF-8");
|
|
Packit |
1c1d7e |
if (cd!=(void *)(-1))
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
size_t iLeft=l;
|
|
Packit |
1c1d7e |
size_t oLeft=enc.size();
|
|
Packit |
1c1d7e |
char *inputPtr = (char*)s;
|
|
Packit |
1c1d7e |
char *outputPtr = enc.data();
|
|
Packit |
1c1d7e |
if (!portable_iconv(cd, &inputPtr, &iLeft, &outputPtr, &oLeft))
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
enc.resize(enc.size()-(unsigned int)oLeft);
|
|
Packit |
1c1d7e |
converted=TRUE;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
portable_iconv_close(cd);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
if (!converted) // if we did not convert anything, copy as is.
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
memcpy(enc.data(),s,l);
|
|
Packit |
1c1d7e |
enc.resize(l);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
uint i;
|
|
Packit |
1c1d7e |
bool multiByte = FALSE;
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
for (i=0;i
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
uchar c = (uchar)enc.at(i);
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
if (c>=0x80 || multiByte)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
char esc[10];
|
|
Packit |
1c1d7e |
sprintf(esc,"\\'%X",c); // escape sequence for SBCS and DBCS(1st&2nd bytes).
|
|
Packit |
1c1d7e |
t << esc;
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
if (!multiByte)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
multiByte = isLeadBytes(c); // It may be DBCS Codepages.
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
else
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
multiByte = FALSE; // end of Double Bytes Character.
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
else
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << (char)c;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
/**
|
|
Packit |
1c1d7e |
* VERY brittle routine inline RTF's included by other RTF's.
|
|
Packit |
1c1d7e |
* it is recursive and ugly.
|
|
Packit |
1c1d7e |
*/
|
|
Packit |
1c1d7e |
static bool preProcessFile(QDir &d,QCString &infName, FTextStream &t, bool bIncludeHeader=TRUE)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
QFile f(infName);
|
|
Packit |
1c1d7e |
if (!f.open(IO_ReadOnly))
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
err("problems opening rtf file %s for reading\n",infName.data());
|
|
Packit |
1c1d7e |
return FALSE;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
const int maxLineLength = 10240;
|
|
Packit |
1c1d7e |
static QCString lineBuf(maxLineLength);
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
// scan until find end of header
|
|
Packit |
1c1d7e |
// this is EXTREEEEEEEMLY brittle. It works on OUR rtf
|
|
Packit |
1c1d7e |
// files because the first line before the body
|
|
Packit |
1c1d7e |
// ALWAYS contains "{\comment begin body}"
|
|
Packit |
1c1d7e |
int len;
|
|
Packit |
1c1d7e |
for(;;)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
lineBuf.resize(maxLineLength);
|
|
Packit |
1c1d7e |
if ((len=f.readLine(lineBuf.rawData(),maxLineLength))==-1)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
err("read error in %s before end of RTF header!\n",infName.data());
|
|
Packit |
1c1d7e |
return FALSE;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
lineBuf.resize(len+1);
|
|
Packit |
1c1d7e |
if (lineBuf.find("\\comment begin body")!=-1) break;
|
|
Packit |
1c1d7e |
if (bIncludeHeader) encodeForOutput(t,lineBuf.data());
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
lineBuf.resize(maxLineLength);
|
|
Packit |
1c1d7e |
while ((len=f.readLine(lineBuf.rawData(),maxLineLength))!=-1)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
lineBuf.resize(len+1);
|
|
Packit |
1c1d7e |
int pos;
|
|
Packit |
1c1d7e |
if ((pos=lineBuf.find("INCLUDETEXT"))!=-1)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
int startNamePos = lineBuf.find('"',pos)+1;
|
|
Packit |
1c1d7e |
int endNamePos = lineBuf.find('"',startNamePos);
|
|
Packit |
1c1d7e |
QCString fileName = lineBuf.mid(startNamePos,endNamePos-startNamePos);
|
|
Packit |
1c1d7e |
DBG_RTF(t << "{\\comment begin include " << fileName << "}" << endl)
|
|
Packit |
1c1d7e |
if (!preProcessFile(d,fileName,t,FALSE)) return FALSE;
|
|
Packit |
1c1d7e |
DBG_RTF(t << "{\\comment end include " << fileName << "}" << endl)
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
else // no INCLUDETEXT on this line
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
// elaborate hoopla to skip the final "}" if we didn't include the
|
|
Packit |
1c1d7e |
// headers
|
|
Packit |
1c1d7e |
if (!f.atEnd() || bIncludeHeader)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
encodeForOutput(t,lineBuf);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
else // last line of included file
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
// null terminate at the last '}'
|
|
Packit |
1c1d7e |
//char *str = strrchr(buffer,'}');
|
|
Packit |
1c1d7e |
int pos = lineBuf.findRev('}');
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
if (pos != -1)
|
|
Packit |
1c1d7e |
lineBuf.at(pos) = '\0';
|
|
Packit |
1c1d7e |
else
|
|
Packit |
1c1d7e |
err("Strange, the last char was not a '}'\n");
|
|
Packit |
1c1d7e |
encodeForOutput(t,lineBuf);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
lineBuf.resize(maxLineLength);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
f.close();
|
|
Packit |
1c1d7e |
// remove temporary file
|
|
Packit |
1c1d7e |
d.remove(infName);
|
|
Packit |
1c1d7e |
return TRUE;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void RTFGenerator::startDotGraph()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
DBG_RTF(t << "{\\comment (startDotGraph)}" << endl)
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void RTFGenerator::endDotGraph(const DotClassGraph &g)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
newParagraph();
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
QCString fn =
|
|
Packit |
1c1d7e |
g.writeGraph(t,GOF_BITMAP,EOF_Rtf,Config_getString(RTF_OUTPUT),fileName,relPath,TRUE,FALSE);
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
// display the file
|
|
Packit |
1c1d7e |
t << "{" << endl;
|
|
Packit |
1c1d7e |
t << rtf_Style_Reset << endl;
|
|
Packit |
1c1d7e |
t << "\\par\\pard \\qc {\\field\\flddirty {\\*\\fldinst INCLUDEPICTURE \"";
|
|
Packit |
1c1d7e |
QCString imgExt = getDotImageExtension();
|
|
Packit |
1c1d7e |
t << fn << "." << imgExt;
|
|
Packit |
1c1d7e |
t << "\" \\\\d \\\\*MERGEFORMAT}{\\fldrslt IMAGE}}\\par" << endl;
|
|
Packit |
1c1d7e |
t << "}" << endl;
|
|
Packit |
1c1d7e |
newParagraph();
|
|
Packit |
1c1d7e |
DBG_RTF(t << "{\\comment (endDotGraph)}" << endl)
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void RTFGenerator::startInclDepGraph()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
DBG_RTF(t << "{\\comment (startInclDepGraph)}" << endl)
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void RTFGenerator::endInclDepGraph(const DotInclDepGraph &g)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
newParagraph();
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
QCString fn = g.writeGraph(t,GOF_BITMAP,EOF_Rtf,Config_getString(RTF_OUTPUT),
|
|
Packit |
1c1d7e |
fileName,relPath,FALSE);
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
// display the file
|
|
Packit |
1c1d7e |
t << "{" << endl;
|
|
Packit |
1c1d7e |
t << rtf_Style_Reset << endl;
|
|
Packit |
1c1d7e |
t << "\\par\\pard \\qc {\\field\\flddirty {\\*\\fldinst INCLUDEPICTURE \"";
|
|
Packit |
1c1d7e |
QCString imgExt = getDotImageExtension();
|
|
Packit |
1c1d7e |
t << fn << "." << imgExt;
|
|
Packit |
1c1d7e |
t << "\" \\\\d \\\\*MERGEFORMAT}{\\fldrslt IMAGE}}\\par" << endl;
|
|
Packit |
1c1d7e |
t << "}" << endl;
|
|
Packit |
1c1d7e |
DBG_RTF(t << "{\\comment (endInclDepGraph)}" << endl)
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void RTFGenerator::startGroupCollaboration()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void RTFGenerator::endGroupCollaboration(const DotGroupCollaboration &)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void RTFGenerator::startCallGraph()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
DBG_RTF(t << "{\\comment (startCallGraph)}" << endl)
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void RTFGenerator::endCallGraph(const DotCallGraph &g)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
newParagraph();
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
QCString fn = g.writeGraph(t,GOF_BITMAP,EOF_Rtf,Config_getString(RTF_OUTPUT),
|
|
Packit |
1c1d7e |
fileName,relPath,FALSE);
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
// display the file
|
|
Packit |
1c1d7e |
t << "{" << endl;
|
|
Packit |
1c1d7e |
t << rtf_Style_Reset << endl;
|
|
Packit |
1c1d7e |
t << "\\par\\pard \\qc {\\field\\flddirty {\\*\\fldinst INCLUDEPICTURE \"";
|
|
Packit |
1c1d7e |
QCString imgExt = getDotImageExtension();
|
|
Packit |
1c1d7e |
t << fn << "." << imgExt;
|
|
Packit |
1c1d7e |
t << "\" \\\\d \\\\*MERGEFORMAT}{\\fldrslt IMAGE}}\\par" << endl;
|
|
Packit |
1c1d7e |
t << "}" << endl;
|
|
Packit |
1c1d7e |
DBG_RTF(t << "{\\comment (endCallGraph)}" << endl)
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void RTFGenerator::startDirDepGraph()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
DBG_RTF(t << "{\\comment (startDirDepGraph)}" << endl)
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void RTFGenerator::endDirDepGraph(const DotDirDeps &g)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
newParagraph();
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
QCString fn = g.writeGraph(t,GOF_BITMAP,EOF_Rtf,Config_getString(RTF_OUTPUT),
|
|
Packit |
1c1d7e |
fileName,relPath,FALSE);
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
// display the file
|
|
Packit |
1c1d7e |
t << "{" << endl;
|
|
Packit |
1c1d7e |
t << rtf_Style_Reset << endl;
|
|
Packit |
1c1d7e |
t << "\\par\\pard \\qc {\\field\\flddirty {\\*\\fldinst INCLUDEPICTURE \"";
|
|
Packit |
1c1d7e |
QCString imgExt = getDotImageExtension();
|
|
Packit |
1c1d7e |
t << fn << "." << imgExt;
|
|
Packit |
1c1d7e |
t << "\" \\\\d \\\\*MERGEFORMAT}{\\fldrslt IMAGE}}\\par" << endl;
|
|
Packit |
1c1d7e |
t << "}" << endl;
|
|
Packit |
1c1d7e |
DBG_RTF(t << "{\\comment (endDirDepGraph)}" << endl)
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
/** Tests the integrity of the result by counting brackets.
|
|
Packit |
1c1d7e |
*
|
|
Packit |
1c1d7e |
*/
|
|
Packit |
1c1d7e |
void testRTFOutput(const char *name)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
int bcount=0;
|
|
Packit |
1c1d7e |
int line=1;
|
|
Packit |
1c1d7e |
int c;
|
|
Packit |
1c1d7e |
QFile f(name);
|
|
Packit |
1c1d7e |
if (f.open(IO_ReadOnly))
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
while ((c=f.getch())!=-1)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (c=='\\') // escape char
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
c=f.getch();
|
|
Packit |
1c1d7e |
if (c==-1) break;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
else if (c=='{') // open bracket
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
bcount++;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
else if (c=='}') // close bracket
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
bcount--;
|
|
Packit |
1c1d7e |
if (bcount<0)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
goto err;
|
|
Packit |
1c1d7e |
break;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
else if (c=='\n') // newline
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
line++;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
if (bcount==0) return; // file is OK.
|
|
Packit |
1c1d7e |
err:
|
|
Packit |
1c1d7e |
err("RTF integrity test failed at line %d of %s due to a bracket mismatch.\n"
|
|
Packit |
1c1d7e |
" Please try to create a small code example that produces this error \n"
|
|
Packit |
1c1d7e |
" and send that to dimitri@stack.nl.\n",line,name);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
/**
|
|
Packit |
1c1d7e |
* This is an API to a VERY brittle RTF preprocessor that combines nested
|
|
Packit |
1c1d7e |
* RTF files. This version replaces the infile with the new file
|
|
Packit |
1c1d7e |
*/
|
|
Packit |
1c1d7e |
bool RTFGenerator::preProcessFileInplace(const char *path,const char *name)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
QDir d(path);
|
|
Packit |
1c1d7e |
// store the original directory
|
|
Packit |
1c1d7e |
if (!d.exists())
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
err("Output dir %s does not exist!\n",path);
|
|
Packit |
1c1d7e |
return FALSE;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
QCString oldDir = QDir::currentDirPath().utf8();
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
// go to the html output directory (i.e. path)
|
|
Packit |
1c1d7e |
QDir::setCurrent(d.absPath());
|
|
Packit |
1c1d7e |
QDir thisDir;
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
QCString combinedName = (QCString)path+"/combined.rtf";
|
|
Packit |
1c1d7e |
QCString mainRTFName = (QCString)path+"/"+name;
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
QFile outf(combinedName);
|
|
Packit |
1c1d7e |
if (!outf.open(IO_WriteOnly))
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
err("Failed to open %s for writing!\n",combinedName.data());
|
|
Packit |
1c1d7e |
QDir::setCurrent(oldDir);
|
|
Packit |
1c1d7e |
return FALSE;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
FTextStream outt(&outf);
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
if (!preProcessFile(thisDir,mainRTFName,outt))
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
// it failed, remove the temp file
|
|
Packit |
1c1d7e |
outf.close();
|
|
Packit |
1c1d7e |
thisDir.remove(combinedName);
|
|
Packit |
1c1d7e |
QDir::setCurrent(oldDir);
|
|
Packit |
1c1d7e |
return FALSE;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
// everything worked, move the files
|
|
Packit |
1c1d7e |
outf.close();
|
|
Packit |
1c1d7e |
thisDir.remove(mainRTFName);
|
|
Packit |
1c1d7e |
thisDir.rename(combinedName,mainRTFName);
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
testRTFOutput(mainRTFName);
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
QDir::setCurrent(oldDir);
|
|
Packit |
1c1d7e |
return TRUE;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void RTFGenerator::startMemberGroupHeader(bool hasHeader)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
DBG_RTF(t << "{\\comment startMemberGroupHeader}" << endl)
|
|
Packit |
1c1d7e |
t << "{" << endl;
|
|
Packit |
1c1d7e |
if (hasHeader) incrementIndentLevel();
|
|
Packit |
1c1d7e |
t << rtf_Style_Reset << rtf_Style["GroupHeader"]->reference;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void RTFGenerator::endMemberGroupHeader()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
DBG_RTF(t << "{\\comment endMemberGroupHeader}" << endl)
|
|
Packit |
1c1d7e |
newParagraph();
|
|
Packit |
1c1d7e |
t << rtf_Style_Reset << rtf_CList_DepthStyle();
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void RTFGenerator::startMemberGroupDocs()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
DBG_RTF(t << "{\\comment startMemberGroupDocs}" << endl)
|
|
Packit |
1c1d7e |
startEmphasis();
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void RTFGenerator::endMemberGroupDocs()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
DBG_RTF(t << "{\\comment endMemberGroupDocs}" << endl)
|
|
Packit |
1c1d7e |
endEmphasis();
|
|
Packit |
1c1d7e |
newParagraph();
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void RTFGenerator::startMemberGroup()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
DBG_RTF(t << "{\\comment startMemberGroup}" << endl)
|
|
Packit |
1c1d7e |
t << rtf_Style_Reset << rtf_BList_DepthStyle() << endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void RTFGenerator::endMemberGroup(bool hasHeader)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
DBG_RTF(t << "{\\comment endMemberGroup}" << endl)
|
|
Packit |
1c1d7e |
if (hasHeader) decrementIndentLevel();
|
|
Packit |
1c1d7e |
t << "}";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void RTFGenerator::startSimpleSect(SectionTypes,const char *file,const char *anchor,const char *title)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
DBG_RTF(t << "{\\comment (startSimpleSect)}" << endl)
|
|
Packit |
1c1d7e |
t << "{"; // ends at endDescList
|
|
Packit |
1c1d7e |
t << "{"; // ends at endDescTitle
|
|
Packit |
1c1d7e |
startBold();
|
|
Packit |
1c1d7e |
newParagraph();
|
|
Packit |
1c1d7e |
if (file)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
writeObjectLink(0,file,anchor,title);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
else
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
docify(title);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
endBold();
|
|
Packit |
1c1d7e |
t << "}";
|
|
Packit |
1c1d7e |
newParagraph();
|
|
Packit |
1c1d7e |
incrementIndentLevel();
|
|
Packit |
1c1d7e |
t << rtf_Style_Reset << rtf_DList_DepthStyle();
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void RTFGenerator::endSimpleSect()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
DBG_RTF(t << "{\\comment (endSimpleSect)}" << endl)
|
|
Packit |
1c1d7e |
m_omitParagraph = FALSE;
|
|
Packit |
1c1d7e |
newParagraph();
|
|
Packit |
1c1d7e |
decrementIndentLevel();
|
|
Packit |
1c1d7e |
m_omitParagraph = TRUE;
|
|
Packit |
1c1d7e |
t << "}";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void RTFGenerator::startParamList(ParamListTypes,const char *title)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
DBG_RTF(t << "{\\comment (startParamList)}" << endl)
|
|
Packit |
1c1d7e |
t << "{"; // ends at endParamList
|
|
Packit |
1c1d7e |
t << "{"; // ends at endDescTitle
|
|
Packit |
1c1d7e |
startBold();
|
|
Packit |
1c1d7e |
newParagraph();
|
|
Packit |
1c1d7e |
docify(title);
|
|
Packit |
1c1d7e |
endBold();
|
|
Packit |
1c1d7e |
t << "}";
|
|
Packit |
1c1d7e |
newParagraph();
|
|
Packit |
1c1d7e |
incrementIndentLevel();
|
|
Packit |
1c1d7e |
t << rtf_Style_Reset << rtf_DList_DepthStyle();
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void RTFGenerator::endParamList()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
DBG_RTF(t << "{\\comment (endParamList)}" << endl)
|
|
Packit |
1c1d7e |
newParagraph();
|
|
Packit |
1c1d7e |
decrementIndentLevel();
|
|
Packit |
1c1d7e |
m_omitParagraph = TRUE;
|
|
Packit |
1c1d7e |
t << "}";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void RTFGenerator::startParameterType(bool first,const char *key)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
DBG_RTF(t << "{\\comment (startParameterType)}" << endl)
|
|
Packit |
1c1d7e |
if (!first && key)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << " " << key << " ";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void RTFGenerator::endParameterType()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
DBG_RTF(t << "{\\comment (endParameterType)}" << endl)
|
|
Packit |
1c1d7e |
t << " ";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void RTFGenerator::exceptionEntry(const char* prefix,bool closeBracket)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
DBG_RTF(t << "{\\comment (exceptionEntry)}" << endl)
|
|
Packit |
1c1d7e |
if (prefix)
|
|
Packit |
1c1d7e |
t << " " << prefix;
|
|
Packit |
1c1d7e |
else if (closeBracket)
|
|
Packit |
1c1d7e |
t << ")";
|
|
Packit |
1c1d7e |
t << " ";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void RTFGenerator::writeDoc(DocNode *n,Definition *ctx,MemberDef *)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
RTFDocVisitor *visitor = new RTFDocVisitor(t,*this,ctx?ctx->getDefFileExtension():QCString(""));
|
|
Packit |
1c1d7e |
n->accept(visitor);
|
|
Packit |
1c1d7e |
delete visitor;
|
|
Packit |
1c1d7e |
m_omitParagraph = TRUE;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void RTFGenerator::rtfwriteRuler_doubleline()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
DBG_RTF(t << "{\\comment (rtfwriteRuler_doubleline)}" << endl)
|
|
Packit |
1c1d7e |
t << "{\\pard\\widctlpar\\brdrb\\brdrdb\\brdrw15\\brsp20 \\adjustright \\par}" << endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void RTFGenerator::rtfwriteRuler_emboss()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
DBG_RTF(t << "{\\comment (rtfwriteRuler_emboss)}" << endl)
|
|
Packit |
1c1d7e |
t << "{\\pard\\widctlpar\\brdrb\\brdremboss\\brdrw15\\brsp20 \\adjustright \\par}" << endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void RTFGenerator::rtfwriteRuler_thick()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
DBG_RTF(t << "{\\comment (rtfwriteRuler_thick)}" << endl)
|
|
Packit |
1c1d7e |
t << "{\\pard\\widctlpar\\brdrb\\brdrs\\brdrw75\\brsp20 \\adjustright \\par}" << endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void RTFGenerator::rtfwriteRuler_thin()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
DBG_RTF(t << "{\\comment (rtfwriteRuler_thin)}" << endl)
|
|
Packit |
1c1d7e |
t << "{\\pard\\widctlpar\\brdrb\\brdrs\\brdrw5\\brsp20 \\adjustright \\par}" << endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
#if 0
|
|
Packit |
1c1d7e |
void RTFGenerator::postProcess(QByteArray &a)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
QByteArray enc(a.size()*4); // worst case
|
|
Packit |
1c1d7e |
int off=0;
|
|
Packit |
1c1d7e |
uint i;
|
|
Packit |
1c1d7e |
bool mbFlag=FALSE;
|
|
Packit |
1c1d7e |
for (i=0;i
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
unsigned char c = (unsigned char)a.at(i);
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
// treat characters > 0x80 as multibyte characters, except when they
|
|
Packit |
1c1d7e |
// are control characters
|
|
Packit |
1c1d7e |
if (c>0x80 || (mbFlag && c!='\\' && c!='{' && c!='}'))
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
char s[10];
|
|
Packit |
1c1d7e |
sprintf(s,"\\'%X",c);
|
|
Packit |
1c1d7e |
qstrcpy(enc.data()+off,s);
|
|
Packit |
1c1d7e |
off+=qstrlen(s);
|
|
Packit |
1c1d7e |
mbFlag=c>0x80;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
else
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
enc.at(off++)=c;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
enc.resize(off);
|
|
Packit |
1c1d7e |
a = enc;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
#endif
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void RTFGenerator::startConstraintList(const char *header)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
DBG_RTF(t << "{\\comment (startConstraintList)}" << endl)
|
|
Packit |
1c1d7e |
t << "{"; // ends at endConstraintList
|
|
Packit |
1c1d7e |
t << "{";
|
|
Packit |
1c1d7e |
startBold();
|
|
Packit |
1c1d7e |
newParagraph();
|
|
Packit |
1c1d7e |
docify(header);
|
|
Packit |
1c1d7e |
endBold();
|
|
Packit |
1c1d7e |
t << "}";
|
|
Packit |
1c1d7e |
newParagraph();
|
|
Packit |
1c1d7e |
incrementIndentLevel();
|
|
Packit |
1c1d7e |
t << rtf_Style_Reset << rtf_DList_DepthStyle();
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void RTFGenerator::startConstraintParam()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
DBG_RTF(t << "{\\comment (startConstraintParam)}" << endl)
|
|
Packit |
1c1d7e |
startEmphasis();
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void RTFGenerator::endConstraintParam()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
DBG_RTF(t << "{\\comment (endConstraintParam)}" << endl)
|
|
Packit |
1c1d7e |
endEmphasis();
|
|
Packit |
1c1d7e |
t << " : ";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void RTFGenerator::startConstraintType()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
DBG_RTF(t << "{\\comment (startConstraintType)}" << endl)
|
|
Packit |
1c1d7e |
startEmphasis();
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void RTFGenerator::endConstraintType()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
DBG_RTF(t << "{\\comment (endConstraintType)}" << endl)
|
|
Packit |
1c1d7e |
endEmphasis();
|
|
Packit |
1c1d7e |
t << " ";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void RTFGenerator::startConstraintDocs()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
DBG_RTF(t << "{\\comment (startConstraintDocs)}" << endl)
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void RTFGenerator::endConstraintDocs()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
DBG_RTF(t << "{\\comment (endConstraintDocs)}" << endl)
|
|
Packit |
1c1d7e |
newParagraph();
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void RTFGenerator::endConstraintList()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
DBG_RTF(t << "{\\comment (endConstraintList)}" << endl)
|
|
Packit |
1c1d7e |
newParagraph();
|
|
Packit |
1c1d7e |
decrementIndentLevel();
|
|
Packit |
1c1d7e |
m_omitParagraph = TRUE;
|
|
Packit |
1c1d7e |
t << "}";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void RTFGenerator::startIndexListItem()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
DBG_RTF(t << "{\\comment (startIndexListItem)}" << endl)
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void RTFGenerator::endIndexListItem()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
DBG_RTF(t << "{\\comment (endIndexListItem)}" << endl)
|
|
Packit |
1c1d7e |
t << "\\par" << endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void RTFGenerator::startInlineHeader()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
DBG_RTF(t << "{\\comment (startInlineHeader)}" << endl)
|
|
Packit |
1c1d7e |
t << "{" << endl;
|
|
Packit |
1c1d7e |
t << rtf_Style_Reset << rtf_Style["Heading5"]->reference;
|
|
Packit |
1c1d7e |
startBold();
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void RTFGenerator::endInlineHeader()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
DBG_RTF(t << "{\\comment (endInlineHeader)}" << endl)
|
|
Packit |
1c1d7e |
endBold();
|
|
Packit |
1c1d7e |
t << "\\par";
|
|
Packit |
1c1d7e |
t << "}" << endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void RTFGenerator::startMemberDocSimple(bool isEnum)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
DBG_RTF(t << "{\\comment (startMemberDocSimple)}" << endl)
|
|
Packit |
1c1d7e |
t << "{\\par" << endl;
|
|
Packit |
1c1d7e |
t << "{" << rtf_Style["Heading5"]->reference << endl;
|
|
Packit |
1c1d7e |
if (isEnum)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << theTranslator->trEnumerationValues();
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
else
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << theTranslator->trCompoundMembers();
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
t << ":\\par}" << endl;
|
|
Packit |
1c1d7e |
t << rtf_Style_Reset << rtf_DList_DepthStyle();
|
|
Packit |
1c1d7e |
t << "\\trowd \\trgaph108\\trleft426\\tblind426"
|
|
Packit |
1c1d7e |
"\\trbrdrt\\brdrs\\brdrw10\\brdrcf15 "
|
|
Packit |
1c1d7e |
"\\trbrdrl\\brdrs\\brdrw10\\brdrcf15 "
|
|
Packit |
1c1d7e |
"\\trbrdrb\\brdrs\\brdrw10\\brdrcf15 "
|
|
Packit |
1c1d7e |
"\\trbrdrr\\brdrs\\brdrw10\\brdrcf15 "
|
|
Packit |
1c1d7e |
"\\trbrdrh\\brdrs\\brdrw10\\brdrcf15 "
|
|
Packit |
1c1d7e |
"\\trbrdrv\\brdrs\\brdrw10\\brdrcf15 "<< endl;
|
|
Packit |
1c1d7e |
int i,n=3,columnPos[3] = { 25, 50, 100 };
|
|
Packit |
1c1d7e |
if (isEnum)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
columnPos[0]=30;
|
|
Packit |
1c1d7e |
columnPos[1]=100;
|
|
Packit |
1c1d7e |
n=2;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
for (i=0;i
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "\\clvertalt\\clbrdrt\\brdrs\\brdrw10\\brdrcf15 "
|
|
Packit |
1c1d7e |
"\\clbrdrl\\brdrs\\brdrw10\\brdrcf15 "
|
|
Packit |
1c1d7e |
"\\clbrdrb\\brdrs\\brdrw10\\brdrcf15 "
|
|
Packit |
1c1d7e |
"\\clbrdrr \\brdrs\\brdrw10\\brdrcf15 "
|
|
Packit |
1c1d7e |
"\\cltxlrtb "
|
|
Packit |
1c1d7e |
"\\cellx" << (rtf_pageWidth*columnPos[i]/100) << endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
t << "\\pard \\widctlpar\\intbl\\adjustright" << endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void RTFGenerator::endMemberDocSimple(bool)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
DBG_RTF(t << "{\\comment (endMemberDocSimple)}" << endl)
|
|
Packit |
1c1d7e |
t << "}" << endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void RTFGenerator::startInlineMemberType()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
DBG_RTF(t << "{\\comment (startInlineMemberType)}" << endl)
|
|
Packit |
1c1d7e |
t << "{\\qr ";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void RTFGenerator::endInlineMemberType()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
DBG_RTF(t << "{\\comment (endInlineMemberType)}" << endl)
|
|
Packit |
1c1d7e |
t << "\\cell }";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void RTFGenerator::startInlineMemberName()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
DBG_RTF(t << "{\\comment (startInlineMemberName)}" << endl)
|
|
Packit |
1c1d7e |
t << "{";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void RTFGenerator::endInlineMemberName()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
DBG_RTF(t << "{\\comment (endInlineMemberName)}" << endl)
|
|
Packit |
1c1d7e |
t << "\\cell }";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void RTFGenerator::startInlineMemberDoc()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
DBG_RTF(t << "{\\comment (startInlineMemberDoc)}" << endl)
|
|
Packit |
1c1d7e |
t << "{";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void RTFGenerator::endInlineMemberDoc()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
DBG_RTF(t << "{\\comment (endInlineMemberDoc)}" << endl)
|
|
Packit |
1c1d7e |
t << "\\cell }{\\row }" << endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void RTFGenerator::startLabels()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void RTFGenerator::writeLabel(const char *l,bool isLast)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "{\\f2 [" << l << "]}";
|
|
Packit |
1c1d7e |
if (!isLast) t << ", ";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void RTFGenerator::endLabels()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
|