Skip to content

Commit

Permalink
add additional props sdt
Browse files Browse the repository at this point in the history
  • Loading branch information
ElenaSubbotina committed Feb 10, 2025
1 parent ad301b6 commit 62450ee
Show file tree
Hide file tree
Showing 6 changed files with 72 additions and 41 deletions.
10 changes: 10 additions & 0 deletions OOXML/Binary/Document/BinReader/Readers.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -9720,6 +9720,16 @@ int Binary_DocumentTableReader::ReadSdtPr(BYTE type, long length, void* poResult
pSdtPr->m_oComplexFormPr.Init();
READ1_DEF(length, res, this->ReadSdtComplexFormPr, pSdtPr->m_oComplexFormPr.GetPointer());
}
else if (c_oSerSdt::Border == type)
{
pSdtPr->m_oBorder.Init();
READ2_DEF(length, res, oBinary_pPrReader.ReadBorder, pSdtPr->m_oBorder.GetPointer());
}
else if (c_oSerSdt::Shd == type)
{
pSdtPr->m_oShd.Init();
READ2_DEF(length, res, oBinary_CommonReader2.ReadShdComplexType, pSdtPr->m_oShd.GetPointer());
}
else
res = c_oSerConstants::ReadUnknown;
return res;
Expand Down
4 changes: 3 additions & 1 deletion OOXML/Binary/Document/BinWriter/BinReaderWriterDefines.h
Original file line number Diff line number Diff line change
Expand Up @@ -1305,7 +1305,9 @@ extern int g_nCurFormatVersion;
StoreItemChecksum = 85,
ComplexFormPr = 90,
ComplexFormPrType = 91,
OformMaster = 92
OformMaster = 92,
Border = 93,
Shd = 94
};}
namespace c_oSerFFData{enum c_oSerFFData
{
Expand Down
12 changes: 12 additions & 0 deletions OOXML/Binary/Document/BinWriter/BinWriters.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -8075,6 +8075,18 @@ void BinaryDocumentTableWriter::WriteSdtPr(const OOX::Logic::CSdtPr& oStdPr)
WriteSdtComplexFormPr(oStdPr.m_oComplexFormPr.get());
m_oBcw.WriteItemEnd(nCurPos);
}
if (oStdPr.m_oBorder.IsInit())
{
nCurPos = m_oBcw.WriteItemStart(c_oSerSdt::Border);
m_oBcw.WriteBorder(oStdPr.m_oBorder.get());
m_oBcw.WriteItemEnd(nCurPos);
}
if (oStdPr.m_oShd.IsInit())
{
nCurPos = m_oBcw.WriteItemStart(c_oSerSdt::Shd);
m_oBcw.WriteShd(oStdPr.m_oShd.get());
m_oBcw.WriteItemEnd(nCurPos);
}
}
void BinaryDocumentTableWriter::WriteSdtPicture(const OOX::Logic::CSdtPicture& oSdtPicture)
{
Expand Down
10 changes: 10 additions & 0 deletions OOXML/DocxFormat/Logic/Sdt.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1318,6 +1318,10 @@ namespace OOX
}
if (oNode.GetNode(L"w15:color", oChild))
m_oColor = oChild;
if (oNode.GetNode(L"w:border", oChild))
m_oBorder = oChild;
if (oNode.GetNode(L"w:shd", oChild))
m_oShd = oChild;

if (oNode.GetNode(L"w:dataBinding", oChild))
m_oDataBinding = oChild;
Expand Down Expand Up @@ -1434,6 +1438,10 @@ namespace OOX
}
else if (L"color" == sName)
m_oColor = oReader;
else if (L"border" == sName)
m_oBorder = oReader;
else if (L"shd" == sName)
m_oShd = oReader;
else if (L"dataBinding" == sName)
m_oDataBinding = oReader;
else if (sdttypeUnknown == m_eType && L"date" == sName)
Expand Down Expand Up @@ -1627,6 +1635,8 @@ namespace OOX
WritingElement_WriteNode_2(m_oFormPr);
WritingElement_WriteNode_2(m_oTextFormPr);
WritingElement_WriteNode_2(m_oComplexFormPr);
WritingElement_WriteNode_1(L"<w:border ", m_oBorder);
WritingElement_WriteNode_1(L"<w:shd ", m_oShd);

