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 <librevenge/librevenge.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 {
00052 m_columnSeparator.m_style=MWAWBorder::None;
00053 }
00055 virtual ~MWAWSection()
00056 {
00057 }
00062 void setColumns(int num, double width, librevenge::RVNGUnit widthUnit, double colSep=0);
00064 int numColumns() const
00065 {
00066 return m_columns.size() <= 1 ? 1 : int(m_columns.size());
00067 }
00069 bool hasSingleColumns() const
00070 {
00071 return m_columns.size() <= 1;
00072 }
00074 void addTo(librevenge::RVNGPropertyList &propList) const;
00076 void addColumnsTo(librevenge::RVNGPropertyListVector &propList) const;
00078 friend std::ostream &operator<<(std::ostream &o, MWAWSection const &sec);
00080 bool operator!=(MWAWSection const &sec) const
00081 {
00082 if (m_columns.size()!=sec.m_columns.size())
00083 return true;
00084 for (size_t c=0; c < m_columns.size(); c++) {
00085 if (m_columns[c] != sec.m_columns[c])
00086 return true;
00087 }
00088 if (m_columnSeparator != sec.m_columnSeparator)
00089 return true;
00090 if (m_balanceText!=sec.m_balanceText || m_backgroundColor!=sec.m_backgroundColor)
00091 return true;
00092 return false;
00093 }
00095 bool operator==(MWAWSection const &sec) const
00096 {
00097 return !operator!=(sec);
00098 }
00099
00101 std::vector<Column> m_columns;
00103 double m_width;
00105 MWAWBorder m_columnSeparator;
00107 bool m_balanceText;
00109 MWAWColor m_backgroundColor;
00110
00111 public:
00113 struct Column {
00115 Column() : m_width(0), m_widthUnit(librevenge::RVNG_INCH)
00116 {
00117 for (int i = 0; i < 4; i++)
00118 m_margins[i]=0;
00119 }
00121 bool addTo(librevenge::RVNGPropertyList &propList) const;
00123 friend std::ostream &operator<<(std::ostream &o, Column const &column);
00125 bool operator!=(Column const &col) const
00126 {
00127 if (m_width<col.m_width || m_width>col.m_width || m_widthUnit!=col.m_widthUnit)
00128 return true;
00129 for (int i = 0; i < 4; i++) {
00130 if (m_margins[i]<col.m_margins[i] || m_margins[i]>col.m_margins[i])
00131 return true;
00132 }
00133 return false;
00134 }
00136 bool operator==(Column const &col) const
00137 {
00138 return !operator!=(col);
00139 }
00140
00142 double m_width;
00144 librevenge::RVNGUnit m_widthUnit;
00146 double m_margins[4];
00147 };
00148 };
00149 #endif
00150