Commit 54d0260e authored by ElenaSubbotina's avatar ElenaSubbotina

Merge remote-tracking branch 'origin/release/v5.0.0' into develop

# Conflicts:
#	XlsxSerializerCom/Writer/BinaryReader.h
parents 792a7220 2577365e
...@@ -588,7 +588,7 @@ namespace NSPresentationEditor ...@@ -588,7 +588,7 @@ namespace NSPresentationEditor
#else #else
std::wstring ConvertPPTtoPPTX(CPPTShape* pPPTShape, const NSGuidesVML::CFormParam& pCoef, bool bIsNamespace = false) std::wstring ConvertPPTtoPPTX(CPPTShape* pPPTShape, const NSGuidesVML::CFormParam& pCoef, bool bIsNamespace = false)
{ {
if (pPPTShape->m_eType == PPTShapes::sptCRect) if (pPPTShape->m_eType == PPTShapes::sptCRect || pPPTShape->m_eType == PPTShapes::sptCFrame)
{ {
if (bIsNamespace) if (bIsNamespace)
{ {
...@@ -604,7 +604,14 @@ namespace NSPresentationEditor ...@@ -604,7 +604,14 @@ namespace NSPresentationEditor
} }
return _T("<a:prstGeom prst=\"line\"><a:avLst/></a:prstGeom>"); return _T("<a:prstGeom prst=\"line\"><a:avLst/></a:prstGeom>");
} }
else if (pPPTShape->m_eType == PPTShapes::sptCEllipse)
{
if (bIsNamespace)
{
return _T("<a:prstGeom xmlns:a=\"http://schemas.openxmlformats.org/drawingml/2006/main\" prst=\"line\"><a:avLst/></a:prstGeom>");
}
return _T("<a:prstGeom prst=\"ellipse\"><a:avLst/></a:prstGeom>");
}
std::wstring strXmlPPTX = bIsNamespace ? _T("<a:custGeom xmlns:a=\"http://schemas.openxmlformats.org/drawingml/2006/main\">") : _T("<a:custGeom>"); std::wstring strXmlPPTX = bIsNamespace ? _T("<a:custGeom xmlns:a=\"http://schemas.openxmlformats.org/drawingml/2006/main\">") : _T("<a:custGeom>");
CFormulaConverter pFormulaConverter; CFormulaConverter pFormulaConverter;
......
...@@ -44,13 +44,13 @@ int OOXGraphicReader::Parse( ReaderParameter oParam , RtfShapePtr & pOutput) ...@@ -44,13 +44,13 @@ int OOXGraphicReader::Parse( ReaderParameter oParam , RtfShapePtr & pOutput)
{ {
if (m_ooxGraphic->element.getType() == OOX::et_p_ShapeTree) if (m_ooxGraphic->element.getType() == OOX::et_p_ShapeTree)
{ {
OOXShapeReader shapeReader(m_ooxGraphic->element.GetElem().operator->()); OOXShapeGroupReader groupReader(dynamic_cast<PPTX::Logic::SpTree*>(m_ooxGraphic->element.GetElem().operator->()));
return (shapeReader.Parse(oParam, pOutput) ? 1 : 0); return (groupReader.Parse(oParam, pOutput) ? 1 : 0);
} }
else else
{ {
OOXShapeGroupReader groupReader(dynamic_cast<PPTX::Logic::SpTree*>(m_ooxGraphic->element.GetElem().operator->())); OOXShapeReader shapeReader(m_ooxGraphic->element.GetElem().operator->());
return (groupReader.Parse(oParam, pOutput) ? 1 : 0); return (shapeReader.Parse(oParam, pOutput) ? 1 : 0);
} }
} }
if (m_ooxGraphic->olePic.IsInit()) if (m_ooxGraphic->olePic.IsInit())
......
...@@ -49,6 +49,15 @@ public: ...@@ -49,6 +49,15 @@ public:
pOutput->m_eAnchorTypeShape = RtfShape::st_anchor; pOutput->m_eAnchorTypeShape = RtfShape::st_anchor;
if ( m_ooxAnchor->m_oDocPr.IsInit() )
{
pOutput->m_nID = m_ooxAnchor->m_oDocPr->id + 1025;
pOutput->m_sName = m_ooxAnchor->m_oDocPr->name;
if (m_ooxAnchor->m_oDocPr->descr.IsInit())
pOutput->m_sDescription = m_ooxAnchor->m_oDocPr->descr.get();
}
pOutput->m_bAllowOverlap = m_ooxAnchor->m_oAllowOverlap.IsInit() ? m_ooxAnchor->m_oAllowOverlap->ToBool() : false; pOutput->m_bAllowOverlap = m_ooxAnchor->m_oAllowOverlap.IsInit() ? m_ooxAnchor->m_oAllowOverlap->ToBool() : false;
pOutput->m_nZOrderRelative = m_ooxAnchor->m_oBehindDoc.IsInit() ? m_ooxAnchor->m_oBehindDoc->ToBool() : false; pOutput->m_nZOrderRelative = m_ooxAnchor->m_oBehindDoc.IsInit() ? m_ooxAnchor->m_oBehindDoc->ToBool() : false;
pOutput->m_bHidden = m_ooxAnchor->m_oHidden.IsInit() ? m_ooxAnchor->m_oHidden->ToBool() : false; pOutput->m_bHidden = m_ooxAnchor->m_oHidden.IsInit() ? m_ooxAnchor->m_oHidden->ToBool() : false;
......
...@@ -77,6 +77,15 @@ public: ...@@ -77,6 +77,15 @@ public:
} }
} }
} }
if ( m_ooxInline->m_oDocPr.IsInit() )
{
pOutput->m_nID = m_ooxInline->m_oDocPr->id + 1025;
pOutput->m_sName = m_ooxInline->m_oDocPr->name;
if (m_ooxInline->m_oDocPr->descr.IsInit())
pOutput->m_sDescription = m_ooxInline->m_oDocPr->descr.get();
}
OOXGraphicReader oGraphicReader(&m_ooxInline->m_oGraphic); OOXGraphicReader oGraphicReader(&m_ooxInline->m_oGraphic);
......
...@@ -749,32 +749,44 @@ bool OOXShapeReader::Parse(ReaderParameter oParam, RtfShapePtr& pOutput, PPTX::L ...@@ -749,32 +749,44 @@ bool OOXShapeReader::Parse(ReaderParameter oParam, RtfShapePtr& pOutput, PPTX::L
if( PROP_DEF != nCropedWidthGoal ) if( PROP_DEF != nCropedWidthGoal )
{ {
//делаем crop //делаем crop
double nCropLeft = XmlUtils::GetInteger( oox_bitmap_fill->srcRect->l.get()) / 100. ; if (oox_bitmap_fill->srcRect->l.IsInit())
//pOutput->m_oPicture->m_nCropL = nCropLeft * pOutput->m_oPicture->m_nWidthGoal * pOutput->m_oPicture->m_nScaleX / 100; {
pOutput->m_oPicture->m_nCropL = (int)(nCropLeft * pOutput->m_oPicture->m_nWidthGoal); double nCropLeft = XmlUtils::GetInteger( oox_bitmap_fill->srcRect->l.get()) / 100. ;
pOutput->m_nCropFromLeft = (int)(nCropLeft* 65536); //pOutput->m_oPicture->m_nCropL = nCropLeft * pOutput->m_oPicture->m_nWidthGoal * pOutput->m_oPicture->m_nScaleX / 100;
nCropedWidthGoal -= pOutput->m_oPicture->m_nCropL; pOutput->m_oPicture->m_nCropL = (int)(nCropLeft * pOutput->m_oPicture->m_nWidthGoal);
pOutput->m_nCropFromLeft = (int)(nCropLeft* 65536);
double nCropRight = XmlUtils::GetInteger( oox_bitmap_fill->srcRect->r.get()) / 100. ; nCropedWidthGoal -= pOutput->m_oPicture->m_nCropL;
//pOutput->m_oPicture->m_nCropR = nCropRight * pOutput->m_oPicture->m_nWidthGoal * pOutput->m_oPicture->m_nScaleX / 100; }
pOutput->m_oPicture->m_nCropR = (int)(nCropRight * pOutput->m_oPicture->m_nWidthGoal);
pOutput->m_nCropFromRight = (int)(nCropRight * 65536); if (oox_bitmap_fill->srcRect->r.IsInit())
nCropedWidthGoal -= pOutput->m_oPicture->m_nCropR; {
double nCropRight = XmlUtils::GetInteger( oox_bitmap_fill->srcRect->r.get()) / 100. ;
//pOutput->m_oPicture->m_nCropR = nCropRight * pOutput->m_oPicture->m_nWidthGoal * pOutput->m_oPicture->m_nScaleX / 100;
pOutput->m_oPicture->m_nCropR = (int)(nCropRight * pOutput->m_oPicture->m_nWidthGoal);
pOutput->m_nCropFromRight = (int)(nCropRight * 65536);
nCropedWidthGoal -= pOutput->m_oPicture->m_nCropR;
}
} }
int nCropedHeightGoal = pOutput->m_oPicture->m_nHeightGoal; int nCropedHeightGoal = pOutput->m_oPicture->m_nHeightGoal;
if( PROP_DEF != nCropedHeightGoal ) if( PROP_DEF != nCropedHeightGoal )
{ {
double nCropTop = XmlUtils::GetInteger( oox_bitmap_fill->srcRect->t.get()) / 100. ; if (oox_bitmap_fill->srcRect->t.IsInit())
//pOutput->m_oPicture->m_nCropT = nCropTop * pOutput->m_oPicture->m_nHeightGoal * pOutput->m_oPicture->m_dScaleY / 100; {
pOutput->m_oPicture->m_nCropT = (int)(nCropTop * pOutput->m_oPicture->m_nHeightGoal); double nCropTop = XmlUtils::GetInteger( oox_bitmap_fill->srcRect->t.get()) / 100. ;
pOutput->m_nCropFromTop = (int)(nCropTop * 65536); //pOutput->m_oPicture->m_nCropT = nCropTop * pOutput->m_oPicture->m_nHeightGoal * pOutput->m_oPicture->m_dScaleY / 100;
nCropedHeightGoal -= pOutput->m_oPicture->m_nCropT; pOutput->m_oPicture->m_nCropT = (int)(nCropTop * pOutput->m_oPicture->m_nHeightGoal);
pOutput->m_nCropFromTop = (int)(nCropTop * 65536);
double nCropBottom = XmlUtils::GetInteger( oox_bitmap_fill->srcRect->b.get()) / 100. ; nCropedHeightGoal -= pOutput->m_oPicture->m_nCropT;
//pOutput->m_oPicture->m_nCropT = nCropTop * pOutput->m_oPicture->m_nHeightGoal * pOutput->m_oPicture->m_dScaleY / 100; }
pOutput->m_oPicture->m_nCropB = (int)(nCropBottom * pOutput->m_oPicture->m_nHeightGoal);
pOutput->m_nCropFromBottom = (int)(nCropBottom * 65536); if (oox_bitmap_fill->srcRect->b.IsInit())
nCropedHeightGoal -= pOutput->m_oPicture->m_nCropB; {
double nCropBottom = XmlUtils::GetInteger( oox_bitmap_fill->srcRect->b.get()) / 100. ;
//pOutput->m_oPicture->m_nCropT = nCropTop * pOutput->m_oPicture->m_nHeightGoal * pOutput->m_oPicture->m_dScaleY / 100;
pOutput->m_oPicture->m_nCropB = (int)(nCropBottom * pOutput->m_oPicture->m_nHeightGoal);
pOutput->m_nCropFromBottom = (int)(nCropBottom * 65536);
nCropedHeightGoal -= pOutput->m_oPicture->m_nCropB;
}
} }
//устанавливаем scale //устанавливаем scale
if( PROP_DEF != pOutput->m_nLeft && PROP_DEF != pOutput->m_nRight && PROP_DEF != nCropedWidthGoal && 0 != nCropedWidthGoal ) if( PROP_DEF != pOutput->m_nLeft && PROP_DEF != pOutput->m_nRight && PROP_DEF != nCropedWidthGoal && 0 != nCropedWidthGoal )
...@@ -916,7 +928,7 @@ void OOXShapeReader::Parse(ReaderParameter oParam, RtfShapePtr& pOutput, PPTX::L ...@@ -916,7 +928,7 @@ void OOXShapeReader::Parse(ReaderParameter oParam, RtfShapePtr& pOutput, PPTX::L
} }
if (oox_line_prop->w.IsInit()) if (oox_line_prop->w.IsInit())
{ {
pOutput->m_nLineWidth = oox_line_prop->w.get() * 12700; pOutput->m_nLineWidth = oox_line_prop->w.get() / 12700;
} }
if (oox_line_prop->headEnd.IsInit()) if (oox_line_prop->headEnd.IsInit())
{ {
...@@ -1006,22 +1018,50 @@ void OOXShapeReader::Parse( ReaderParameter oParam, RtfShapePtr& pOutput, PPTX:: ...@@ -1006,22 +1018,50 @@ void OOXShapeReader::Parse( ReaderParameter oParam, RtfShapePtr& pOutput, PPTX::
// //Parse(theme->m_oThemeElements.m_oFmtScheme.m_oEffectStyleLst.m_arrEffectStyle[fmt_index].m_oSp3D.GetPointer(), &color); // //Parse(theme->m_oThemeElements.m_oFmtScheme.m_oEffectStyleLst.m_arrEffectStyle[fmt_index].m_oSp3D.GetPointer(), &color);
//} //}
} }
//----------------------------------------------------------------------------------------------------------------------------- //-----------------------------------------------------------------------------------------------------------------------------
void OOXShapeReader::Parse( ReaderParameter oParam, RtfShapePtr& pOutput, PPTX::Logic::Xfrm *xfrm)
bool OOXShapeReader::Parse( ReaderParameter oParam, RtfShapePtr& pOutput)
{ {
if (!m_vmlElement && !m_arrElement && !m_ooxShape) return false; if (!xfrm) return;
if (m_vmlElement || m_arrElement) return ParseVml(oParam , pOutput); double rot = xfrm->rot.IsInit() ? xfrm->rot.get() / 60000. : 0;
if (rot > 0.01)
pOutput->m_nRotation = rot * 65535;
PPTX::Logic::Shape * ooxShape = dynamic_cast<PPTX::Logic::Shape*> (m_ooxShape); if (xfrm->flipH.get_value_or(false)) pOutput->m_bFlipH = 1;
//PPTX::Logic::CxnSp* cxnShape = dynamic_cast<PPTX::Logic::CxnSp*> (m_ooxShape); if (xfrm->flipV.get_value_or(false)) pOutput->m_bFlipV = 1;
//PPTX::Logic::Pic * ooxPic = dynamic_cast<PPTX::Logic::Pic*> (m_ooxShape);
if (ooxShape == NULL) return false; if (pOutput->m_bInGroup)
{
if (xfrm->offX.IsInit() && xfrm->offY.IsInit())
{
pOutput->m_nRelLeft = (int)xfrm->offX.get();
pOutput->m_nRelTop = (int)xfrm->offY.get();
}
else
{
pOutput->m_nRelLeft = 0;
pOutput->m_nRelTop = 0;
}
if (xfrm->extX.IsInit() && xfrm->extY.IsInit())
{
pOutput->m_nRelRight = (int)pOutput->m_nRelLeft + xfrm->offX.get();
pOutput->m_nRelBottom = (int)pOutput->m_nRelTop + xfrm->offY.get();
}
else
{
pOutput->m_nRelRight = 0;
pOutput->m_nRelBottom = 0;
}
pOutput->m_nRelRotation = pOutput->m_nRotation;
}
}
bool OOXShapeReader::ParseShape( ReaderParameter oParam, RtfShapePtr& pOutput)
{
PPTX::Logic::Shape * ooxShape = dynamic_cast<PPTX::Logic::Shape*> (m_ooxShape);
if (!ooxShape) return false;
if (ooxShape->oTextBoxBodyPr.IsInit()) if (ooxShape->oTextBoxBodyPr.IsInit())
{ {
if (ooxShape->oTextBoxBodyPr->fromWordArt.get_value_or(false)) if (ooxShape->oTextBoxBodyPr->fromWordArt.get_value_or(false))
...@@ -1051,7 +1091,9 @@ bool OOXShapeReader::Parse( ReaderParameter oParam, RtfShapePtr& pOutput) ...@@ -1051,7 +1091,9 @@ bool OOXShapeReader::Parse( ReaderParameter oParam, RtfShapePtr& pOutput)
if (ooxShape->spPr.Geometry.getType() == OOX::et_a_prstGeom) if (ooxShape->spPr.Geometry.getType() == OOX::et_a_prstGeom)
{ {
PPTX::Logic::PrstGeom& geometry = ooxShape->spPr.Geometry.as<PPTX::Logic::PrstGeom>(); PPTX::Logic::PrstGeom& geometry = ooxShape->spPr.Geometry.as<PPTX::Logic::PrstGeom>();
SimpleTypes::EShapeType type = (SimpleTypes::EShapeType)geometry.prst.GetBYTECode();
SimpleTypes::CShapeType<> prst_type(geometry.prst.get());
SimpleTypes::EShapeType type = prst_type.GetValue();
pOutput->m_nShapeType = OOX::PrstGeom2VmlShapeType(type); pOutput->m_nShapeType = OOX::PrstGeom2VmlShapeType(type);
if (pOutput->m_nShapeType == SimpleTypes::Vml::sptNotPrimitive) if (pOutput->m_nShapeType == SimpleTypes::Vml::sptNotPrimitive)
...@@ -1087,40 +1129,9 @@ bool OOXShapeReader::Parse( ReaderParameter oParam, RtfShapePtr& pOutput) ...@@ -1087,40 +1129,9 @@ bool OOXShapeReader::Parse( ReaderParameter oParam, RtfShapePtr& pOutput)
pOutput->m_nGeoRight = 100000; pOutput->m_nGeoRight = 100000;
pOutput->m_nGeoBottom = 100000; pOutput->m_nGeoBottom = 100000;
} }
if (ooxShape->spPr.xfrm.IsInit())
{
double rot = ooxShape->spPr.xfrm->rot.get() / 60000.;
if (rot > 0.01)
pOutput->m_nRotation = rot * 65535;
if (ooxShape->spPr.xfrm->flipH.get_value_or(false)) pOutput->m_bFlipH = 1; Parse(oParam, pOutput, ooxShape->spPr.xfrm.GetPointer());
if (ooxShape->spPr.xfrm->flipV.get_value_or(false)) pOutput->m_bFlipV = 1;
if (pOutput->m_bInGroup)
{
if (ooxShape->spPr.xfrm->offX.IsInit() && ooxShape->spPr.xfrm->offY.IsInit())
{
pOutput->m_nRelLeft = (int)ooxShape->spPr.xfrm->offX.get();
pOutput->m_nRelTop = (int)ooxShape->spPr.xfrm->offY.get();
}
else
{
pOutput->m_nRelLeft = 0;
pOutput->m_nRelTop = 0;
}
if (ooxShape->spPr.xfrm->extX.IsInit() && ooxShape->spPr.xfrm->extY.IsInit())
{
pOutput->m_nRelRight = (int)pOutput->m_nRelLeft + ooxShape->spPr.xfrm->offX.get();
pOutput->m_nRelBottom = (int)pOutput->m_nRelTop + ooxShape->spPr.xfrm->offY.get();
}
else
{
pOutput->m_nRelRight = 0;
pOutput->m_nRelBottom = 0;
}
pOutput->m_nRelRotation = pOutput->m_nRotation;
}
}
PPTX::Logic::ShapeStyle* oox_sp_style = ooxShape->style.GetPointer(); PPTX::Logic::ShapeStyle* oox_sp_style = ooxShape->style.GetPointer();
bool use_fill_from_style = false; bool use_fill_from_style = false;
...@@ -1132,8 +1143,8 @@ bool OOXShapeReader::Parse( ReaderParameter oParam, RtfShapePtr& pOutput) ...@@ -1132,8 +1143,8 @@ bool OOXShapeReader::Parse( ReaderParameter oParam, RtfShapePtr& pOutput)
case PPTX::Logic::UniFill::gradFill: case PPTX::Logic::UniFill::gradFill:
case PPTX::Logic::UniFill::pattFill: case PPTX::Logic::UniFill::pattFill:
case PPTX::Logic::UniFill::solidFill: case PPTX::Logic::UniFill::solidFill:
Parse(oParam, pOutput, &ooxShape->spPr.Fill); Parse(oParam, pOutput, &ooxShape->spPr.Fill);
break;
case PPTX::Logic::UniFill::noFill: case PPTX::Logic::UniFill::noFill:
pOutput->m_bFilled = false; break; pOutput->m_bFilled = false; break;
default: default:
...@@ -1185,7 +1196,56 @@ bool OOXShapeReader::Parse( ReaderParameter oParam, RtfShapePtr& pOutput) ...@@ -1185,7 +1196,56 @@ bool OOXShapeReader::Parse( ReaderParameter oParam, RtfShapePtr& pOutput)
} }
} }
return true; return true;
}
bool OOXShapeReader::ParsePic( ReaderParameter oParam, RtfShapePtr& pOutput)
{
PPTX::Logic::Pic * ooxPic = dynamic_cast<PPTX::Logic::Pic*>(m_ooxShape);
if (!ooxPic) return false;
std::wstring strXml;
pOutput->m_nShapeType = SimpleTypes::Vml::sptPictureFrame;
Parse(oParam, pOutput, ooxPic->spPr.xfrm.GetPointer());
PPTX::Logic::ShapeStyle* oox_sp_style = ooxPic->style.GetPointer();
pOutput->m_bFilled = true;
Parse(oParam, pOutput, &ooxPic->blipFill);
if ((oox_sp_style) && (oox_sp_style->lnRef.idx.IsInit()))
{
Parse(oParam, pOutput, &oox_sp_style->lnRef, 2);
}
if (ooxPic->spPr.ln.IsInit())
{
Parse(oParam, pOutput, ooxPic->spPr.ln.GetPointer());
}
return true;
}
bool OOXShapeReader::Parse( ReaderParameter oParam, RtfShapePtr& pOutput)
{
if (!m_vmlElement && !m_arrElement && !m_ooxShape) return false;
if (OOX::CHdrFtr *pHdrFtr = dynamic_cast<OOX::CHdrFtr *>(oParam.oReader->m_currentContainer))
pOutput->m_nHeader = 1;//shape in header/footer
else
pOutput->m_nHeader = 0;
if (m_vmlElement || m_arrElement) return ParseVml(oParam , pOutput);
PPTX::Logic::Shape * ooxShape = dynamic_cast<PPTX::Logic::Shape*> (m_ooxShape);
// PPTX::Logic::CxnSp * cxnShape = dynamic_cast<PPTX::Logic::CxnSp*> (m_ooxShape);
PPTX::Logic::Pic * ooxPic = dynamic_cast<PPTX::Logic::Pic*> (m_ooxShape);
if (ooxShape) return ParseShape(oParam, pOutput);
if (ooxPic) return ParsePic(oParam, pOutput);
//if (cxnShape) return ParseConnector(oParam, pOutput);
return false;
} }
void OOXShapeReader::Parse(ReaderParameter oParam, RtfShapePtr& pOutput, PPTX::Logic::UniFill *oox_fill, std::wstring *change_sheme_color) void OOXShapeReader::Parse(ReaderParameter oParam, RtfShapePtr& pOutput, PPTX::Logic::UniFill *oox_fill, std::wstring *change_sheme_color)
{ {
...@@ -1401,12 +1461,6 @@ bool OOXShapeReader::ParseVml( ReaderParameter oParam , RtfShapePtr& pOutput) ...@@ -1401,12 +1461,6 @@ bool OOXShapeReader::ParseVml( ReaderParameter oParam , RtfShapePtr& pOutput)
} }
//--------------------- //---------------------
if (OOX::CHdrFtr *pHdrFtr = dynamic_cast<OOX::CHdrFtr *>(oParam.oReader->m_currentContainer))
{
pOutput->m_nHeader = 1;//shape in header/footer
}
return ParseVmlChild(oParam, pOutput); return ParseVmlChild(oParam, pOutput);
} }
bool OOXShapeGroupReader::Parse( ReaderParameter oParam , RtfShapePtr& pOutput) bool OOXShapeGroupReader::Parse( ReaderParameter oParam , RtfShapePtr& pOutput)
...@@ -1499,11 +1553,6 @@ bool OOXShapeGroupReader::Parse( ReaderParameter oParam , RtfShapePtr& pOutput) ...@@ -1499,11 +1553,6 @@ bool OOXShapeGroupReader::Parse( ReaderParameter oParam , RtfShapePtr& pOutput)
} }
if (m_ooxGroup) if (m_ooxGroup)
{ {
//if( m_ooxGroup->m_sId.IsInit())
//{
// pOutput->m_nID = oParam.oReader->m_oOOXIdGenerator.GetId( m_ooxGroup->m_oId.get());
//}
pOutput->m_nZOrderRelative = 0; pOutput->m_nZOrderRelative = 0;
pOutput->m_nWrapType = 3; //def pOutput->m_nWrapType = 3; //def
......
...@@ -67,6 +67,12 @@ public: ...@@ -67,6 +67,12 @@ public:
static bool Parse(ReaderParameter oParam, RtfShapePtr& pOutput, PPTX::Logic::BlipFill *oox_bitmap_fill); static bool Parse(ReaderParameter oParam, RtfShapePtr& pOutput, PPTX::Logic::BlipFill *oox_bitmap_fill);
private: private:
bool ParseShape( ReaderParameter oParam , RtfShapePtr& oOutput);
bool ParsePic( ReaderParameter oParam , RtfShapePtr& oOutput);
void Parse(ReaderParameter oParam, RtfShapePtr& pOutput, PPTX::Logic::Xfrm *xfrm);
void Parse(ReaderParameter oParam, PPTX::Logic::ColorBase *oox_color, unsigned int & nColor, _CP_OPT(double) &opacity); void Parse(ReaderParameter oParam, PPTX::Logic::ColorBase *oox_color, unsigned int & nColor, _CP_OPT(double) &opacity);
void Parse(ReaderParameter oParam, PPTX::Logic::SolidFill *oox_solid_fill, unsigned int & nColor, _CP_OPT(double) &opacity); void Parse(ReaderParameter oParam, PPTX::Logic::SolidFill *oox_solid_fill, unsigned int & nColor, _CP_OPT(double) &opacity);
......
...@@ -256,8 +256,6 @@ std::wstring RtfShape::RenderToRtf(RenderParameter oRenderParameter) ...@@ -256,8 +256,6 @@ std::wstring RtfShape::RenderToRtf(RenderParameter oRenderParameter)
sResult += L"{\\shp"; sResult += L"{\\shp";
sResult += L"{\\*\\shpinst"; sResult += L"{\\*\\shpinst";
RENDER_RTF_INT( m_nID , sResult, L"shplid" );
if (!m_bInGroup) if (!m_bInGroup)
{ {
m_bAllowOverlap = 1; m_bAllowOverlap = 1;
...@@ -265,8 +263,8 @@ std::wstring RtfShape::RenderToRtf(RenderParameter oRenderParameter) ...@@ -265,8 +263,8 @@ std::wstring RtfShape::RenderToRtf(RenderParameter oRenderParameter)
m_nWrapType = 3; m_nWrapType = 3;
m_nWrapSideType = 0; m_nWrapSideType = 0;
m_bLockAnchor = 0; m_bLockAnchor = 0;
m_nZOrder = PROP_DEF; m_nZOrder = 0;//PROP_DEF;
m_nZOrderRelative = PROP_DEF; m_nZOrderRelative = 0;//PROP_DEF;
m_nLeft = m_nTop = 0; m_nLeft = m_nTop = 0;
m_nRelBottom = m_nRelRight = PROP_DEF; m_nRelBottom = m_nRelRight = PROP_DEF;
m_nPositionV = m_nPositionH = PROP_DEF; m_nPositionV = m_nPositionH = PROP_DEF;
...@@ -278,26 +276,29 @@ std::wstring RtfShape::RenderToRtf(RenderParameter oRenderParameter) ...@@ -278,26 +276,29 @@ std::wstring RtfShape::RenderToRtf(RenderParameter oRenderParameter)
RENDER_RTF_INT ( m_nHeader , sResult, L"shpfhdr" ); RENDER_RTF_INT ( m_nHeader , sResult, L"shpfhdr" );
//sResult += L"\\shpbxcolumn"; sResult += L"\\shpbxcolumn";
sResult += L"\\shpbxignore"; sResult += L"\\shpbxignore";
//sResult += L"\\shpbypara"; sResult += L"\\shpbypara";
sResult += L"\\shpbyignore"; sResult += L"\\shpbyignore";
RENDER_RTF_INT ( m_nWrapType , sResult, L"shpwr" ); RENDER_RTF_INT ( m_nWrapType , sResult, L"shpwr" );
RENDER_RTF_INT ( m_nWrapSideType , sResult, L"shpwrk" ); RENDER_RTF_INT ( m_nWrapSideType , sResult, L"shpwrk" );
//sResult += L"\\shpfblwtxt0";
sResult += L"\\shplockanchor";
RENDER_RTF_INT ( m_nZOrder , sResult, L"shpz" );
sResult += L"{\\sp{\\sn fUseShapeAnchor}{\\sv 0}}"; //if (st_none == m_eAnchorTypeShape)
sResult += L"{\\sp{\\sn fPseudoInline}{\\sv 1}}"; {
RENDER_RTF_INT ( m_nZOrder, sResult, L"shpz" );
}
sResult += L"\\shplockanchor";
//sResult += L"{\\sp{\\sn fUseShapeAnchor}{\\sv 0}}";
//sResult += L"{\\sp{\\sn fPseudoInline}{\\sv 1}}";
RENDER_RTF_INT( m_nID, sResult, L"shplid" );
} }
sResult += RenderToRtfShapeProperty( oRenderParameter ); sResult += RenderToRtfShapeProperty( oRenderParameter );
sResult += L"{\\sp{\\sn fLockPosition}{\\sv 1}}"; //sResult += L"{\\sp{\\sn fLockPosition}{\\sv 1}}";
sResult += L"{\\sp{\\sn fLockRotation}{\\sv 1}}"; //sResult += L"{\\sp{\\sn fLockRotation}{\\sv 1}}";
//picture //picture
if( 0 != m_oPicture && m_nFillType == 1 || m_nFillType == 2 || m_nFillType == 3 || m_nFillType == 9) if( 0 != m_oPicture && m_nFillType == 1 || m_nFillType == 2 || m_nFillType == 3 || m_nFillType == 9)
...@@ -421,11 +422,14 @@ std::wstring RtfShape::RenderToRtfShapeProperty(RenderParameter oRenderParameter ...@@ -421,11 +422,14 @@ std::wstring RtfShape::RenderToRtfShapeProperty(RenderParameter oRenderParameter
std::wstring sResult; std::wstring sResult;
//Position absolute //Position absolute
RENDER_RTF_SHAPE_PROP(L"posh", sResult, m_nPositionH); //if( st_inline != m_eAnchorTypeShape)
RENDER_RTF_SHAPE_PROP(L"posrelh", sResult, m_nPositionHRelative); {
RENDER_RTF_SHAPE_PROP(L"posv", sResult, m_nPositionV); RENDER_RTF_SHAPE_PROP(L"posh", sResult, m_nPositionH);
RENDER_RTF_SHAPE_PROP(L"posrelh", sResult, m_nPositionHRelative);
RENDER_RTF_SHAPE_PROP(L"posv", sResult, m_nPositionV);
RENDER_RTF_SHAPE_PROP(L"posrelv", sResult, m_nPositionVRelative);
}
RENDER_RTF_SHAPE_PROP(L"posrelv", sResult, m_nPositionVRelative);
RENDER_RTF_SHAPE_PROP(L"fLayoutInCell", sResult, m_bLayoutInCell); RENDER_RTF_SHAPE_PROP(L"fLayoutInCell", sResult, m_bLayoutInCell);
RENDER_RTF_SHAPE_PROP(L"fAllowOverlap", sResult, m_bAllowOverlap); RENDER_RTF_SHAPE_PROP(L"fAllowOverlap", sResult, m_bAllowOverlap);
...@@ -438,6 +442,17 @@ std::wstring RtfShape::RenderToRtfShapeProperty(RenderParameter oRenderParameter ...@@ -438,6 +442,17 @@ std::wstring RtfShape::RenderToRtfShapeProperty(RenderParameter oRenderParameter
RENDER_RTF_SHAPE_PROP(L"sizerelv", sResult, m_nPctHeightRelative); RENDER_RTF_SHAPE_PROP(L"sizerelv", sResult, m_nPctHeightRelative);
RENDER_RTF_SHAPE_PROP(L"colStart", sResult, m_nColStart); RENDER_RTF_SHAPE_PROP(L"colStart", sResult, m_nColStart);
RENDER_RTF_SHAPE_PROP(L"colSpan", sResult, m_nColSpan); RENDER_RTF_SHAPE_PROP(L"colSpan", sResult, m_nColSpan);
if (m_sName.empty() == false)
{
sResult += L"{\\sp{\\sn wzName}{\\sv ";
sResult += m_sName + L"}}";
}
if (m_sDescription.empty() == false)
{
sResult += L"{\\sp{\\sn wzDescription}{\\sv ";
sResult += m_sDescription + L"}}";
}
//Rehydration //Rehydration
//RENDER_RTF_SHAPE_PROP(L"metroBlob", sResult, m_sMetroBlob); //RENDER_RTF_SHAPE_PROP(L"metroBlob", sResult, m_sMetroBlob);
...@@ -449,7 +464,7 @@ std::wstring RtfShape::RenderToRtfShapeProperty(RenderParameter oRenderParameter ...@@ -449,7 +464,7 @@ std::wstring RtfShape::RenderToRtfShapeProperty(RenderParameter oRenderParameter
RENDER_RTF_SHAPE_PROP(L"shapeType", sResult, m_nShapeType); RENDER_RTF_SHAPE_PROP(L"shapeType", sResult, m_nShapeType);
RENDER_RTF_SHAPE_PROP(L"fBehindDocument",sResult, m_nZOrderRelative); RENDER_RTF_SHAPE_PROP(L"fBehindDocument",sResult, m_nZOrderRelative);
RENDER_RTF_SHAPE_PROP(L"fHidden", sResult, m_bHidden); RENDER_RTF_SHAPE_PROP(L"fHidden", sResult, m_bHidden);
RENDER_RTF_SHAPE_PROP(L"fBackground", sResult, m_bBackground); //RENDER_RTF_SHAPE_PROP(L"fBackground", sResult, m_bBackground);
//Text //Text
//sResult += L"{\\sp{\\sn fLockText}{\\sv 0}}"; //sResult += L"{\\sp{\\sn fLockText}{\\sv 0}}";
...@@ -586,7 +601,7 @@ std::wstring RtfShape::RenderToRtfShapeProperty(RenderParameter oRenderParameter ...@@ -586,7 +601,7 @@ std::wstring RtfShape::RenderToRtfShapeProperty(RenderParameter oRenderParameter
int nCodePage = -1; int nCodePage = -1;
if( !m_sGtextFont.empty() ) if( m_sGtextFont.empty() == false)
{ {
sResult += L"{\\sp{\\sn gtextFont}{\\sv "; sResult += L"{\\sp{\\sn gtextFont}{\\sv ";
sResult += m_sGtextFont + L"}}"; sResult += m_sGtextFont + L"}}";
...@@ -1487,8 +1502,8 @@ std::wstring RtfShape::GroupRenderToRtf(RenderParameter oRenderParameter) ...@@ -1487,8 +1502,8 @@ std::wstring RtfShape::GroupRenderToRtf(RenderParameter oRenderParameter)
RENDER_RTF_INT( m_nWrapSideType , sResult, L"shpwrk" ); RENDER_RTF_INT( m_nWrapSideType , sResult, L"shpwrk" );
RENDER_RTF_BOOL( m_bLockAnchor , sResult, L"shplockanchor" ); RENDER_RTF_BOOL( m_bLockAnchor , sResult, L"shplockanchor" );
//sResult += L"{\\sp{\\sn fUseShapeAnchor}{\\sv 0}}"; sResult += L"{\\sp{\\sn fUseShapeAnchor}{\\sv 0}}";
//sResult += L"{\\sp{\\sn fPseudoInline}{\\sv 1}}"; sResult += L"{\\sp{\\sn fPseudoInline}{\\sv 1}}";
} }
......
<?xml version="1.0" encoding="windows-1251"?> <?xml version="1.0" encoding="windows-1251"?>
<VisualStudioProject <VisualStudioProject
ProjectType="Visual C++" ProjectType="Visual C++"
Version="8.00" Version="8,00"
Name="RtfFormatTest" Name="RtfFormatTest"
ProjectGUID="{0F49D5D1-A8D3-4F97-8BC1-E2F65BB00C10}" ProjectGUID="{0F49D5D1-A8D3-4F97-8BC1-E2F65BB00C10}"
RootNamespace="RtfFormatTest" RootNamespace="RtfFormatTest"
...@@ -44,7 +44,7 @@ ...@@ -44,7 +44,7 @@
<Tool <Tool
Name="VCCLCompilerTool" Name="VCCLCompilerTool"
Optimization="0" Optimization="0"
AdditionalIncludeDirectories="..\..\Common\OfficeDrawing;&quot;..\..\DesktopEditor\freetype-2.5.2\include&quot;;..\..\..\..\..\Common\OfficeDrawing\Shapes" AdditionalIncludeDirectories="../../DesktopEditor/xml/libxml2/include;../../DesktopEditor/xml/build/vs2005"
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;_USE_LIBXML2_READER_;LIBXML_READER_ENABLED;USE_LITE_READER;_USE_XMLLITE_READER_;PPTX_DEF;PPT_DEF;ENABLE_PPT_TO_PPTX_CONVERT;AVS_USE_CONVERT_PPTX_TOCUSTOM_VML;DONT_WRITE_EMBEDDED_FONTS" PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;_USE_LIBXML2_READER_;LIBXML_READER_ENABLED;USE_LITE_READER;_USE_XMLLITE_READER_;PPTX_DEF;PPT_DEF;ENABLE_PPT_TO_PPTX_CONVERT;AVS_USE_CONVERT_PPTX_TOCUSTOM_VML;DONT_WRITE_EMBEDDED_FONTS"
MinimalRebuild="false" MinimalRebuild="false"
BasicRuntimeChecks="3" BasicRuntimeChecks="3"
......
...@@ -56,8 +56,8 @@ namespace BinXlsxRW { ...@@ -56,8 +56,8 @@ namespace BinXlsxRW {
std::wstring sPath; std::wstring sPath;
int nIndex; int nIndex;
std::map<OOX::Spreadsheet::CDrawing*, std::wstring> mapDrawings; std::map<OOX::Spreadsheet::CDrawing*, std::wstring> mapDrawings;
public:
ImageObject() ImageObject()
{ {
} }
ImageObject(std::wstring& _sPath, int _nIndex) ImageObject(std::wstring& _sPath, int _nIndex)
...@@ -75,8 +75,8 @@ namespace BinXlsxRW { ...@@ -75,8 +75,8 @@ namespace BinXlsxRW {
OOX::Spreadsheet::CPivotCacheRecords* pRecords; OOX::Spreadsheet::CPivotCacheRecords* pRecords;
long nCacheId; long nCacheId;
OOX::Spreadsheet::CPivotTable* pTable; OOX::Spreadsheet::CPivotTable* pTable;
public:
PivotCachesTemp() PivotCachesTemp()
{ {
nId = -1; nId = -1;
pDefinitionData = NULL; pDefinitionData = NULL;
...@@ -1515,7 +1515,7 @@ namespace BinXlsxRW { ...@@ -1515,7 +1515,7 @@ namespace BinXlsxRW {
int Read() int Read()
{ {
return ReadTable(&BinaryWorkbookTableReader::ReadWorkbookTableContent, this); return ReadTable(&BinaryWorkbookTableReader::ReadWorkbookTableContent, this);
}; }
int ReadWorkbookTableContent(BYTE type, long length, void* poResult) int ReadWorkbookTableContent(BYTE type, long length, void* poResult)
{ {
int res = c_oSerConstants::ReadOk; int res = c_oSerConstants::ReadOk;
...@@ -1548,12 +1548,19 @@ namespace BinXlsxRW { ...@@ -1548,12 +1548,19 @@ namespace BinXlsxRW {
} }
else if(c_oSerWorkbookTypes::VbaProject == type) else if(c_oSerWorkbookTypes::VbaProject == type)
{ {
res = Read1(length, &BinaryWorkbookTableReader::ReadVbaProject, this, poResult); smart_ptr<OOX::VbaProject> oFileVbaProject(new OOX::VbaProject());
}
oFileVbaProject->fromPPTY(&m_oBufferedStream);
smart_ptr<OOX::File> oFile = oFileVbaProject.smart_dynamic_cast<OOX::File>();
const OOX::RId oRId = m_oWorkbook.Add(oFile);
m_oWorkbook.m_bMacroEnabled = true;
}
else else
res = c_oSerConstants::ReadUnknown; res = c_oSerConstants::ReadUnknown;
return res; return res;
}; }
int ReadWorkbookPr(BYTE type, long length, void* poResult) int ReadWorkbookPr(BYTE type, long length, void* poResult)
{ {
int res = c_oSerConstants::ReadOk; int res = c_oSerConstants::ReadOk;
...@@ -1570,7 +1577,7 @@ namespace BinXlsxRW { ...@@ -1570,7 +1577,7 @@ namespace BinXlsxRW {
else else
res = c_oSerConstants::ReadUnknown; res = c_oSerConstants::ReadUnknown;
return res; return res;
}; }
int ReadBookViews(BYTE type, long length, void* poResult) int ReadBookViews(BYTE type, long length, void* poResult)
{ {
int res = c_oSerConstants::ReadOk; int res = c_oSerConstants::ReadOk;
...@@ -1660,7 +1667,7 @@ namespace BinXlsxRW { ...@@ -1660,7 +1667,7 @@ namespace BinXlsxRW {
else else
res = c_oSerConstants::ReadUnknown; res = c_oSerConstants::ReadUnknown;
return res; return res;
}; }
int ReadDefinedNames(BYTE type, long length, void* poResult) int ReadDefinedNames(BYTE type, long length, void* poResult)
{ {
int res = c_oSerConstants::ReadOk; int res = c_oSerConstants::ReadOk;
...@@ -1673,7 +1680,7 @@ namespace BinXlsxRW { ...@@ -1673,7 +1680,7 @@ namespace BinXlsxRW {
else else
res = c_oSerConstants::ReadUnknown; res = c_oSerConstants::ReadUnknown;
return res; return res;
}; }
int ReadDefinedName(BYTE type, long length, void* poResult) int ReadDefinedName(BYTE type, long length, void* poResult)
{ {
OOX::Spreadsheet::CDefinedName* pDefinedName = static_cast<OOX::Spreadsheet::CDefinedName*>(poResult); OOX::Spreadsheet::CDefinedName* pDefinedName = static_cast<OOX::Spreadsheet::CDefinedName*>(poResult);
...@@ -1706,7 +1713,7 @@ namespace BinXlsxRW { ...@@ -1706,7 +1713,7 @@ namespace BinXlsxRW {
else else
res = c_oSerConstants::ReadUnknown; res = c_oSerConstants::ReadUnknown;
return res; return res;
}; }
int ReadExternalBook(BYTE type, long length, void* poResult) int ReadExternalBook(BYTE type, long length, void* poResult)
{ {
OOX::Spreadsheet::CExternalLink* extLink = static_cast<OOX::Spreadsheet::CExternalLink*>(poResult); OOX::Spreadsheet::CExternalLink* extLink = static_cast<OOX::Spreadsheet::CExternalLink*>(poResult);
...@@ -1741,7 +1748,7 @@ namespace BinXlsxRW { ...@@ -1741,7 +1748,7 @@ namespace BinXlsxRW {
else else
res = c_oSerConstants::ReadUnknown; res = c_oSerConstants::ReadUnknown;
return res; return res;
}; }
int ReadExternalSheetNames(BYTE type, long length, void* poResult) int ReadExternalSheetNames(BYTE type, long length, void* poResult)
{ {
OOX::Spreadsheet::CExternalSheetNames* pSheetNames = static_cast<OOX::Spreadsheet::CExternalSheetNames*>(poResult); OOX::Spreadsheet::CExternalSheetNames* pSheetNames = static_cast<OOX::Spreadsheet::CExternalSheetNames*>(poResult);
...@@ -1756,7 +1763,7 @@ namespace BinXlsxRW { ...@@ -1756,7 +1763,7 @@ namespace BinXlsxRW {
else else
res = c_oSerConstants::ReadUnknown; res = c_oSerConstants::ReadUnknown;
return res; return res;
}; }
int ReadExternalDefinedNames(BYTE type, long length, void* poResult) int ReadExternalDefinedNames(BYTE type, long length, void* poResult)
{ {
OOX::Spreadsheet::CExternalDefinedNames* pDefinedNames = static_cast<OOX::Spreadsheet::CExternalDefinedNames*>(poResult); OOX::Spreadsheet::CExternalDefinedNames* pDefinedNames = static_cast<OOX::Spreadsheet::CExternalDefinedNames*>(poResult);
...@@ -1770,7 +1777,7 @@ namespace BinXlsxRW { ...@@ -1770,7 +1777,7 @@ namespace BinXlsxRW {
else else
res = c_oSerConstants::ReadUnknown; res = c_oSerConstants::ReadUnknown;
return res; return res;
}; }
int ReadExternalDefinedName(BYTE type, long length, void* poResult) int ReadExternalDefinedName(BYTE type, long length, void* poResult)
{ {
OOX::Spreadsheet::CExternalDefinedName* pDefinedName = static_cast<OOX::Spreadsheet::CExternalDefinedName*>(poResult); OOX::Spreadsheet::CExternalDefinedName* pDefinedName = static_cast<OOX::Spreadsheet::CExternalDefinedName*>(poResult);
...@@ -1793,7 +1800,7 @@ namespace BinXlsxRW { ...@@ -1793,7 +1800,7 @@ namespace BinXlsxRW {
else else
res = c_oSerConstants::ReadUnknown; res = c_oSerConstants::ReadUnknown;
return res; return res;
}; }
int ReadExternalSheetDataSet(BYTE type, long length, void* poResult) int ReadExternalSheetDataSet(BYTE type, long length, void* poResult)
{ {
OOX::Spreadsheet::CExternalSheetDataSet* pSheetDataSet = static_cast<OOX::Spreadsheet::CExternalSheetDataSet*>(poResult); OOX::Spreadsheet::CExternalSheetDataSet* pSheetDataSet = static_cast<OOX::Spreadsheet::CExternalSheetDataSet*>(poResult);
...@@ -1807,7 +1814,7 @@ namespace BinXlsxRW { ...@@ -1807,7 +1814,7 @@ namespace BinXlsxRW {
else else
res = c_oSerConstants::ReadUnknown; res = c_oSerConstants::ReadUnknown;
return res; return res;
}; }
int ReadExternalSheetData(BYTE type, long length, void* poResult) int ReadExternalSheetData(BYTE type, long length, void* poResult)
{ {
OOX::Spreadsheet::CExternalSheetData* pSheetData = static_cast<OOX::Spreadsheet::CExternalSheetData*>(poResult); OOX::Spreadsheet::CExternalSheetData* pSheetData = static_cast<OOX::Spreadsheet::CExternalSheetData*>(poResult);
...@@ -1831,7 +1838,7 @@ namespace BinXlsxRW { ...@@ -1831,7 +1838,7 @@ namespace BinXlsxRW {
else else
res = c_oSerConstants::ReadUnknown; res = c_oSerConstants::ReadUnknown;
return res; return res;
}; }
int ReadExternalRow(BYTE type, long length, void* poResult) int ReadExternalRow(BYTE type, long length, void* poResult)
{ {
OOX::Spreadsheet::CExternalRow* pRow = static_cast<OOX::Spreadsheet::CExternalRow*>(poResult); OOX::Spreadsheet::CExternalRow* pRow = static_cast<OOX::Spreadsheet::CExternalRow*>(poResult);
...@@ -1850,7 +1857,7 @@ namespace BinXlsxRW { ...@@ -1850,7 +1857,7 @@ namespace BinXlsxRW {
else else
res = c_oSerConstants::ReadUnknown; res = c_oSerConstants::ReadUnknown;
return res; return res;
}; }
int ReadExternalCell(BYTE type, long length, void* poResult) int ReadExternalCell(BYTE type, long length, void* poResult)
{ {
OOX::Spreadsheet::CExternalCell* pCell = static_cast<OOX::Spreadsheet::CExternalCell*>(poResult); OOX::Spreadsheet::CExternalCell* pCell = static_cast<OOX::Spreadsheet::CExternalCell*>(poResult);
...@@ -1873,7 +1880,7 @@ namespace BinXlsxRW { ...@@ -1873,7 +1880,7 @@ namespace BinXlsxRW {
else else
res = c_oSerConstants::ReadUnknown; res = c_oSerConstants::ReadUnknown;
return res; return res;
}; }
int ReadOleLink(BYTE type, long length, void* poResult) int ReadOleLink(BYTE type, long length, void* poResult)
{ {
OOX::Spreadsheet::CExternalLink* extLink = static_cast<OOX::Spreadsheet::CExternalLink*>(poResult); OOX::Spreadsheet::CExternalLink* extLink = static_cast<OOX::Spreadsheet::CExternalLink*>(poResult);
...@@ -1908,7 +1915,7 @@ namespace BinXlsxRW { ...@@ -1908,7 +1915,7 @@ namespace BinXlsxRW {
else else
res = c_oSerConstants::ReadUnknown; res = c_oSerConstants::ReadUnknown;
return res; return res;
}; }
int ReadOleItem(BYTE type, long length, void* poResult) int ReadOleItem(BYTE type, long length, void* poResult)
{ {
OOX::Spreadsheet::COleItem* pOleItem = static_cast<OOX::Spreadsheet::COleItem*>(poResult); OOX::Spreadsheet::COleItem* pOleItem = static_cast<OOX::Spreadsheet::COleItem*>(poResult);
...@@ -1936,7 +1943,7 @@ namespace BinXlsxRW { ...@@ -1936,7 +1943,7 @@ namespace BinXlsxRW {
else else
res = c_oSerConstants::ReadUnknown; res = c_oSerConstants::ReadUnknown;
return res; return res;
}; }
int ReadDdeLink(BYTE type, long length, void* poResult) int ReadDdeLink(BYTE type, long length, void* poResult)
{ {
OOX::Spreadsheet::CDdeLink* ddeLink = static_cast<OOX::Spreadsheet::CDdeLink*>(poResult); OOX::Spreadsheet::CDdeLink* ddeLink = static_cast<OOX::Spreadsheet::CDdeLink*>(poResult);
...@@ -1964,7 +1971,7 @@ namespace BinXlsxRW { ...@@ -1964,7 +1971,7 @@ namespace BinXlsxRW {
else else
res = c_oSerConstants::ReadUnknown; res = c_oSerConstants::ReadUnknown;
return res; return res;
}; }
int ReadDdeItem(BYTE type, long length, void* poResult) int ReadDdeItem(BYTE type, long length, void* poResult)
{ {
OOX::Spreadsheet::CDdeItem* pDdeItem = static_cast<OOX::Spreadsheet::CDdeItem*>(poResult); OOX::Spreadsheet::CDdeItem* pDdeItem = static_cast<OOX::Spreadsheet::CDdeItem*>(poResult);
...@@ -1997,7 +2004,7 @@ namespace BinXlsxRW { ...@@ -1997,7 +2004,7 @@ namespace BinXlsxRW {
else else
res = c_oSerConstants::ReadUnknown; res = c_oSerConstants::ReadUnknown;
return res; return res;
}; }
int ReadDdeValues(BYTE type, long length, void* poResult) int ReadDdeValues(BYTE type, long length, void* poResult)
{ {
OOX::Spreadsheet::CDdeValues* pDdeValues = static_cast<OOX::Spreadsheet::CDdeValues*>(poResult); OOX::Spreadsheet::CDdeValues* pDdeValues = static_cast<OOX::Spreadsheet::CDdeValues*>(poResult);
...@@ -2021,7 +2028,7 @@ namespace BinXlsxRW { ...@@ -2021,7 +2028,7 @@ namespace BinXlsxRW {
else else
res = c_oSerConstants::ReadUnknown; res = c_oSerConstants::ReadUnknown;
return res; return res;
}; }
int ReadDdeValue(BYTE type, long length, void* poResult) int ReadDdeValue(BYTE type, long length, void* poResult)
{ {
OOX::Spreadsheet::CDdeValue* pDdeValue = static_cast<OOX::Spreadsheet::CDdeValue*>(poResult); OOX::Spreadsheet::CDdeValue* pDdeValue = static_cast<OOX::Spreadsheet::CDdeValue*>(poResult);
...@@ -2040,7 +2047,7 @@ namespace BinXlsxRW { ...@@ -2040,7 +2047,7 @@ namespace BinXlsxRW {
else else
res = c_oSerConstants::ReadUnknown; res = c_oSerConstants::ReadUnknown;
return res; return res;
}; }
int ReadPivotCaches(BYTE type, long length, void* poResult) int ReadPivotCaches(BYTE type, long length, void* poResult)
{ {
int res = c_oSerConstants::ReadOk; int res = c_oSerConstants::ReadOk;
...@@ -2099,31 +2106,6 @@ namespace BinXlsxRW { ...@@ -2099,31 +2106,6 @@ namespace BinXlsxRW {
res = c_oSerConstants::ReadUnknown; res = c_oSerConstants::ReadUnknown;
return res; return res;
} }
int ReadVbaProject(BYTE type, long length, void* poResult)
{
int res = c_oSerConstants::ReadOk;
if(c_oSerWorkbookVbaProjectTypes::Name == type)
{
std::wstring file_name = m_oBufferedStream.GetString4(length);
OOX::CPath inputPath = m_oBufferedStream.m_strFolder + FILE_SEPARATOR_STR + _T("media") + FILE_SEPARATOR_STR + file_name;
OOX::CPath outputPath = m_sDestinationDir + FILE_SEPARATOR_STR + _T("xl") + FILE_SEPARATOR_STR + _T("vbaProject.bin");
NSFile::CFileBinary::Copy(inputPath.GetPath(), outputPath.GetPath());
smart_ptr<OOX::VbaProject> oFileVbaProject(new OOX::VbaProject());
oFileVbaProject->set_filename(outputPath.GetPath());
smart_ptr<OOX::File> oFile = oFileVbaProject.smart_dynamic_cast<OOX::File>();
const OOX::RId oRId = m_oWorkbook.Add(oFile);
m_oWorkbook.m_bMacroEnabled = true;
return res;
}
else
res = c_oSerConstants::ReadUnknown;
}
}; };
class BinaryCommentReader : public Binary_CommonReader<BinaryCommentReader> class BinaryCommentReader : public Binary_CommonReader<BinaryCommentReader>
{ {
...@@ -2174,7 +2156,7 @@ namespace BinXlsxRW { ...@@ -2174,7 +2156,7 @@ namespace BinXlsxRW {
else else
res = c_oSerConstants::ReadUnknown; res = c_oSerConstants::ReadUnknown;
return res; return res;
}; }
int ReadComment(BYTE type, long length, void* poResult) int ReadComment(BYTE type, long length, void* poResult)
{ {
int res = c_oSerConstants::ReadOk; int res = c_oSerConstants::ReadOk;
...@@ -2258,7 +2240,7 @@ namespace BinXlsxRW { ...@@ -2258,7 +2240,7 @@ namespace BinXlsxRW {
else else
res = c_oSerConstants::ReadUnknown; res = c_oSerConstants::ReadUnknown;
return res; return res;
}; }
int ReadCommentDatas(BYTE type, long length, void* poResult) int ReadCommentDatas(BYTE type, long length, void* poResult)
{ {
int res = c_oSerConstants::ReadOk; int res = c_oSerConstants::ReadOk;
...@@ -2388,7 +2370,7 @@ namespace BinXlsxRW { ...@@ -2388,7 +2370,7 @@ namespace BinXlsxRW {
{ {
m_oWorkbook.m_oSheets.Init(); m_oWorkbook.m_oSheets.Init();
return ReadTable(&BinaryWorksheetsTableReader::ReadWorksheetsTableContent, this); return ReadTable(&BinaryWorksheetsTableReader::ReadWorksheetsTableContent, this);
}; }
int ReadWorksheetsTableContent(BYTE type, long length, void* poResult) int ReadWorksheetsTableContent(BYTE type, long length, void* poResult)
{ {
int res = c_oSerConstants::ReadOk; int res = c_oSerConstants::ReadOk;
...@@ -2426,7 +2408,7 @@ namespace BinXlsxRW { ...@@ -2426,7 +2408,7 @@ namespace BinXlsxRW {
else else
res = c_oSerConstants::ReadUnknown; res = c_oSerConstants::ReadUnknown;
return res; return res;
}; }
int ReadWorksheet(BYTE type, long length, void* poResult) int ReadWorksheet(BYTE type, long length, void* poResult)
{ {
int res = c_oSerConstants::ReadOk; int res = c_oSerConstants::ReadOk;
...@@ -3012,7 +2994,7 @@ namespace BinXlsxRW { ...@@ -3012,7 +2994,7 @@ namespace BinXlsxRW {
else else
res = c_oSerConstants::ReadUnknown; res = c_oSerConstants::ReadUnknown;
return res; return res;
}; }
int ReadPageMargins(BYTE type, long length, void* poResult) int ReadPageMargins(BYTE type, long length, void* poResult)
{ {
OOX::Spreadsheet::CPageMargins* pPageMargins = static_cast<OOX::Spreadsheet::CPageMargins*>(poResult); OOX::Spreadsheet::CPageMargins* pPageMargins = static_cast<OOX::Spreadsheet::CPageMargins*>(poResult);
...@@ -3050,7 +3032,7 @@ namespace BinXlsxRW { ...@@ -3050,7 +3032,7 @@ namespace BinXlsxRW {
else else
res = c_oSerConstants::ReadUnknown; res = c_oSerConstants::ReadUnknown;
return res; return res;
}; }
int ReadPageSetup(BYTE type, long length, void* poResult) int ReadPageSetup(BYTE type, long length, void* poResult)
{ {
OOX::Spreadsheet::CPageSetup* pPageSetup = static_cast<OOX::Spreadsheet::CPageSetup*>(poResult); OOX::Spreadsheet::CPageSetup* pPageSetup = static_cast<OOX::Spreadsheet::CPageSetup*>(poResult);
...@@ -3068,7 +3050,7 @@ namespace BinXlsxRW { ...@@ -3068,7 +3050,7 @@ namespace BinXlsxRW {
else else
res = c_oSerConstants::ReadUnknown; res = c_oSerConstants::ReadUnknown;
return res; return res;
}; }
int ReadPrintOptions(BYTE type, long length, void* poResult) int ReadPrintOptions(BYTE type, long length, void* poResult)
{ {
OOX::Spreadsheet::CPrintOptions* pPrintOptions = static_cast<OOX::Spreadsheet::CPrintOptions*>(poResult); OOX::Spreadsheet::CPrintOptions* pPrintOptions = static_cast<OOX::Spreadsheet::CPrintOptions*>(poResult);
...@@ -3089,7 +3071,7 @@ namespace BinXlsxRW { ...@@ -3089,7 +3071,7 @@ namespace BinXlsxRW {
else else
res = c_oSerConstants::ReadUnknown; res = c_oSerConstants::ReadUnknown;
return res; return res;
}; }
int ReadHyperlinks(BYTE type, long length, void* poResult) int ReadHyperlinks(BYTE type, long length, void* poResult)
{ {
int res = c_oSerConstants::ReadOk; int res = c_oSerConstants::ReadOk;
...@@ -3102,7 +3084,7 @@ namespace BinXlsxRW { ...@@ -3102,7 +3084,7 @@ namespace BinXlsxRW {
else else
res = c_oSerConstants::ReadUnknown; res = c_oSerConstants::ReadUnknown;
return res; return res;
}; }
int ReadHyperlink(BYTE type, long length, void* poResult) int ReadHyperlink(BYTE type, long length, void* poResult)
{ {
OOX::Spreadsheet::CHyperlink* pHyperlink = static_cast<OOX::Spreadsheet::CHyperlink*>(poResult); OOX::Spreadsheet::CHyperlink* pHyperlink = static_cast<OOX::Spreadsheet::CHyperlink*>(poResult);
...@@ -3137,7 +3119,7 @@ namespace BinXlsxRW { ...@@ -3137,7 +3119,7 @@ namespace BinXlsxRW {
else else
res = c_oSerConstants::ReadUnknown; res = c_oSerConstants::ReadUnknown;
return res; return res;
}; }
int ReadMergeCells(BYTE type, long length, void* poResult) int ReadMergeCells(BYTE type, long length, void* poResult)
{ {
int res = c_oSerConstants::ReadOk; int res = c_oSerConstants::ReadOk;
...@@ -3299,7 +3281,7 @@ namespace BinXlsxRW { ...@@ -3299,7 +3281,7 @@ namespace BinXlsxRW {
else else
res = c_oSerConstants::ReadUnknown; res = c_oSerConstants::ReadUnknown;
return res; return res;
}; }
int ReadDrawing(BYTE type, long length, void* poResult) int ReadDrawing(BYTE type, long length, void* poResult)
{ {
OOX::Spreadsheet::CCellAnchor* pCellAnchor = static_cast<OOX::Spreadsheet::CCellAnchor*>(poResult); OOX::Spreadsheet::CCellAnchor* pCellAnchor = static_cast<OOX::Spreadsheet::CCellAnchor*>(poResult);
...@@ -3347,7 +3329,7 @@ namespace BinXlsxRW { ...@@ -3347,7 +3329,7 @@ namespace BinXlsxRW {
else else
res = c_oSerConstants::ReadUnknown; res = c_oSerConstants::ReadUnknown;
return res; return res;
}; }
int ReadFromTo(BYTE type, long length, void* poResult) int ReadFromTo(BYTE type, long length, void* poResult)
{ {
OOX::Spreadsheet::CFromTo* pFromTo = static_cast<OOX::Spreadsheet::CFromTo*>(poResult); OOX::Spreadsheet::CFromTo* pFromTo = static_cast<OOX::Spreadsheet::CFromTo*>(poResult);
...@@ -3377,7 +3359,7 @@ namespace BinXlsxRW { ...@@ -3377,7 +3359,7 @@ namespace BinXlsxRW {
else else
res = c_oSerConstants::ReadUnknown; res = c_oSerConstants::ReadUnknown;
return res; return res;
}; }
int ReadExt(BYTE type, long length, void* poResult) int ReadExt(BYTE type, long length, void* poResult)
{ {
OOX::Spreadsheet::CExt* pExt = static_cast<OOX::Spreadsheet::CExt*>(poResult); OOX::Spreadsheet::CExt* pExt = static_cast<OOX::Spreadsheet::CExt*>(poResult);
...@@ -3397,7 +3379,7 @@ namespace BinXlsxRW { ...@@ -3397,7 +3379,7 @@ namespace BinXlsxRW {
else else
res = c_oSerConstants::ReadUnknown; res = c_oSerConstants::ReadUnknown;
return res; return res;
}; }
int ReadPos(BYTE type, long length, void* poResult) int ReadPos(BYTE type, long length, void* poResult)
{ {
OOX::Spreadsheet::CPos* pPos = static_cast<OOX::Spreadsheet::CPos*>(poResult); OOX::Spreadsheet::CPos* pPos = static_cast<OOX::Spreadsheet::CPos*>(poResult);
...@@ -3417,7 +3399,7 @@ namespace BinXlsxRW { ...@@ -3417,7 +3399,7 @@ namespace BinXlsxRW {
else else
res = c_oSerConstants::ReadUnknown; res = c_oSerConstants::ReadUnknown;
return res; return res;
}; }
int ReadSheetData(BYTE type, long length, void* poResult) int ReadSheetData(BYTE type, long length, void* poResult)
{ {
int res = c_oSerConstants::ReadOk; int res = c_oSerConstants::ReadOk;
...@@ -3430,7 +3412,7 @@ namespace BinXlsxRW { ...@@ -3430,7 +3412,7 @@ namespace BinXlsxRW {
else else
res = c_oSerConstants::ReadUnknown; res = c_oSerConstants::ReadUnknown;
return res; return res;
}; }
int ReadRow(BYTE type, long length, void* poResult) int ReadRow(BYTE type, long length, void* poResult)
{ {
OOX::Spreadsheet::CRow* pRow = static_cast<OOX::Spreadsheet::CRow*>(poResult); OOX::Spreadsheet::CRow* pRow = static_cast<OOX::Spreadsheet::CRow*>(poResult);
...@@ -3638,7 +3620,7 @@ namespace BinXlsxRW { ...@@ -3638,7 +3620,7 @@ namespace BinXlsxRW {
else else
res = c_oSerConstants::ReadUnknown; res = c_oSerConstants::ReadUnknown;
return res; return res;
}; }
int ReadConditionalFormatting(BYTE type, long length, void* poResult) int ReadConditionalFormatting(BYTE type, long length, void* poResult)
{ {
OOX::Spreadsheet::CConditionalFormatting* pConditionalFormatting = static_cast<OOX::Spreadsheet::CConditionalFormatting*>(poResult); OOX::Spreadsheet::CConditionalFormatting* pConditionalFormatting = static_cast<OOX::Spreadsheet::CConditionalFormatting*>(poResult);
...@@ -3662,7 +3644,7 @@ namespace BinXlsxRW { ...@@ -3662,7 +3644,7 @@ namespace BinXlsxRW {
else else
res = c_oSerConstants::ReadUnknown; res = c_oSerConstants::ReadUnknown;
return res; return res;
}; }
int ReadConditionalFormattingRule(BYTE type, long length, void* poResult) int ReadConditionalFormattingRule(BYTE type, long length, void* poResult)
{ {
OOX::Spreadsheet::CConditionalFormattingRule* pConditionalFormattingRule = static_cast<OOX::Spreadsheet::CConditionalFormattingRule*>(poResult); OOX::Spreadsheet::CConditionalFormattingRule* pConditionalFormattingRule = static_cast<OOX::Spreadsheet::CConditionalFormattingRule*>(poResult);
...@@ -3779,7 +3761,7 @@ namespace BinXlsxRW { ...@@ -3779,7 +3761,7 @@ namespace BinXlsxRW {
else else
res = c_oSerConstants::ReadUnknown; res = c_oSerConstants::ReadUnknown;
return res; return res;
}; }
int ReadDataBar(BYTE type, long length, void* poResult) int ReadDataBar(BYTE type, long length, void* poResult)
{ {
OOX::Spreadsheet::CDataBar* pDataBar = static_cast<OOX::Spreadsheet::CDataBar*>(poResult); OOX::Spreadsheet::CDataBar* pDataBar = static_cast<OOX::Spreadsheet::CDataBar*>(poResult);
...@@ -4027,7 +4009,7 @@ namespace BinXlsxRW { ...@@ -4027,7 +4009,7 @@ namespace BinXlsxRW {
else else
res = c_oSerConstants::ReadUnknown; res = c_oSerConstants::ReadUnknown;
return res; return res;
}; }
int ReadSparklines(BYTE type, long length, void* poResult) int ReadSparklines(BYTE type, long length, void* poResult)
{ {
OOX::Spreadsheet::CSparklines* pSparklines = static_cast<OOX::Spreadsheet::CSparklines*>(poResult); OOX::Spreadsheet::CSparklines* pSparklines = static_cast<OOX::Spreadsheet::CSparklines*>(poResult);
...@@ -4041,7 +4023,7 @@ namespace BinXlsxRW { ...@@ -4041,7 +4023,7 @@ namespace BinXlsxRW {
else else
res = c_oSerConstants::ReadUnknown; res = c_oSerConstants::ReadUnknown;
return res; return res;
}; }
int ReadSparkline(BYTE type, long length, void* poResult) int ReadSparkline(BYTE type, long length, void* poResult)
{ {
OOX::Spreadsheet::CSparkline* pSparkline = static_cast<OOX::Spreadsheet::CSparkline*>(poResult); OOX::Spreadsheet::CSparkline* pSparkline = static_cast<OOX::Spreadsheet::CSparkline*>(poResult);
...@@ -4105,7 +4087,7 @@ namespace BinXlsxRW { ...@@ -4105,7 +4087,7 @@ namespace BinXlsxRW {
int Read() int Read()
{ {
return ReadTable(&BinaryOtherTableReader::ReadOtherTableContent, this); return ReadTable(&BinaryOtherTableReader::ReadOtherTableContent, this);
}; }
int ReadOtherTableContent(BYTE type, long length, void* poResult) int ReadOtherTableContent(BYTE type, long length, void* poResult)
{ {
int res = c_oSerConstants::ReadOk; int res = c_oSerConstants::ReadOk;
...@@ -4139,7 +4121,7 @@ namespace BinXlsxRW { ...@@ -4139,7 +4121,7 @@ namespace BinXlsxRW {
else else
res = c_oSerConstants::ReadUnknown; res = c_oSerConstants::ReadUnknown;
return res; return res;
}; }
int ReadMediaItem(BYTE type, long length, void* poResult) int ReadMediaItem(BYTE type, long length, void* poResult)
{ {
int res = c_oSerConstants::ReadOk; int res = c_oSerConstants::ReadOk;
......
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