File indexing completed on 2025-02-16 13:49:57
0001 /* 0002 ** A program to convert the XML rendered by Words into LATEX. 0003 ** 0004 ** Copyright (C) 2000, 2001, 2002, 2003 Robert JACOLIN 0005 ** 0006 ** This library is free software; you can redistribute it and/or 0007 ** modify it under the terms of the GNU Library General Public 0008 ** License as published by the Free Software Foundation; either 0009 ** version 2 of the License, or (at your option) any later version. 0010 ** 0011 ** This library is distributed in the hope that it will be useful, 0012 ** but WITHOUT ANY WARRANTY; without even the implied warranty of 0013 ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 0014 ** Library General Public License for more details. 0015 ** 0016 ** To receive a copy of the GNU Library General Public License, write to the 0017 ** Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 0018 * Boston, MA 02110-1301, USA. 0019 ** 0020 */ 0021 0022 #include "spreadsheet.h" 0023 0024 #include <stdlib.h> /* for atoi function */ 0025 0026 #include "LatexDebug.h" 0027 #include "fileheader.h" 0028 //#include "paper.h" 0029 0030 #include <QTextStream> 0031 0032 /*******************************************/ 0033 /* Constructor */ 0034 /*******************************************/ 0035 Spreadsheet::Spreadsheet() 0036 { 0037 } 0038 0039 /*******************************************/ 0040 /* Destructor */ 0041 /*******************************************/ 0042 Spreadsheet::~Spreadsheet() 0043 { 0044 debugLatex << "Corps Destructor"; 0045 } 0046 0047 /*******************************************/ 0048 /* Analyze */ 0049 /*******************************************/ 0050 void Spreadsheet::analyze(const QDomNode node) 0051 { 0052 debugLatex << getChildName(node, 0); 0053 analyze_attr(node); 0054 //_paper.analyze(getChild(node, "paper")); 0055 _map.analyze(getChild(node, "map")); 0056 //_locale.analyze(getChild(node, "locale")); 0057 //_areaname.analyze(getChild(node, "areaname")); 0058 0059 debugLatex << "SPREADSHEET END"; 0060 } 0061 0062 /*******************************************/ 0063 /* AnalyzePixmaps */ 0064 /*******************************************/ 0065 void Spreadsheet::analyze_attr(const QDomNode /*node*/) 0066 { 0067 0068 } 0069 0070 /*******************************************/ 0071 /* Generate */ 0072 /*******************************************/ 0073 void Spreadsheet::generate(QTextStream &out, bool hasPreamble) 0074 { 0075 debugLatex << "DOC. GENERATION."; 0076 0077 if (!Config::instance()->isEmbeded()) 0078 generatePreamble(out); 0079 debugLatex << "preamble :" << hasPreamble; 0080 0081 /* Body */ 0082 if (hasPreamble) { 0083 out << "\\begin{document}" << endl; 0084 indent(); 0085 } 0086 0087 _map.generate(out); 0088 0089 if (hasPreamble) 0090 out << "\\end{document}" << endl; 0091 unindent(); 0092 if (getIndentation() != 0) 0093 errorLatex << "Error : indent != 0 at the end ! " << endl; 0094 } 0095 0096 /*******************************************/ 0097 /* GeneratePreamble */ 0098 /*******************************************/ 0099 void Spreadsheet::generatePreamble(QTextStream &out) 0100 { 0101 FileHeader::instance()->generate(out); 0102 /* For each header */ 0103 //if(getFileHeader()->hasHeader()) 0104 //{ 0105 // debugLatex <<"header :" << _headers.count(); 0106 0107 /* default : no rule */ 0108 // out << "\\renewcommand{\\headrulewidth}{0pt}" << endl; 0109 // for(header = _headers.first(); header != 0; header = _headers.next()) 0110 // { 0111 // generateTypeHeader(out, header); 0112 // } 0113 //} 0114 0115 /* For each footer */ 0116 /*if(getFileHeader()->hasFooter()) 0117 { 0118 debugLatex <<"footer :" << _footers.count(); 0119 */ 0120 /* default : no rule */ 0121 /* out << "\\renewcommand{\\footrulewidth}{0pt}" << endl; 0122 for(footer = _footers.first(); footer != 0; footer = _footers.next()) 0123 { 0124 generateTypeFooter(out, footer); 0125 } 0126 }*/ 0127 /* Specify what header/footer style to use */ 0128 /*if(getFileHeader()->hasHeader() || getFileHeader()->hasFooter()) 0129 out << "\\pagestyle{fancy}" << endl; 0130 else 0131 { 0132 out << "\\pagestyle{empty}" << endl; 0133 }*/ 0134 } 0135 0136 /*******************************************/ 0137 /* GenerateTypeHeader */ 0138 /*******************************************/ 0139 void Spreadsheet::generateTypeHeader(QTextStream &/*out*/) 0140 { 0141 /*debugLatex <<"generate header"; 0142 if((_fileHeader->getHeadType() == TH_ALL || 0143 _fileHeader->getHeadType() == TH_FIRST) && header->getInfo() == SI_EVEN) 0144 { 0145 out << "\\fancyhead[L]{}" << endl; 0146 out << "\\fancyhead[C]{"; 0147 header->generate(out); 0148 out << "}" << endl; 0149 out << "\\fancyhead[R]{}" << endl; 0150 } 0151 0152 switch(header->getInfo()) 0153 { 0154 case SI_NONE: 0155 case SI_FIRST: 0156 break; 0157 case SI_ODD: 0158 out << "\\fancyhead[RO]{}" << endl; 0159 out << "\\fancyhead[CO]{"; 0160 header->generate(out); 0161 out << "}" << endl; 0162 out << "\\fancyhead[LO]{}" << endl; 0163 break; 0164 case SI_EVEN: 0165 out << "\\fancyhead[RE]{}" << endl; 0166 out << "\\fancyhead[CE]{"; 0167 header->generate(out); 0168 out << "}" << endl; 0169 out << "\\fancyhead[LE]{}" << endl; 0170 break; 0171 } 0172 0173 if(header->getInfo() == SI_FIRST) 0174 { 0175 out << "\\fancyhead{"; 0176 header->generate(out); 0177 out << "}" << endl; 0178 out << "\\thispagestyle{fancy}" << endl; 0179 }*/ 0180 } 0181 0182 /*******************************************/ 0183 /* GenerateTypeFooter */ 0184 /*******************************************/ 0185 void Spreadsheet::generateTypeFooter(QTextStream &/*out*/) 0186 { 0187 /*if(_fileHeader->getFootType() == TH_ALL && footer->getInfo() == SI_EVEN) 0188 { 0189 out << "\\fancyfoot[L]{}" << endl; 0190 out << "\\fancyfoot[C]{"; 0191 footer->generate(out); 0192 out << "}" << endl; 0193 out << "\\fancyfoot[R]{}" << endl; 0194 } 0195 else if(_fileHeader->getFootType() == TH_EVODD) 0196 { 0197 switch(footer->getInfo()) 0198 { 0199 case SI_NONE: 0200 case SI_FIRST: 0201 break; 0202 case SI_ODD: 0203 out << "\\fancyfoot[CO]{"; 0204 footer->generate(out); 0205 out << "}"; 0206 break; 0207 case SI_EVEN: 0208 out << "\\fancyfoot[CE]{"; 0209 footer->generate(out); 0210 out << "}"; 0211 break; 0212 } 0213 } 0214 else if(_fileHeader->getFootType() == TH_FIRST && footer->getInfo() == SI_FIRST) 0215 { 0216 out << "\\fanycfoot{"; 0217 footer->generate(out); 0218 out << "}" << endl; 0219 out << "\\thispagestyle{fancy}" << endl; 0220 }*/ 0221 } 0222