Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036 #ifndef _WPXTABLE_H
00037 #define _WPXTABLE_H
00038 #include <vector>
00039 #include <stdio.h>
00040 #include "libwpd_types.h"
00041
00042 typedef struct _WPXTableCell WPXTableCell;
00043
00044 struct _WPXTableCell
00045 {
00046 _WPXTableCell(uint8_t colSpan, uint8_t rowSpan, uint8_t borderBits);
00047 uint8_t m_colSpan;
00048 uint8_t m_rowSpan;
00049 uint8_t m_borderBits;
00050 };
00051
00052 class WPXTable
00053 {
00054 public:
00055 WPXTable() : m_tableRows() {}
00056 ~WPXTable();
00057 void insertRow();
00058 void insertCell(uint8_t colSpan, uint8_t rowSpan, uint8_t borderBits);
00059 const WPXTableCell *getCell(size_t i, size_t j)
00060 {
00061 return (m_tableRows[i])[j];
00062 }
00063 void makeBordersConsistent();
00064 void _makeCellBordersConsistent(WPXTableCell *cell, std::vector<WPXTableCell *> &adjacentCells,
00065 int adjacencyBitCell, int adjacencyBitBoundCells);
00066 std::vector<WPXTableCell *> _getCellsBottomAdjacent(int i, int j);
00067 std::vector<WPXTableCell *> _getCellsRightAdjacent(int i, int j);
00068
00069 const std::vector< std::vector<WPXTableCell *> > &getRows() const
00070 {
00071 return m_tableRows;
00072 }
00073 bool isEmpty() const
00074 {
00075 return m_tableRows.empty();
00076 }
00077
00078 private:
00079 std::vector< std::vector<WPXTableCell *> > m_tableRows;
00080 };
00081
00082 class WPXTableList
00083 {
00084 public:
00085 WPXTableList();
00086 WPXTableList(const WPXTableList &);
00087 WPXTableList &operator=(const WPXTableList &tableList);
00088 virtual ~WPXTableList();
00089
00090 WPXTable *operator[](unsigned long i)
00091 {
00092 return (*m_tableList)[i];
00093 }
00094 void add(WPXTable *table)
00095 {
00096 m_tableList->push_back(table);
00097 }
00098
00099 private:
00100 void release();
00101 void acquire(int *refCount, std::vector<WPXTable *> *tableList);
00102 int *getRef() const
00103 {
00104 return m_refCount;
00105 }
00106 std::vector<WPXTable *> *get() const
00107 {
00108 return m_tableList;
00109 }
00110
00111 std::vector<WPXTable *> *m_tableList;
00112 int *m_refCount;
00113 };
00114 #endif
00115