Commit bf33aed8 authored by ElenaSubbotina's avatar ElenaSubbotina

fix convert oox group shape to vml group shape

parent 5869c7a0
...@@ -395,7 +395,6 @@ public: ...@@ -395,7 +395,6 @@ public:
SetPen (root); SetPen (root);
SetBrush (root); SetBrush (root);
//return m_pShape->LoadFromXML(xml);
return ((CPPTShape*)m_pShape)->LoadFromXML(root); return ((CPPTShape*)m_pShape)->LoadFromXML(root);
} }
#endif #endif
...@@ -439,20 +438,20 @@ public: ...@@ -439,20 +438,20 @@ public:
XmlUtils::CXmlNode oNodeTemplate; XmlUtils::CXmlNode oNodeTemplate;
if (oNodePict.GetNode(_T("stroke"), oNodeTemplate)) if (oNodePict.GetNode(_T("stroke"), oNodeTemplate))
{ {
std::wstring strColor = oNodeTemplate.GetAttributeOrValue(_T("strokecolor")); std::wstring strColor = oNodeTemplate.GetAttributeOrValue(_T("strokecolor"));
//if (strColor != _T("")) //if (strColor != _T(""))
// m_oPen.Color.FromString(strColor); // m_oPen.Color.FromString(strColor);
//std::wstring strSize = oNodeTemplate.GetAttributeOrValue(_T("strokeweight")); //std::wstring strSize = oNodeTemplate.GetAttributeOrValue(_T("strokeweight"));
//if (strSize != _T("")) //if (strSize != _T(""))
// m_oPen.Size = XmlUtils::GetDouble(strSize); // m_oPen.Size = XmlUtils::GetDouble(strSize);
//std::wstring strStroke = oNodeTemplate.GetAttributeOrValue(_T("stroked")); //std::wstring strStroke = oNodeTemplate.GetAttributeOrValue(_T("stroked"));
//if (strStroke != _T("")) //if (strStroke != _T(""))
// m_oPen.Alpha = 0; // m_oPen.Alpha = 0;
} }
if (oNodePict.GetNode(_T("v:stroke"), oNodeTemplate)) if (oNodePict.GetNode(_T("v:stroke"), oNodeTemplate))
{ {
std::wstring strColor = oNodeTemplate.GetAttributeOrValue(_T("dashstyle")); std::wstring strColor = oNodeTemplate.GetAttributeOrValue(_T("dashstyle"));
//if (strColor != _T("")) //if (strColor != _T(""))
// m_oPen.DashStyle = XmlUtils::GetInteger(strColor); // m_oPen.DashStyle = XmlUtils::GetInteger(strColor);
} }
...@@ -463,7 +462,7 @@ public: ...@@ -463,7 +462,7 @@ public:
XmlUtils::CXmlNode oNodeTemplate; XmlUtils::CXmlNode oNodeTemplate;
if (oNodePict.GetNode(_T("fillcolor"), oNodeTemplate)) if (oNodePict.GetNode(_T("fillcolor"), oNodeTemplate))
{ {
std::wstring strColor = oNodeTemplate.GetAttributeOrValue(_T("val")); std::wstring strColor = oNodeTemplate.GetAttributeOrValue(_T("val"));
//if (strColor != _T("")) //if (strColor != _T(""))
// m_oBrush.Color1.FromString(strColor); // m_oBrush.Color1.FromString(strColor);
} }
...@@ -476,19 +475,19 @@ public: ...@@ -476,19 +475,19 @@ public:
XmlUtils::CXmlNode oNodeTemplate; XmlUtils::CXmlNode oNodeTemplate;
if (oNodePict.GetNode(_T("coordsize"), oNodeTemplate)) if (oNodePict.GetNode(_T("coordsize"), oNodeTemplate))
{ {
std::wstring strCoordSize = oNodeTemplate.GetAttributeOrValue(_T("val")); std::wstring strCoordSize = oNodeTemplate.GetAttributeOrValue(_T("val"));
if (strCoordSize != _T("")) if (strCoordSize != _T(""))
{ {
std::vector<std::wstring> oArray; std::vector<std::wstring> oArray;
boost::algorithm::split(oArray, strCoordSize, boost::algorithm::is_any_of(L","), boost::algorithm::token_compress_on); boost::algorithm::split(oArray, strCoordSize, boost::algorithm::is_any_of(L","), boost::algorithm::token_compress_on);
m_dWidthLogic = XmlUtils::GetInteger(oArray[0]); m_dWidthLogic = XmlUtils::GetInteger(oArray[0]);
m_dHeightLogic = XmlUtils::GetInteger(oArray[1]); m_dHeightLogic = XmlUtils::GetInteger(oArray[1]);
} }
} }
else else
{ {
std::wstring id = oNodePict.GetAttributeOrValue(_T("type")); std::wstring id = oNodePict.GetAttributeOrValue(_T("type"));
if (id != _T("")) if (id != _T(""))
{ {
m_dWidthLogic = 21600; m_dWidthLogic = 21600;
...@@ -499,11 +498,11 @@ public: ...@@ -499,11 +498,11 @@ public:
XmlUtils::CXmlNode oNodeTemplate; XmlUtils::CXmlNode oNodeTemplate;
if (oNodePict.GetNode(_T("template"), oNodeTemplate)) if (oNodePict.GetNode(_T("template"), oNodeTemplate))
{ {
std::wstring strCoordSize = oNodeTemplate.GetAttributeOrValue(_T("coordsize")); std::wstring strCoordSize = oNodeTemplate.GetAttributeOrValue(_T("coordsize"));
if (strCoordSize != _T("")) if (strCoordSize != _T(""))
{ {
std::vector<std::wstring> oArray; std::vector<std::wstring> oArray;
boost::algorithm::split(oArray, strCoordSize, boost::algorithm::is_any_of(L","), boost::algorithm::token_compress_on); boost::algorithm::split(oArray, strCoordSize, boost::algorithm::is_any_of(L","), boost::algorithm::token_compress_on);
m_dWidthLogic = XmlUtils::GetInteger(oArray[0]); m_dWidthLogic = XmlUtils::GetInteger(oArray[0]);
m_dHeightLogic = XmlUtils::GetInteger(oArray[1]); m_dHeightLogic = XmlUtils::GetInteger(oArray[1]);
......
This diff is collapsed.
...@@ -399,7 +399,7 @@ namespace PPTX ...@@ -399,7 +399,7 @@ namespace PPTX
pReader->Seek(_end_rec); pReader->Seek(_end_rec);
} }
void toXmlWriterVML(NSBinPptxRW::CXmlWriter* pWriter, smart_ptr<PPTX::WrapperFile>& oTheme, smart_ptr<PPTX::WrapperWritingElement>& oClrMap); void toXmlWriterVML(NSBinPptxRW::CXmlWriter* pWriter, smart_ptr<PPTX::WrapperFile>& oTheme, smart_ptr<PPTX::WrapperWritingElement>& oClrMap, bool in_group = false);
void fromXMLOle(XmlUtils::CXmlNode& node); void fromXMLOle(XmlUtils::CXmlNode& node);
public: public:
......
...@@ -136,7 +136,7 @@ namespace PPTX ...@@ -136,7 +136,7 @@ namespace PPTX
pWriter->EndRecord(); pWriter->EndRecord();
} }
void toXmlWriterVML(NSBinPptxRW::CXmlWriter* pWriter, smart_ptr<PPTX::WrapperFile>& oTheme, smart_ptr<PPTX::WrapperWritingElement>& oClrMap); void toXmlWriterVML(NSBinPptxRW::CXmlWriter* pWriter, smart_ptr<PPTX::WrapperFile>& oTheme, smart_ptr<PPTX::WrapperWritingElement>& oClrMap, bool in_group = false);
void toXmlWriterVMLBackground(NSBinPptxRW::CXmlWriter *pWriter, NSCommon::smart_ptr<PPTX::WrapperFile>& oTheme, NSCommon::smart_ptr<PPTX::WrapperWritingElement>& oClrMap); void toXmlWriterVMLBackground(NSBinPptxRW::CXmlWriter *pWriter, NSCommon::smart_ptr<PPTX::WrapperFile>& oTheme, NSCommon::smart_ptr<PPTX::WrapperWritingElement>& oClrMap);
virtual void toXmlWriter(NSBinPptxRW::CXmlWriter* pWriter) const virtual void toXmlWriter(NSBinPptxRW::CXmlWriter* pWriter) const
......
...@@ -41,7 +41,7 @@ namespace PPTX ...@@ -41,7 +41,7 @@ namespace PPTX
{ {
namespace Logic namespace Logic
{ {
void SpTree::toXmlWriterVML(NSBinPptxRW::CXmlWriter *pWriter, NSCommon::smart_ptr<PPTX::WrapperFile>& _oTheme, NSCommon::smart_ptr<PPTX::WrapperWritingElement>& _oClrMap) void SpTree::toXmlWriterVML(NSBinPptxRW::CXmlWriter *pWriter, NSCommon::smart_ptr<PPTX::WrapperFile>& _oTheme, NSCommon::smart_ptr<PPTX::WrapperWritingElement>& _oClrMap, bool in_group)
{ {
smart_ptr<PPTX::Theme> oTheme = _oTheme.smart_dynamic_cast<PPTX::Theme>(); smart_ptr<PPTX::Theme> oTheme = _oTheme.smart_dynamic_cast<PPTX::Theme>();
smart_ptr<PPTX::Logic::ClrMap> oClrMap = oTheme.smart_dynamic_cast<PPTX::Logic::ClrMap>(); smart_ptr<PPTX::Logic::ClrMap> oClrMap = oTheme.smart_dynamic_cast<PPTX::Logic::ClrMap>();
...@@ -95,28 +95,31 @@ namespace PPTX ...@@ -95,28 +95,31 @@ namespace PPTX
} }
else else
{ {
int dL = 0; int dL = 0, dT = 0, dW = 0, dH = 0;
int dT = 0;
int dW = 0;
int dH = 0;
if (grpSpPr.xfrm.is_init()) if (grpSpPr.xfrm.is_init())
{ {
if (grpSpPr.xfrm->offX.is_init()) if (grpSpPr.xfrm->offX.is_init()) dL = *grpSpPr.xfrm->offX;
dL = (*grpSpPr.xfrm->offX) / 12700.; if (grpSpPr.xfrm->offY.is_init()) dT = *grpSpPr.xfrm->offY;
if (grpSpPr.xfrm->offY.is_init()) if (grpSpPr.xfrm->extX.is_init()) dW = *grpSpPr.xfrm->extX;
dT = (*grpSpPr.xfrm->offY) / 12700.; if (grpSpPr.xfrm->extY.is_init()) dH = *grpSpPr.xfrm->extY;
if (grpSpPr.xfrm->extX.is_init())
dW = (*grpSpPr.xfrm->extX) / 12700.;
if (grpSpPr.xfrm->extY.is_init())
dH = (*grpSpPr.xfrm->extY) / 12700.;
} }
oStylesWriter.ClearNoAttack(); oStylesWriter.ClearNoAttack();
oStylesWriter.WriteAttributeCSS(L"position", L"absolute"); oStylesWriter.WriteAttributeCSS(L"position", L"absolute");
oStylesWriter.WriteAttributeCSS_int_pt(L"left", dL); if (in_group)
oStylesWriter.WriteAttributeCSS_int_pt(L"top", dT); {
oStylesWriter.WriteAttributeCSS_int_pt(L"width", dW); oStylesWriter.WriteAttributeCSS_int(L"left", dL / 100.);
oStylesWriter.WriteAttributeCSS_int_pt(L"height", dH); oStylesWriter.WriteAttributeCSS_int(L"top", dT / 100.);
oStylesWriter.WriteAttributeCSS_int(L"width", dW / 100.);
oStylesWriter.WriteAttributeCSS_int(L"height", dH / 100.);
}
else
{
oStylesWriter.WriteAttributeCSS_int_pt(L"left", dL / 12700.);
oStylesWriter.WriteAttributeCSS_int_pt(L"top", dT / 12700.);
oStylesWriter.WriteAttributeCSS_int_pt(L"width", dW / 12700.);
oStylesWriter.WriteAttributeCSS_int_pt(L"height", dH / 12700.);
}
if (grpSpPr.xfrm.is_init()) if (grpSpPr.xfrm.is_init())
{ {
...@@ -150,33 +153,27 @@ namespace PPTX ...@@ -150,33 +153,27 @@ namespace PPTX
pWriter->m_strAttributesMain.clear(); pWriter->m_strAttributesMain.clear();
} }
int dL = 0; int dL = 0, dT = 0, dW = 0, dH = 0;
int dT = 0;
int dW = 0;
int dH = 0;
if (grpSpPr.xfrm.is_init()) if (grpSpPr.xfrm.is_init())
{ {
if (grpSpPr.xfrm->chOffX.is_init()) if (grpSpPr.xfrm->chOffX.is_init()) dL = *grpSpPr.xfrm->chOffX;
dL = (*grpSpPr.xfrm->chOffX) / 12700.; if (grpSpPr.xfrm->chOffY.is_init()) dT = *grpSpPr.xfrm->chOffY;
if (grpSpPr.xfrm->chOffY.is_init()) if (grpSpPr.xfrm->chExtX.is_init()) dW = *grpSpPr.xfrm->chExtX;
dT = (*grpSpPr.xfrm->chOffY) / 12700.; if (grpSpPr.xfrm->chExtY.is_init()) dH = *grpSpPr.xfrm->chExtY;
if (grpSpPr.xfrm->chExtX.is_init())
dW = (*grpSpPr.xfrm->chExtX) / 12700.;
if (grpSpPr.xfrm->chExtY.is_init())
dH = (*grpSpPr.xfrm->chExtY) / 12700.;
} }
oStylesWriter.ClearNoAttack(); oStylesWriter.ClearNoAttack();
oStylesWriter.m_oWriter.AddSize(30); oStylesWriter.m_oWriter.AddSize(30);
oStylesWriter.m_oWriter.AddIntNoCheck(dL); oStylesWriter.m_oWriter.AddIntNoCheck(dL / 100.);
oStylesWriter.m_oWriter.AddCharNoCheck(WCHAR(',')); oStylesWriter.m_oWriter.AddCharNoCheck(WCHAR(','));
oStylesWriter.m_oWriter.AddIntNoCheck(dT); oStylesWriter.m_oWriter.AddIntNoCheck(dT / 100.);
pWriter->WriteAttribute(_T("coordorigin"), oStylesWriter.GetXmlString()); pWriter->WriteAttribute(_T("coordorigin"), oStylesWriter.GetXmlString());
oStylesWriter.ClearNoAttack(); oStylesWriter.ClearNoAttack();
oStylesWriter.m_oWriter.AddSize(30); oStylesWriter.m_oWriter.AddSize(30);
oStylesWriter.m_oWriter.AddIntNoCheck(dW); oStylesWriter.m_oWriter.AddIntNoCheck(dW / 100.);
oStylesWriter.m_oWriter.AddCharNoCheck(WCHAR(',')); oStylesWriter.m_oWriter.AddCharNoCheck(WCHAR(','));
oStylesWriter.m_oWriter.AddIntNoCheck(dH); oStylesWriter.m_oWriter.AddIntNoCheck(dH / 100.);
pWriter->WriteAttribute(_T("coordsize"), oStylesWriter.GetXmlString()); pWriter->WriteAttribute(_T("coordsize"), oStylesWriter.GetXmlString());
pWriter->EndAttributes(); pWriter->EndAttributes();
...@@ -186,15 +183,15 @@ namespace PPTX ...@@ -186,15 +183,15 @@ namespace PPTX
{ {
if (SpTreeElems[i].is<PPTX::Logic::Shape>()) if (SpTreeElems[i].is<PPTX::Logic::Shape>())
{ {
SpTreeElems[i].as<PPTX::Logic::Shape>().toXmlWriterVML(pWriter, _oTheme, _oClrMap); SpTreeElems[i].as<PPTX::Logic::Shape>().toXmlWriterVML(pWriter, _oTheme, _oClrMap, true);
} }
else if (SpTreeElems[i].is<PPTX::Logic::Pic>()) else if (SpTreeElems[i].is<PPTX::Logic::Pic>())
{ {
SpTreeElems[i].as<PPTX::Logic::Pic>().toXmlWriterVML(pWriter, _oTheme, _oClrMap); SpTreeElems[i].as<PPTX::Logic::Pic>().toXmlWriterVML(pWriter, _oTheme, _oClrMap, true);
} }
else if (SpTreeElems[i].is<PPTX::Logic::SpTree>()) else if (SpTreeElems[i].is<PPTX::Logic::SpTree>())
{ {
SpTreeElems[i].as<PPTX::Logic::SpTree>().toXmlWriterVML(pWriter, _oTheme, _oClrMap); SpTreeElems[i].as<PPTX::Logic::SpTree>().toXmlWriterVML(pWriter, _oTheme, _oClrMap, true);
} }
} }
......
...@@ -121,7 +121,7 @@ namespace PPTX ...@@ -121,7 +121,7 @@ namespace PPTX
return XmlUtils::CreateNode(m_name, oValue); return XmlUtils::CreateNode(m_name, oValue);
} }
void toXmlWriterVML(NSBinPptxRW::CXmlWriter* pWriter, smart_ptr<PPTX::WrapperFile>& oTheme, smart_ptr<PPTX::WrapperWritingElement>& oClrMap); void toXmlWriterVML(NSBinPptxRW::CXmlWriter* pWriter, smart_ptr<PPTX::WrapperFile>& oTheme, smart_ptr<PPTX::WrapperWritingElement>& oClrMap, bool in_group = false);
virtual void toXmlWriter(NSBinPptxRW::CXmlWriter* pWriter) const virtual void toXmlWriter(NSBinPptxRW::CXmlWriter* pWriter) const
{ {
......
...@@ -34,6 +34,7 @@ ...@@ -34,6 +34,7 @@
#include "OOXDrawingGraphicReader.h" #include "OOXDrawingGraphicReader.h"
#include "../../../../ASCOfficePPTXFile/ASCOfficeDrawingConverter.h" #include "../../../../ASCOfficePPTXFile/ASCOfficeDrawingConverter.h"
#include "../../../../ASCOfficePPTXFile/PPTXFormat/Theme.h"
bool OOXPictureGraphicReader::Parse( ReaderParameter oParam , RtfShape& oOutput) bool OOXPictureGraphicReader::Parse( ReaderParameter oParam , RtfShape& oOutput)
{ {
...@@ -89,6 +90,16 @@ OOX::Logic::CPicture * OOXDrawingGraphicReader::Parse( ReaderParameter oParam , ...@@ -89,6 +90,16 @@ OOX::Logic::CPicture * OOXDrawingGraphicReader::Parse( ReaderParameter oParam ,
{ {
NSBinPptxRW::CDrawingConverter drawingConverter; NSBinPptxRW::CDrawingConverter drawingConverter;
OOX::CTheme *pTheme = oParam.oDocx->GetTheme();
if (pTheme)
{
NSCommon::smart_ptr<PPTX::Theme> theme(new PPTX::Theme());
PPTX::FileMap map;
theme->read(pTheme->m_oReadPath, map);
(*drawingConverter.m_pTheme) = theme.smart_dynamic_cast<PPTX::WrapperFile>();
}
drawingConverter.SetRelsPath(oParam.oDocx->m_pDocument->m_oReadPath.GetPath()); drawingConverter.SetRelsPath(oParam.oDocx->m_pDocument->m_oReadPath.GetPath());
std::wstring sVmlXml = drawingConverter.ConvertObjectToVml(m_sXml); std::wstring sVmlXml = drawingConverter.ConvertObjectToVml(m_sXml);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment