32#include "FilterInternal.h"
33#include "TableStyle.h"
34#include "DocumentElement.h"
40TableCellStyle::TableCellStyle(
const _SH_PropertyList &xPropList,
const char *psName) :
46void TableCellStyle::write(DocumentHandler &xHandler)
const
48 TagOpenElement styleOpen(
"style:style");
49 styleOpen.addAttribute(
"style:name", getName());
50 styleOpen.addAttribute(
"style:family",
"table-cell");
51 styleOpen.write(xHandler);
55 _SH_PropertyList stylePropList;
56 _SH_PropertyList::Iter i(mPropList);
57 for (i.rewind(); i.next();)
59 if (strlen(i.key()) > 2 && strncmp(i.key(),
"fo", 2) == 0)
60 stylePropList.insert(i.key(), i()->clone());
62 stylePropList.insert(
"fo:padding",
"0.0382inch");
63 xHandler.startElement(
"style:properties", stylePropList);
64 xHandler.endElement(
"style:properties");
66 xHandler.endElement(
"style:style");
69TableRowStyle::TableRowStyle(
const _SH_PropertyList &propList,
const char *psName) :
75void TableRowStyle::write(DocumentHandler &xHandler)
const
77 TagOpenElement styleOpen(
"style:style");
78 styleOpen.addAttribute(
"style:name", getName());
79 styleOpen.addAttribute(
"style:family",
"table-row");
80 styleOpen.write(xHandler);
82 TagOpenElement stylePropertiesOpen(
"style:properties");
83 if (mPropList[
"style:min-row-height"])
84 stylePropertiesOpen.addAttribute(
"style:min-row-height", mPropList[
"style:min-row-height"]->getStr());
85 else if (mPropList[
"style:row-height"])
86 stylePropertiesOpen.addAttribute(
"style:row-height", mPropList[
"style:row-height"]->getStr());
87 stylePropertiesOpen.write(xHandler);
88 xHandler.endElement(
"style:properties");
90 xHandler.endElement(
"style:style");
94TableStyle::TableStyle(
const _SH_PropertyList &xPropList,
const _SH_PropertyListVector &columns,
const char *psName) :
101TableStyle::~TableStyle()
103 typedef std::vector<TableCellStyle *>::iterator TCSVIter;
104 for (TCSVIter iterTableCellStyles = mTableCellStyles.begin() ; iterTableCellStyles != mTableCellStyles.end(); iterTableCellStyles++)
105 delete(*iterTableCellStyles);
109void TableStyle::write(DocumentHandler &xHandler)
const
111 TagOpenElement styleOpen(
"style:style");
112 styleOpen.addAttribute(
"style:name", getName());
113 styleOpen.addAttribute(
"style:family",
"table");
114 if (getMasterPageName())
115 styleOpen.addAttribute(
"style:master-page-name", getMasterPageName()->cstr());
116 styleOpen.write(xHandler);
118 TagOpenElement stylePropertiesOpen(
"style:properties");
119 if (mPropList[
"table:align"])
120 stylePropertiesOpen.addAttribute(
"table:align", mPropList[
"table:align"]->getStr());
121 if (mPropList[
"fo:margin-left"])
122 stylePropertiesOpen.addAttribute(
"fo:margin-left", mPropList[
"fo:margin-left"]->getStr());
123 if (mPropList[
"fo:margin-right"])
124 stylePropertiesOpen.addAttribute(
"fo:margin-right", mPropList[
"fo:margin-right"]->getStr());
125 if (mPropList[
"style:width"])
126 stylePropertiesOpen.addAttribute(
"style:width", mPropList[
"style:width"]->getStr());
127 if (mPropList[
"fo:break-before"])
128 stylePropertiesOpen.addAttribute(
"fo:break-before", mPropList[
"fo:break-before"]->getStr());
129 stylePropertiesOpen.write(xHandler);
131 xHandler.endElement(
"style:properties");
133 xHandler.endElement(
"style:style");
136 _SH_PropertyListVector::Iter j(mColumns);
137 for (j.rewind(); j.next();)
139 TagOpenElement styleOpen(
"style:style");
140 _SH_String sColumnName;
141 sColumnName.sprintf(
"%s.Column%i", getName().cstr(), i);
142 styleOpen.addAttribute(
"style:name", sColumnName);
143 styleOpen.addAttribute(
"style:family",
"table-column");
144 styleOpen.write(xHandler);
146 xHandler.startElement(
"style:properties", j());
147 xHandler.endElement(
"style:properties");
149 xHandler.endElement(
"style:style");
154 typedef std::vector<TableRowStyle *>::const_iterator TRSVIter;
155 for (TRSVIter iterTableRow = mTableRowStyles.begin() ; iterTableRow != mTableRowStyles.end(); iterTableRow++)
156 (*iterTableRow)->write(xHandler);
158 typedef std::vector<TableCellStyle *>::const_iterator TCSVIter;
159 for (TCSVIter iterTableCell = mTableCellStyles.begin() ; iterTableCell != mTableCellStyles.end(); iterTableCell++)
160 (*iterTableCell)->write(xHandler);