You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
koffice/filters/kword/latex/export/layout.cc

172 lines
5.3 KiB

/*
** A program to convert the XML rendered by KWord into LATEX.
**
** Copyright (C) 2000 Robert JACOLIN
**
** This library is free software; you can redistribute it and/or
** modify it under the terms of the GNU Library General Public
** License as published by the Free Software Foundation; either
** version 2 of the License, or (at your option) any later version.
**
** This library is distributed in the hope that it will be useful,
** but WITHOUT ANY WARRANTY; without even the implied warranty of
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
** Library General Public License for more details.
**
** To receive a copy of the GNU Library General Public License, write to the
** Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
* Boston, MA 02110-1301, USA.
**
*/
#include <stdlib.h> /* for atoi function */
#include <kdebug.h> /* for kdDebug() stream */
#include "fileheader.h" /* for _header use */
#include "tqlayout.h"
#include "layout.h"
/* Static Datas */
TQString Layout::_last_name;
EType Layout::_last_counter;
/*******************************************/
/* Constructor */
/*******************************************/
Layout::Layout()
{
_last_name = "STANDARD";
_last_counter = TL_NONE;
_env = ENV_LEFT;
_counterType = TL_NONE;
_counterDepth = 0;
_counterBullet = 0;
_counterStart = 0;
_numberingType = -1;
_useHardBreakAfter = false;
_useHardBreak = false;
_keepLinesTogether = false;
}
/*******************************************/
/* analyseLAyout */
/*******************************************/
void Layout::analyseLayout(const TQDomNode balise)
{
/* Markup type : FORMAT id="1" pos="0" len="17">...</FORMAT> */
/* No parameters for this markup */
kdDebug(30522) << "ANALYSE OF THE BEGINING OF A LAYOUT" << endl;
/* Analyse children markups */
for(int index= 0; index < getNbChild(balise); index++)
{
if(getChildName(balise, index).compare("NAME")== 0)
{
kdDebug(30522) << "NAME : " << endl;
analyseName(getChild(balise, index));
}
else if(getChildName(balise, index).compare("FOLLOWING")== 0)
{
kdDebug(30522) << "FOLLOWING : " << endl;
analyseFollowing(getChild(balise, index));
}
else if(getChildName(balise, index).compare("FLOW")== 0)
{
kdDebug(30522) << "FLOW : " << endl;
analyseEnv(getChild(balise, index));
}
else if(getChildName(balise, index).compare("PAGEBREAKING")== 0)
{
kdDebug(30522) << "PAGEBREAKING : " << endl;
analyseBreakLine(getChild(balise, index));
}
else if(getChildName(balise, index).compare("COUNTER")== 0)
{
kdDebug(30522) << "COUNTER : " << endl;
analyseCounter(getChild(balise, index));
}
else if(getChildName(balise, index).compare("FORMAT")== 0)
{
kdDebug(30522) << "FORMAT : " << endl;
analyseFormat(getChild(balise, index));
}
}
kdDebug(30522) << "END OF THE BEGINING OF A LAYOUT" << endl;
}
void Layout::analyseName(const TQDomNode balise)
{
/* <NAME value="times"> */
kdDebug(30522) << "PARAM" << endl;
setName(getAttr(balise, "value"));
}
/*******************************************/
/* analyseFollowing */
/*******************************************/
/* Get info about folowing. Ununsefull. */
/*******************************************/
void Layout::analyseFollowing(const TQDomNode balise)
{
/* <FOLLOWING name="times"> */
kdDebug(30522) << "PARAM" << endl;
setFollowing(getAttr(balise, "name"));
}
/*******************************************/
/* analyseEnv */
/*******************************************/
/* Get informations about environment. */
/*******************************************/
void Layout::analyseEnv(const TQDomNode balise)
{
/* <FLOW align="0"> */
// ERROR: Enter first in flow ????
kdDebug(30522) << "PARAM" << endl;
if(getAttr(balise,"align").compare("justify")== 0)
setEnv(ENV_JUSTIFY);
else if(getAttr(balise, "align").compare("left")== 0)
setEnv(ENV_LEFT);
else if(getAttr(balise, "align").compare("right")== 0)
setEnv(ENV_RIGHT);
else if(getAttr(balise, "align").compare("center")== 0)
setEnv(ENV_CENTER);
}
void Layout::analyseBreakLine(const TQDomNode balise)
{
/* <NAME hardFrameBreakAfter="true"> */
kdDebug(30522) << "PARAM" << endl;
if(getAttr(balise, "linesTogether") != 0)
keepLinesTogether();
else if(getAttr(balise, "hardFrameBreak") != 0)
useHardBreak();
else if(getAttr(balise, "hardFrameBreakAfter") != 0)
useHardBreakAfter();
}
/*******************************************/
/* analyseCounter */
/*******************************************/
/* Get all informations about counter. */
/* If I use a counter, I must include a tex*/
/* package. */
/*******************************************/
void Layout::analyseCounter(const TQDomNode balise)
{
/* <COUNTER type="1"> */
kdDebug(30522) << "PARAM" << endl;
setCounterType(getAttr(balise, "type").toInt());
if(getCounterType() > TL_ARABIC && getCounterType() < TL_DISC_BULLET)
{
kdDebug(30522) << getCounterType() << endl;
FileHeader::instance()->useEnumerate();
}
setCounterDepth(getAttr(balise, "depth").toInt());
setCounterBullet(getAttr(balise, "bullet").toInt());
setCounterStart(getAttr(balise, "start").toInt());
setNumberingType(getAttr(balise, "numberingtype").toInt());
}