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