Skip to content

Commit

Permalink
.
Browse files Browse the repository at this point in the history
  • Loading branch information
ElenaSubbotina committed Feb 14, 2023
1 parent 5714524 commit 1fbbabe
Show file tree
Hide file tree
Showing 4 changed files with 165 additions and 110 deletions.
31 changes: 14 additions & 17 deletions OOXML/Binary/Sheets/Reader/ChartFromToBinary.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1875,9 +1875,8 @@ namespace BinXlsxRW
CT_ManualLayout* poVal = static_cast<CT_ManualLayout*>(poResult);
if(c_oserct_manuallayoutLAYOUTTARGET == type)
{
CT_LayoutTarget* pNewElem = new CT_LayoutTarget;
READ1_DEF(length, res, this->ReadCT_LayoutTarget, pNewElem);
poVal->m_layoutTarget = pNewElem;
poVal->m_layoutTarget.Init();
READ1_DEF(length, res, this->ReadCT_LayoutTarget, poVal->m_layoutTarget.GetPointer());
}
else if(c_oserct_manuallayoutXMODE == type)
{
Expand Down Expand Up @@ -1940,13 +1939,15 @@ namespace BinXlsxRW
int BinaryChartReader::ReadCT_LayoutTarget(BYTE type, long length, void* poResult)
{
int res = c_oSerConstants::ReadOk;
CT_LayoutTarget* poVal = static_cast<CT_LayoutTarget*>(poResult);
CLayoutTarget* poVal = static_cast<CLayoutTarget*>(poResult);

if(c_oserct_layouttargetVAL == type)
{
ST_LayoutTarget* pNewElem = new ST_LayoutTarget;
*pNewElem = (ST_LayoutTarget)m_oBufferedStream.GetUChar();
;
poVal->m_val = pNewElem;
poVal->SetValueFromByte(m_oBufferedStream.GetUChar());
//ST_LayoutTarget* pNewElem = new ST_LayoutTarget;
//*pNewElem = (ST_LayoutTarget)m_oBufferedStream.GetUChar();
//;
//poVal->m_val = pNewElem;
}
else
res = c_oSerConstants::ReadUnknown;
Expand Down Expand Up @@ -8272,7 +8273,7 @@ namespace BinXlsxRW
}
void BinaryChartWriter::WriteCT_ManualLayout(CT_ManualLayout& oVal)
{
if(NULL != oVal.m_layoutTarget)
if(oVal.m_layoutTarget.IsInit())
{
int nCurPos = m_oBcw.WriteItemStart(c_oserct_manuallayoutLAYOUTTARGET);
WriteCT_LayoutTarget(*oVal.m_layoutTarget);
Expand Down Expand Up @@ -8333,15 +8334,11 @@ namespace BinXlsxRW
m_oBcw.WriteItemEnd(nCurPos);
}
}
void BinaryChartWriter::WriteCT_LayoutTarget(CT_LayoutTarget& oVal)
void BinaryChartWriter::WriteCT_LayoutTarget(CLayoutTarget& oVal)
{
if(NULL != oVal.m_val)
{
int nCurPos = m_oBcw.WriteItemStart(c_oserct_layouttargetVAL);
int nVal = (int)(*oVal.m_val);
m_oBcw.m_oStream.WriteBYTE(*&nVal);
m_oBcw.WriteItemEnd(nCurPos);
}
int nCurPos = m_oBcw.WriteItemStart(c_oserct_layouttargetVAL);
m_oBcw.m_oStream.WriteBYTE(oVal.GetValue());
m_oBcw.WriteItemEnd(nCurPos);
}
void BinaryChartWriter::WriteCT_LayoutMode(CT_LayoutMode& oVal)
{
Expand Down
2 changes: 1 addition & 1 deletion OOXML/Binary/Sheets/Reader/ChartFromToBinary.h
Original file line number Diff line number Diff line change
Expand Up @@ -347,7 +347,7 @@ namespace BinXlsxRW
void WriteCT_Legend(OOX::Spreadsheet::CT_Legend& oVal);
void WriteCT_Layout(OOX::Spreadsheet::CT_Layout& oVal);
void WriteCT_ManualLayout(OOX::Spreadsheet::CT_ManualLayout& oVal);
void WriteCT_LayoutTarget(OOX::Spreadsheet::CT_LayoutTarget& oVal);
void WriteCT_LayoutTarget(OOX::Spreadsheet::CLayoutTarget& oVal);
void WriteCT_LayoutMode(OOX::Spreadsheet::CT_LayoutMode& oVal);
void WriteCT_Double(OOX::Spreadsheet::CT_Double& oVal);
void WriteCT_DTable(OOX::Spreadsheet::CT_DTable& oVal);
Expand Down
174 changes: 97 additions & 77 deletions OOXML/XlsxFormat/Chart/ChartSerialize.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -130,28 +130,28 @@ namespace OOX
bRes=false;
return bRes;
}
bool FromXml_ST_LayoutTarget(std::wstring& val, ST_LayoutTarget& eOut)
{
bool bRes = true;
if(_T("inner")==val)
eOut=st_layouttargetINNER;
else if(_T("outer")==val)
eOut=st_layouttargetOUTER;
else
bRes=false;
return bRes;
}
bool ToXml_ST_LayoutTarget(ST_LayoutTarget& val, std::wstring& sOut)
{
bool bRes = true;
if(st_layouttargetINNER==val)
sOut=_T("inner");
else if(st_layouttargetOUTER==val)
sOut=_T("outer");
else
bRes=false;
return bRes;
}
//bool FromXml_ST_LayoutTarget(std::wstring& val, ST_LayoutTarget& eOut)
//{
// bool bRes = true;
// if(_T("inner")==val)
// eOut=st_layouttargetINNER;
// else if(_T("outer")==val)
// eOut=st_layouttargetOUTER;
// else
// bRes=false;
// return bRes;
//}
//bool ToXml_ST_LayoutTarget(ST_LayoutTarget& val, std::wstring& sOut)
//{
// bool bRes = true;
// if(st_layouttargetINNER==val)
// sOut=_T("inner");
// else if(st_layouttargetOUTER==val)
// sOut=_T("outer");
// else
// bRes=false;
// return bRes;
//}
bool FromXml_ST_LayoutMode(std::wstring& val, ST_LayoutMode& eOut)
{
bool bRes = true;
Expand Down Expand Up @@ -2499,7 +2499,7 @@ xmlns:c14=\"http://schemas.microsoft.com/office/drawing/2007/8/2/chart\"");
EElementType CT_Layout::getType(){return et_ct_layout;}
CT_ManualLayout::CT_ManualLayout()
{
m_layoutTarget = NULL;
//m_layoutTarget = NULL;
m_xMode = NULL;
m_yMode = NULL;
m_wMode = NULL;
Expand All @@ -2512,8 +2512,8 @@ xmlns:c14=\"http://schemas.microsoft.com/office/drawing/2007/8/2/chart\"");
}
CT_ManualLayout::~CT_ManualLayout()
{
if(NULL != m_layoutTarget)
delete m_layoutTarget;
//if(NULL != m_layoutTarget)
// delete m_layoutTarget;
if(NULL != m_xMode)
delete m_xMode;
if(NULL != m_yMode)
Expand All @@ -2533,7 +2533,8 @@ xmlns:c14=\"http://schemas.microsoft.com/office/drawing/2007/8/2/chart\"");
if(NULL != m_extLst)
delete m_extLst;
}
void CT_ManualLayout::fromXML(XmlUtils::CXmlLiteReader& oReader){
void CT_ManualLayout::fromXML(XmlUtils::CXmlLiteReader& oReader)
{
if ( oReader.IsEmptyNode() )
return;
int nParentDepth = oReader.GetDepth();
Expand All @@ -2542,9 +2543,10 @@ xmlns:c14=\"http://schemas.microsoft.com/office/drawing/2007/8/2/chart\"");
std::wstring sName = XmlUtils::GetNameNoNS(oReader.GetName());
if(_T("layoutTarget") == sName)
{
CT_LayoutTarget* pNewElem = new CT_LayoutTarget;
pNewElem->fromXML(oReader);
m_layoutTarget = pNewElem;
//CT_LayoutTarget* pNewElem = new CT_LayoutTarget;
//pNewElem->fromXML(oReader);
//m_layoutTarget = pNewElem;
m_layoutTarget = oReader;
}
else if(_T("xMode") == sName)
{
Expand Down Expand Up @@ -2602,15 +2604,14 @@ xmlns:c14=\"http://schemas.microsoft.com/office/drawing/2007/8/2/chart\"");
}
}
}
void CT_ManualLayout::toXML(const std::wstring& sNodeName, NSStringUtils::CStringBuilder& writer) const{
void CT_ManualLayout::toXML(const std::wstring& sNodeName, NSStringUtils::CStringBuilder& writer) const
{
writer.WriteString(L"<");
writer.WriteString(sNodeName);
writer.WriteString(L">");
if(NULL != m_layoutTarget)
{
std::wstring sNodeName = _T("c:layoutTarget");
m_layoutTarget->toXML(sNodeName, writer);
}

m_layoutTarget.toXML(L"c:layoutTarget", writer);

if(NULL != m_xMode)
{
std::wstring sNodeName = _T("c:xMode");
Expand Down Expand Up @@ -2661,52 +2662,71 @@ xmlns:c14=\"http://schemas.microsoft.com/office/drawing/2007/8/2/chart\"");
writer.WriteString(L">");
}
EElementType CT_ManualLayout::getType(){return et_ct_manuallayout;}
CT_LayoutTarget::CT_LayoutTarget()
{
/*m_val = new ST_LayoutTarget;
*m_val = st_layouttargetOUTER;*/
m_val = NULL;
}
CT_LayoutTarget::~CT_LayoutTarget()
{
if(NULL != m_val)
delete m_val;
}
void CT_LayoutTarget::fromXML(XmlUtils::CXmlLiteReader& oReader){
ReadAttributes(oReader);

if(!oReader.IsEmptyNode())
oReader.ReadTillEnd();
}
void CT_LayoutTarget::toXML(const std::wstring& sNodeName, NSStringUtils::CStringBuilder& writer) const{
writer.WriteString(L"<");
writer.WriteString(sNodeName);
if(NULL != m_val)
{
std::wstring sEnumVal;
if(ToXml_ST_LayoutTarget(*m_val, sEnumVal))
{
WritingStringAttrString(L"val", sEnumVal);
}
}
writer.WriteString(L"/>");
}
EElementType CT_LayoutTarget::getType(){return et_ct_layouttarget;}
void CT_LayoutTarget::ReadAttributes(XmlUtils::CXmlLiteReader& oReader)
ST_LayoutTarget CLayoutTarget::FromString(const std::wstring &sValue)
{
WritingElement_ReadAttributes_Start_No_NS( oReader )
if(_T("val") == wsName)
{
ST_LayoutTarget* pNewElem = new ST_LayoutTarget;
ST_LayoutTarget eVal;
if ((L"inner") == sValue) this->m_eValue = st_layouttargetINNER;
else if ((L"outer") == sValue) this->m_eValue = st_layouttargetOUTER;
else this->m_eValue = st_layouttargetINNER;

std::wstring sNodeName = oReader.GetText();
if(FromXml_ST_LayoutTarget(sNodeName, eVal))
*pNewElem = eVal;
m_val = pNewElem;
}
WritingElement_ReadAttributes_End_No_NS( oReader )
return this->m_eValue;
}

std::wstring CLayoutTarget::ToString() const
{
switch (this->m_eValue)
{
case st_layouttargetINNER: return (L"inner");
case st_layouttargetOUTER: return (L"outer");
default: return (L"inner");
}
}
//CT_LayoutTarget::CT_LayoutTarget()
//{
// /*m_val = new ST_LayoutTarget;
// *m_val = st_layouttargetOUTER;*/
// m_val = NULL;
//}
//CT_LayoutTarget::~CT_LayoutTarget()
//{
// if(NULL != m_val)
// delete m_val;
//}
//void CT_LayoutTarget::fromXML(XmlUtils::CXmlLiteReader& oReader){
// ReadAttributes(oReader);

// if(!oReader.IsEmptyNode())
// oReader.ReadTillEnd();
//}
//void CT_LayoutTarget::toXML(const std::wstring& sNodeName, NSStringUtils::CStringBuilder& writer) const{
// writer.WriteString(L"<");
// writer.WriteString(sNodeName);
// if(NULL != m_val)
// {
// std::wstring sEnumVal;
// if(ToXml_ST_LayoutTarget(*m_val, sEnumVal))
// {
// WritingStringAttrString(L"val", sEnumVal);
// }
// }
// writer.WriteString(L"/>");
//}
//EElementType CT_LayoutTarget::getType(){return et_ct_layouttarget;}
//void CT_LayoutTarget::ReadAttributes(XmlUtils::CXmlLiteReader& oReader)
//{
// WritingElement_ReadAttributes_Start_No_NS( oReader )
// if(_T("val") == wsName)
// {
// ST_LayoutTarget* pNewElem = new ST_LayoutTarget;
// ST_LayoutTarget eVal;

// std::wstring sNodeName = oReader.GetText();
// if(FromXml_ST_LayoutTarget(sNodeName, eVal))
// *pNewElem = eVal;
// m_val = pNewElem;
// }
// WritingElement_ReadAttributes_End_No_NS( oReader )
//}
CT_LayoutMode::CT_LayoutMode()
{
/*m_val = new ST_LayoutMode;
Expand Down
68 changes: 53 additions & 15 deletions OOXML/XlsxFormat/Chart/ChartSerialize.h
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@

#include "../WritingElement.h"
#include "../../Base/Nullable.h"
#include "../../Common/SimpleTypes_Base.h"

namespace PPTX
{
Expand Down Expand Up @@ -338,7 +339,6 @@ namespace OOX
class CT_Legend;
class CT_Layout;
class CT_ManualLayout;
class CT_LayoutTarget;
class CT_LayoutMode;
class CT_Double;
class CT_DTable;
Expand Down Expand Up @@ -735,11 +735,48 @@ namespace OOX
void toXML(const std::wstring& sNodeName, NSStringUtils::CStringBuilder& writer) const;
EElementType getType();
};

DEFINE_SIMPLE_TYPE(CLayoutTarget, ST_LayoutTarget, st_layouttargetINNER);

template<class T>
class nullableComplexVal : public nullable<T>
{
public:
nullableComplexVal() : nullable<T>()
{
}
nullableComplexVal(XmlUtils::CXmlLiteReader& oReader)
{
if (oReader.IsValid())
{
T* pType = new T();

WritingElement_ReadAttributes_Start_No_NS(oReader)
WritingElement_ReadAttributes_ReadSingle(oReader, L"val", *pType)
WritingElement_ReadAttributes_End_No_NS(oReader)

if (!oReader.IsEmptyNode())
oReader.ReadTillEnd();

this->m_pPointer = pType;
}
else
this->m_pPointer = NULL;
}
void toXML(const std::wstring& sNodeName, NSStringUtils::CStringBuilder& writer) const
{
if (this->m_pPointer)
{
writer.WriteString(L"<" + sNodeName + L" val=\"" + this->m_pPointer->ToString() + L"\"/>");
}
}
};
class CT_ManualLayout
{
public:
//Member
CT_LayoutTarget* m_layoutTarget;
////Member
//CT_LayoutTarget* m_layoutTarget;
nullableComplexVal<CLayoutTarget> m_layoutTarget;
//Member
CT_LayoutMode* m_xMode;
//Member
Expand All @@ -764,18 +801,19 @@ namespace OOX
void toXML(const std::wstring& sNodeName, NSStringUtils::CStringBuilder& writer) const;
EElementType getType();
};
class CT_LayoutTarget
{
public:
//Attribute
ST_LayoutTarget* m_val;
CT_LayoutTarget();
~CT_LayoutTarget();
void fromXML(XmlUtils::CXmlLiteReader& oReader);
void toXML(const std::wstring& sNodeName, NSStringUtils::CStringBuilder& writer) const;
EElementType getType();
private: void ReadAttributes(XmlUtils::CXmlLiteReader& oReader);
};

//class CT_LayoutTarget
//{
//public:
// //Attribute
// ST_LayoutTarget* m_val;
// CT_LayoutTarget();
// ~CT_LayoutTarget();
// void fromXML(XmlUtils::CXmlLiteReader& oReader);
// void toXML(const std::wstring& sNodeName, NSStringUtils::CStringBuilder& writer) const;
// EElementType getType();
//private: void ReadAttributes(XmlUtils::CXmlLiteReader& oReader);
//};
class CT_LayoutMode
{
public:
Expand Down

0 comments on commit 1fbbabe

Please sign in to comment.