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 #ifndef MWAW_SECTION_H
00035 #define MWAW_SECTION_H
00036
00037 #include <iostream>
00038 #include <vector>
00039
00040 #include <libwpd/libwpd.h>
00041
00042 #include "libmwaw_internal.hxx"
00043
00045 class MWAWSection
00046 {
00047 public:
00048 struct Column;
00050 MWAWSection() : m_columns(), m_width(0), m_columnSeparator(), m_balanceText(false), m_backgroundColor(MWAWColor::white()) {
00051 m_columnSeparator.m_style=MWAWBorder::None;
00052 }
00054 virtual ~MWAWSection() {
00055 }
00060 void setColumns(int num, double width, WPXUnit widthUnit, double colSep=0);
00062 int numColumns() const {
00063 return m_columns.size() <= 1 ? 1 : int(m_columns.size());
00064 }
00066 bool hasSingleColumns() const {
00067 return m_columns.size() <= 1;
00068 }
00070 void addTo(WPXPropertyList &propList) const;
00072 void addColumnsTo(WPXPropertyListVector &propList) const;
00074 friend std::ostream &operator<<(std::ostream &o, MWAWSection const &sec);
00076 bool operator!=(MWAWSection const &sec) const {
00077 if (m_columns.size()!=sec.m_columns.size())
00078 return true;
00079 for (size_t c=0; c < m_columns.size(); c++) {
00080 if (m_columns[c] != sec.m_columns[c])
00081 return true;
00082 }
00083 if (m_columnSeparator != sec.m_columnSeparator)
00084 return true;
00085 if (m_balanceText!=sec.m_balanceText || m_backgroundColor!=sec.m_backgroundColor)
00086 return true;
00087 return false;
00088 }
00090 bool operator==(MWAWSection const &sec) const {
00091 return !operator!=(sec);
00092 }
00093
00095 std::vector<Column> m_columns;
00097 double m_width;
00099 MWAWBorder m_columnSeparator;
00101 bool m_balanceText;
00103 MWAWColor m_backgroundColor;
00104
00105 public:
00107 struct Column {
00109 Column() : m_width(0), m_widthUnit(WPX_INCH) {
00110 for (int i = 0; i < 4; i++)
00111 m_margins[i]=0;
00112 }
00114 bool addTo(WPXPropertyList &propList) const;
00116 friend std::ostream &operator<<(std::ostream &o, Column const &column);
00118 bool operator!=(Column const &col) const {
00119 if (m_width<col.m_width || m_width>col.m_width || m_widthUnit!=col.m_widthUnit)
00120 return true;
00121 for (int i = 0; i < 4; i++) {
00122 if (m_margins[i]<col.m_margins[i] || m_margins[i]>col.m_margins[i])
00123 return true;
00124 }
00125 return false;
00126 }
00128 bool operator==(Column const &col) const {
00129 return !operator!=(col);
00130 }
00131
00133 double m_width;
00135 WPXUnit m_widthUnit;
00137 double m_margins[4];
00138 };
00139 };
00140 #endif
00141