summaryrefslogtreecommitdiffstats
path: root/src/rtf2html/rtf_table.h
diff options
context:
space:
mode:
authortpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2010-03-01 19:17:32 +0000
committertpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2010-03-01 19:17:32 +0000
commite38d2351b83fa65c66ccde443777647ef5cb6cff (patch)
tree1897fc20e9f73a81c520a5b9f76f8ed042124883 /src/rtf2html/rtf_table.h
downloadtellico-e38d2351b83fa65c66ccde443777647ef5cb6cff.tar.gz
tellico-e38d2351b83fa65c66ccde443777647ef5cb6cff.zip
Added KDE3 version of Tellico
git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/applications/tellico@1097620 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'src/rtf2html/rtf_table.h')
-rw-r--r--src/rtf2html/rtf_table.h90
1 files changed, 90 insertions, 0 deletions
diff --git a/src/rtf2html/rtf_table.h b/src/rtf2html/rtf_table.h
new file mode 100644
index 0000000..927cc40
--- /dev/null
+++ b/src/rtf2html/rtf_table.h
@@ -0,0 +1,90 @@
+/* This is RTF to HTML converter, implemented as a text filter, generally.
+ Copyright (C) 2003 Valentin Lavrinenko, vlavrinenko@users.sourceforge.net
+
+ available at http://rtf2html.sf.net
+
+ Original available under the terms of the GNU LGPL2, and according
+ to those terms, relicensed under the GNU GPL2 for inclusion in Tellico */
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of version 2 of the GNU General Public License as *
+ * published by the Free Software Foundation; *
+ * *
+ ***************************************************************************/
+
+#ifndef __RTF_H__
+#define __RTF_H__
+
+#include "common.h"
+#include <vector>
+#include <cmath>
+#include <list>
+#include <cstdlib>
+
+namespace rtf {
+
+struct table_cell
+{
+ int Rowspan;
+ std::string Text;
+ table_cell() : Rowspan(0) {}
+};
+
+struct table_cell_def
+{
+ enum valign {valign_top, valign_bottom, valign_center};
+ bool BorderTop, BorderBottom, BorderLeft, BorderRight;
+ bool *ActiveBorder;
+ int Right, Left;
+ bool Merged, FirstMerged;
+ valign VAlign;
+ table_cell_def()
+ {
+ BorderTop=BorderBottom=BorderLeft=BorderRight=Merged=FirstMerged=false;
+ ActiveBorder=NULL;
+ Right=Left=0;
+ VAlign=valign_top;
+ }
+ bool right_equals(int x) { return x==Right; }
+ bool left_equals(int x) { return x==Left; }
+};
+
+template <class T>
+class killing_ptr_vector : public std::vector<T*>
+{
+ public:
+ ~killing_ptr_vector()
+ {
+ for (typename killing_ptr_vector<T>::iterator i=this->begin(); i!=this->end(); ++i)
+ delete *i;
+ }
+};
+
+typedef killing_ptr_vector<table_cell> table_cells;
+typedef killing_ptr_vector<table_cell_def> table_cell_defs;
+
+typedef std::list<table_cell_defs> table_cell_defs_list;
+
+struct table_row
+{
+ table_cells Cells;
+ table_cell_defs_list::iterator CellDefs;
+ int Height;
+ int Left;
+ table_row() : Height(-1000), Left(-1000) {}
+};
+
+class table : public killing_ptr_vector<table_row>
+{
+ private:
+ typedef killing_ptr_vector<table_row> base_class;
+ public:
+ table() : base_class() {}
+ std::string make();
+};
+
+}
+
+#endif