return sResult;
}
Expand Down
2 changes: 2 additions & 0 deletions OOXML/DocxFormat/Logic/Sdt.h
Original file line number Diff line number Diff line change
Expand Up @@ -583,6 +583,8 @@ namespace OOX
nullable<CTextFormPr> m_oTextFormPr; //Not from specification
nullable<CSdtPicture> m_oPicture; //Not from specification
nullable<CComplexFormPr> m_oComplexFormPr; // Not from specification
nullable<ComplexTypes::Word::CBorder> m_oBorder; // Not from specification
nullable<ComplexTypes::Word::CShading> m_oShd; // Not from specification
};

//--------------------------------------------------------------------------------
Expand Down
75 changes: 35 additions & 40 deletions OOXML/DocxFormat/Logic/Table.h
Original file line number Diff line number Diff line change
Expand Up @@ -230,14 +230,12 @@ namespace OOX
void ReadAttributes(XmlUtils::CXmlLiteReader& oReader);

public:
// Attributes
nullable<std::wstring > m_sAuthor;
nullable<SimpleTypes::CDateTime > m_oDate;
nullable<SimpleTypes::CDecimalNumber > m_oId;
nullable<std::wstring > m_sUserId;

// Childs
nullable<CTblPrEx > m_pTblPrEx;
nullable<std::wstring> m_sAuthor;
nullable<SimpleTypes::CDateTime> m_oDate;
nullable<SimpleTypes::CDecimalNumber> m_oId;
nullable<std::wstring> m_sUserId;

nullable<CTblPrEx> m_pTblPrEx;
};

//--------------------------------------------------------------------------------
Expand Down Expand Up @@ -275,7 +273,7 @@ namespace OOX
fromXML( (XmlUtils::CXmlLiteReader&)oReader );
return *this;
}
virtual void fromXML(XmlUtils::CXmlNode& oNode)
virtual void fromXML(XmlUtils::CXmlNode& oNode)
{
XmlUtils::CXmlNode oChild;

Expand All @@ -293,7 +291,7 @@ namespace OOX

WritingElement_ReadNode( oNode, oChild, L"w:tblW", m_oTblW );
}
virtual void fromXML(XmlUtils::CXmlLiteReader& oReader)
virtual void fromXML(XmlUtils::CXmlLiteReader& oReader)
{
if ( oReader.IsEmptyNode() )
return;
Expand All @@ -315,23 +313,23 @@ namespace OOX
else if ( L"w:tblW" == sName ) m_oTblW = oReader;
}
}
virtual std::wstring toXML() const
virtual std::wstring toXML() const
{
std::wstring sResult = L"<w:tblPrEx>";

WritingElement_WriteNode_1( L"<w:jc ", m_oJc );
WritingElement_WriteNode_1( L"<w:shd ", m_oShd );
WritingElement_WriteNode_1( L"<w:jc ", m_oJc );
WritingElement_WriteNode_1( L"<w:shd ", m_oShd );
WritingElement_WriteNode_2( m_oTblBorders );
WritingElement_WriteNode_2( m_oTblCellMar );
WritingElement_WriteNode_1( L"<w:tblCellSpacing ", m_oTblCellSpacing );
WritingElement_WriteNode_1( L"<w:tblInd ", m_oTblInd );
WritingElement_WriteNode_1( L"<w:tblLayout ", m_oTblLayout );
WritingElement_WriteNode_1( L"<w:tblLook ", m_oTblLook );
WritingElement_WriteNode_1( L"<w:tblInd ", m_oTblInd );
WritingElement_WriteNode_1( L"<w:tblLayout ", m_oTblLayout );
WritingElement_WriteNode_1( L"<w:tblLook ", m_oTblLook );

if ( !m_bTblPrExChange && m_oTblPrExChange.IsInit() )
sResult += m_oTblPrExChange->toXML();

WritingElement_WriteNode_1( L"<w:tblW ", m_oTblW );
WritingElement_WriteNode_1( L"<w:tblW ", m_oTblW );

sResult += L"</w:tblPrEx>";

Expand All @@ -342,20 +340,18 @@ namespace OOX
return et_w_tblPrEx;
}


