summaryrefslogtreecommitdiffstats
path: root/filters/kspread/latex/export/format.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'filters/kspread/latex/export/format.cpp')
-rw-r--r--filters/kspread/latex/export/format.cpp203
1 files changed, 203 insertions, 0 deletions
diff --git a/filters/kspread/latex/export/format.cpp b/filters/kspread/latex/export/format.cpp
new file mode 100644
index 000000000..96f2ad089
--- /dev/null
+++ b/filters/kspread/latex/export/format.cpp
@@ -0,0 +1,203 @@
+/*
+** A program to convert the XML rendered by KWord into LATEX.
+**
+** Copyright (C) 2002, 2003 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>
+
+#include <kdebug.h>
+
+#include "column.h"
+#include "fileheader.h" /* for the use of _header (color and underlined) */
+#include "format.h"
+#include "row.h"
+
+Format::Format()
+{
+ _multirow = -1;
+ _brushStyle = -1;
+ _isValidFormat = false;
+ _bottomBorder = NULL;
+ _topBorder = NULL;
+ _rightBorder = NULL;
+ _leftBorder = NULL;
+}
+
+Format::~Format()
+{
+ delete _bottomBorder;
+ delete _topBorder;
+ delete _leftBorder;
+ delete _rightBorder;
+}
+
+bool Format::hasTopBorder() const
+{
+ if(_topBorder == NULL)
+ return false;
+ else
+ return (_topBorder->getStyle() > 0);
+}
+
+bool Format::hasBottomBorder() const
+{
+ if(_bottomBorder == NULL)
+ return false;
+ else
+ return (_bottomBorder->getStyle() > 0);
+}
+
+bool Format::hasLeftBorder() const
+{
+ if(_leftBorder == NULL)
+ return false;
+ else
+ return (_leftBorder->getStyle() > 0);
+}
+
+bool Format::hasRightBorder() const
+{
+ if(_rightBorder == NULL)
+ return false;
+ else
+ return (_rightBorder->getStyle() > 0);
+}
+
+/* Get the set of info. about a text format */
+void Format::analyse(const TQDomNode balise)
+{
+ /* <format brushstyle="5" brushcolor="#a70bc3" bgcolor="#ffffff" alignY="2" align="4" > */
+ if( !getAttr(balise, "brushstyle").isEmpty() )
+ {
+ _isValidFormat = true;
+ setBrushStyle(getAttr(balise, "brushstyle").toInt());
+ FileHeader::instance()->useColor();
+ setBrushColor(getAttr(balise, "brushcolor"));
+ setBgColor(getAttr(balise, "bgcolor"));
+ setAlignY(getAttr(balise, "alignY").toLong());
+ setAlign(getAttr(balise, "align").toLong());
+ }
+ if(isChild(balise, "pen"))
+ analysePen(getChild(balise, "pen"));
+ if(isChild(balise, "bottom-border"))
+ {
+ kdDebug(30522) << "bottom-border" << endl;
+ _isValidFormat = true;
+ _bottomBorder = new Pen();
+ _bottomBorder->analyse(getChild(getChild(balise, "bottom-border"), "pen"));
+ }
+ if(isChild(balise, "top-border"))
+ {
+ kdDebug(30522) << "top-border" << endl;
+ _isValidFormat = true;
+ _topBorder = new Pen();
+ _topBorder->analyse(getChild(getChild(balise, "top-border"), "pen"));
+ }
+ if(isChild(balise, "left-border"))
+ {
+ kdDebug(30522) << "left-border" << endl;
+ _isValidFormat = true;
+ _leftBorder = new Pen();
+ _leftBorder->analyse(getChild(getChild(balise, "left-border"), "pen"));
+ }
+ if(isChild(balise, "right-border"))
+ {
+ kdDebug(30522) << "right-border" << endl;
+ _isValidFormat = true;
+ _rightBorder = new Pen();
+ _rightBorder->analyse(getChild(getChild(balise, "right-border"), "pen"));
+ }
+}
+
+void Format::analysePen(const TQDomNode balise)
+{
+ /* <pen width="0" style="1" color="#000000" /> */
+ _isValidFormat = true;
+ setPenWidth(getAttr(balise, "width").toDouble());
+ setPenStyle(getAttr(balise, "style").toInt());
+ setPenColor(getAttr(balise, "color"));
+}
+
+void Format::analyseFont(const TQDomNode balise)
+{
+ /* <font size="18" family="Helvetica" weight="50" /> */
+ setFontSize(getAttr(balise, "size").toInt());
+ setFontFamily(getAttr(balise, "family"));
+ setFontWeight(getAttr(balise, "weight").toInt());
+}
+
+void Format::generate(TQTextStream& out, Column* col, Row* row)
+{
+ if(hasLeftBorder())
+ out << "|";
+ if(isValidFormat() && getBrushStyle() >= 1)
+ {
+ out << ">{\\columncolor";
+ generateColor(out);
+ out << "}";
+ }
+ else if(col != NULL)
+ {
+ if(col->getBrushStyle() >= 1)
+ {
+ out << ">{\\columncolor";
+ col->generateColor(out);
+ out << "}";
+ }
+ }
+ else if(row != NULL)
+ {
+ if(row->getBrushStyle() >= 1)
+ {
+ out << ">{\\columncolor";
+ row->generateColor(out);
+ out << "}";
+ }
+ }
+ if ( col != NULL )
+ out << "m{" << col->getWidth() << "pt}";
+ if(hasRightBorder())
+ out << "|";
+}
+
+void Format::generateTextFormat(TQTextStream& out, TQString text)
+{
+ if(getPenStyle() > 0)
+ {
+ float red = ((float) getPenColor().red()) / 255;
+ float green = ((float) getPenColor().green()) / 255;
+ float blue = ((float) getPenColor().blue()) / 255;
+
+ out << "\\textcolor[rgb]{"<< red << ", " << green <<
+ ", " << blue << "}{" << text << "}" << endl;
+ }
+}
+
+void Format::generateColor(TQTextStream& out)
+{
+ if(getBrushStyle() >= 1)
+ {
+ float red = ((float) getBrushColor().red()) / 255;
+ float green = ((float) getBrushColor().green()) / 255;
+ float blue = ((float) getBrushColor().blue()) / 255;
+
+ out << "[rgb]{" << red << ", " << green <<
+ ", " << blue << "}%" << endl;
+ }
+}