mirror of
https://github.com/ONLYOFFICE/core.git
synced 2026-07-19 17:42:40 +08:00
git-svn-id: svn://fileserver/activex/AVS/Sources/TeamlabOffice/trunk/ServerComponents@53593 954022d7-b5bf-4e40-9824-e11837661b57
104 lines
2.2 KiB
C++
104 lines
2.2 KiB
C++
|
|
// auto inserted precompiled begin
|
|
#include "precompiled_docxformat.h"
|
|
// auto inserted precompiled end
|
|
|
|
#include "TableRow.h"
|
|
#include "Exception/log_runtime_error.h"
|
|
|
|
namespace OOX
|
|
{
|
|
namespace Logic
|
|
{
|
|
TableRow::TableRow()
|
|
{
|
|
|
|
}
|
|
|
|
TableRow::~TableRow()
|
|
{
|
|
|
|
}
|
|
|
|
TableRow::TableRow(const XML::XNode& node)
|
|
{
|
|
fromXML(node);
|
|
}
|
|
|
|
const TableRow& TableRow::operator =(const XML::XNode& node)
|
|
{
|
|
fromXML(node);
|
|
return *this;
|
|
}
|
|
|
|
void TableRow::fromXML(const XML::XNode& node)
|
|
{
|
|
const XML::XElement element(node);
|
|
|
|
Properties = element.element("trPr");
|
|
int numCol = 0;
|
|
for (XML::const_element_iterator i = element.Elements.begin(); i != element.Elements.end(); ++i)
|
|
{
|
|
XML::XElement element(*i);
|
|
if (element.XName == "tc")
|
|
{
|
|
TableCell cell(*i);
|
|
cell.NumCol = numCol;
|
|
Cells->push_back(cell);
|
|
|
|
int count = cell.Properties->GridSpan.get_value_or(1);
|
|
|
|
// TODO, óáðàòü öèêë, ïîñòàâèòü âìåñòî àðèôìåòè÷åñêîå äåéñòâèå
|
|
while(count-- > 0)
|
|
numCol++;
|
|
}
|
|
else if (element.XName == "sdt")
|
|
{
|
|
if(element.element("sdtContent").exist())
|
|
{
|
|
if(element.element("sdtContent").element("tc").exist())
|
|
{
|
|
//TableCell cell(*i);
|
|
TableCell cell(element.element("sdtContent").element("tc"));
|
|
cell.NumCol = numCol;
|
|
Cells->push_back(cell);
|
|
|
|
int count = cell.Properties->GridSpan.get_value_or(1);
|
|
|
|
// TODO, óáðàòü öèêë, ïîñòàâèòü âìåñòî àðèôìåòè÷åñêîå äåéñòâèå
|
|
while(count-- > 0)
|
|
numCol++;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
const XML::XNode TableRow::toXML() const
|
|
{
|
|
return XML::XElement(ns.w + "tr", XML::Write(Properties) + XML::Write(Cells));
|
|
}
|
|
|
|
const TableCell TableRow::getCellByNumCol(const int num) const
|
|
{
|
|
BOOST_FOREACH(const TableCell& cell, *Cells)
|
|
{
|
|
if (cell.NumCol == num)
|
|
return cell;
|
|
}
|
|
throw log_runtime_error("bad num column");
|
|
}
|
|
|
|
const bool TableRow::isCellByNumCol(const int num) const
|
|
{
|
|
BOOST_FOREACH(const TableCell& cell, *Cells)
|
|
{
|
|
if (cell.NumCol == num)
|
|
return true;
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
} // namespace Logic
|
|
} // namespace OOX
|