bool m_bTblPrExChange;

// Childs
nullable<ComplexTypes::Word::CJcTable > m_oJc;
nullable<ComplexTypes::Word::CShading > m_oShd;
nullable<OOX::Logic::CTblBorders > m_oTblBorders;
nullable<OOX::Logic::CTblCellMar > m_oTblCellMar;
nullable<ComplexTypes::Word::CTblWidth > m_oTblCellSpacing;
nullable<ComplexTypes::Word::CTblWidth > m_oTblInd;
nullable<ComplexTypes::Word::CTblLayoutType > m_oTblLayout;
nullable<ComplexTypes::Word::CTblLook > m_oTblLook;
nullable<OOX::Logic::CTblPrExChange > m_oTblPrExChange;
nullable<ComplexTypes::Word::CTblWidth > m_oTblW;
bool m_bTblPrExChange;

nullable<ComplexTypes::Word::CJcTable> m_oJc;
nullable<ComplexTypes::Word::CShading> m_oShd;
nullable<OOX::Logic::CTblBorders> m_oTblBorders;
nullable<OOX::Logic::CTblCellMar> m_oTblCellMar;
nullable<ComplexTypes::Word::CTblWidth> m_oTblCellSpacing;
nullable<ComplexTypes::Word::CTblWidth> m_oTblInd;
nullable<ComplexTypes::Word::CTblLayoutType> m_oTblLayout;
nullable<ComplexTypes::Word::CTblLook> m_oTblLook;
nullable<OOX::Logic::CTblPrExChange> m_oTblPrExChange;
nullable<ComplexTypes::Word::CTblWidth> m_oTblW;
};

//--------------------------------------------------------------------------------
Expand All @@ -379,10 +375,10 @@ namespace OOX

void CreateElements(XmlUtils::CXmlLiteReader &oReader, int Depth);

int m_nCountRow;
int m_nCountRow;

nullable<OOX::Logic::CTblGrid> m_oTblGrid;
OOX::Logic::CTableProperty* m_oTableProperties; //todooo - выкинуть из m_arrItems, переделать на nullable<>
nullable<OOX::Logic::CTblGrid> m_oTblGrid;
OOX::Logic::CTableProperty* m_oTableProperties; //todooo - выкинуть из m_arrItems, переделать на nullable<>
};

//--------------------------------------------------------------------------------
Expand All @@ -409,15 +405,14 @@ namespace OOX
void ReadAttributes(XmlUtils::CXmlLiteReader& oReader);

public:
int m_nCountCell;
int m_nCountCell;

nullable<SimpleTypes::CLongHexNumber> m_oRsidDel;
nullable<SimpleTypes::CLongHexNumber> m_oRsidR;
nullable<SimpleTypes::CLongHexNumber> m_oRsidRPr;
nullable<SimpleTypes::CLongHexNumber> m_oRsidTr;

// Childs
OOX::Logic::CTableRowProperties* m_pTableRowProperties; //todooo - выкинуть из m_arrItems, переделать на nullable<>
OOX::Logic::CTableRowProperties* m_pTableRowProperties; //todooo - выкинуть из m_arrItems, переделать на nullable<>
};

//--------------------------------------------------------------------------------
Expand All @@ -444,9 +439,9 @@ namespace OOX
void ReadAttributes(XmlUtils::CXmlLiteReader& oReader);

public:
int m_nNumCol; // Номер колонки
nullable<std::wstring > m_sId;
OOX::Logic::CTableCellProperties* m_pTableCellProperties; //todooo - выкинуть из m_arrItems, переделать на nullable<>
int m_nNumCol; // Номер колонки
nullable<std::wstring> m_sId;
OOX::Logic::CTableCellProperties* m_pTableCellProperties; //todooo - выкинуть из m_arrItems, переделать на nullable<>
};

} // namespace Logic
Expand Down

0 comments on commit 62450ee

Please sign in to comment.