Compare commits

...

16 Commits

Author SHA1 Message Date
674cc6c1a2 fix doct->docx background page settings 2017-03-01 14:18:35 +03:00
5d77cf9473 add ../ path for dll path 2017-03-01 13:23:11 +03:00
512dad1d24 fix double write attribute in background 2017-02-28 20:02:54 +03:00
3d684934f1 fix ppt background
fix bug 34177
read attributes (from line props, shape props , effects, 3D) without namespace
2017-02-28 19:03:04 +03:00
dd6ac185fb fix - remove tmp pptx folder 2017-02-28 18:27:00 +03:00
9825b6e32e Error writing xlsx (wrong ConditionalFormatting place) 2017-02-27 20:27:31 +03:00
653008ebfc XlsxFormat (graphicFrame) 2017-02-27 18:26:50 +03:00
236e93aa9c add GlobalVariable 2017-02-27 16:46:17 +03:00
164c7faf94 ..fix previus 2017-02-27 12:35:49 +03:00
4c07ddbcc7 . 2017-02-26 22:22:46 +03:00
7be543c3a6 pptx format .. extended reading xml 2017-02-26 18:57:48 +03:00
ccb47b0bda . 2017-02-23 15:20:20 +03:00
8aefacd411 new chart witout office_drawing(faster...) 2017-02-22 19:57:15 +03:00
6cd5fbcaca . 2017-02-21 23:38:23 +03:00
7c964b3f9c .. 2017-02-21 19:17:24 +03:00
8c43c781bd fix build 2017-02-21 18:00:39 +03:00
145 changed files with 2387 additions and 1465 deletions

View File

@ -6526,7 +6526,9 @@ public:
}
int Read_Background(BYTE type, long length, void* poResult)
{
int res = c_oSerConstants::ReadOk;
m_oFileWriter.m_oSettingWriter.AddSetting(L"<w:displayBackgroundShape/>");
int res = c_oSerConstants::ReadOk;
Background* pBackground = static_cast<Background*>(poResult);
if( c_oSerBackgroundType::Color == type )

View File

@ -780,28 +780,22 @@ namespace BinDocxRW
m_oBcw.m_oStream.WriteBYTE(c_oSerPropLenType::Byte);
m_oBcw.m_oStream.WriteBOOL(rPr.m_oVanish->m_oVal.ToBool());
}
if (false != rPr.m_sTextOutline.IsInit())
if (false != rPr.m_oTextOutline.IsInit())
{
std::wstring sTextOutline = rPr.m_sTextOutline.get2();
//делаем replace потому что читать имена node без namespace можем а атрибуты нет, потому что храним их в map
XmlUtils::replace_all(sTextOutline, L"w14:", L"");
m_oBcw.m_oStream.WriteBYTE(c_oSerProp_rPrType::TextOutline);
m_oBcw.m_oStream.WriteBYTE(c_oSerProp_rPrType::TextOutline);
m_oBcw.m_oStream.WriteBYTE(c_oSerPropLenType::Variable);
int nCurPos = m_oBcw.WriteItemWithLengthStart();
m_pOfficeDrawingConverter->GetRecordBinary(XMLWRITER_RECORD_TYPE_TEXT_OUTLINE, sTextOutline);
m_oBcw.m_oStream.WriteRecord2(0, rPr.m_oTextOutline);
m_oBcw.WriteItemWithLengthEnd(nCurPos);
}
if (false != rPr.m_sTextFill.IsInit())
if (rPr.m_oTextFill.getType() != OOX::et_Unknown)
{
std::wstring sTextFill = rPr.m_sTextFill.get2();
//делаем replace потому что читать имена node без namespace можем а атрибуты нет, потому что храним их в map
XmlUtils::replace_all(sTextFill, L"w14:", L"");
m_oBcw.m_oStream.WriteBYTE(c_oSerProp_rPrType::TextFill);
m_oBcw.m_oStream.WriteBYTE(c_oSerPropLenType::Variable);
int nCurPos = m_oBcw.WriteItemWithLengthStart();
m_pOfficeDrawingConverter->GetRecordBinary(XMLWRITER_RECORD_TYPE_TEXT_FILL, sTextFill);
m_oBcw.m_oStream.WriteRecord1(0, rPr.m_oTextFill);
m_oBcw.WriteItemWithLengthEnd(nCurPos);
}
if(rPr.m_oDel.IsInit())

View File

@ -33,8 +33,10 @@
#include "../utils.h"
#include "../../../Common/DocxFormat/Source/DocxFormat/Diagram/DiagramDrawing.h"
#include "../../../Common/DocxFormat/Source/Common/SimpleTypes_Drawing.h"
#include "../../../Common/DocxFormat/Source/XlsxFormat/Chart/Chart.h"
#include "../../../Common/DocxFormat/Source/Common/SimpleTypes_Drawing.h"
#include "../../../ASCOfficePPTXFile/PPTXFormat/Logic/GraphicFrame.h"
#include "../../../ASCOfficePPTXFile/PPTXFormat/Logic/Shape.h"
#include "../../../ASCOfficePPTXFile/PPTXFormat/Logic/Colors/SrgbClr.h"
#include "../../../ASCOfficePPTXFile/PPTXFormat/Logic/Colors/PrstClr.h"
@ -56,6 +58,106 @@ namespace Oox2Odf
{
return (1.0 * emu / (635 * 20.0));
}
void OoxConverter::convert(PPTX::Logic::GraphicFrame *oox_graphic_frame)
{
if (!oox_graphic_frame)return;
////////////////////////////////////////////////////////////////////////////////
odf_context()->drawing_context()->start_drawing();
convert(&oox_graphic_frame->nvGraphicFramePr);
if ( oox_graphic_frame->chartRec.IsInit())
{
convert(oox_graphic_frame->chartRec.GetPointer());
}
else if ( oox_graphic_frame->smartArt.IsInit())
{
OoxConverter::convert(oox_graphic_frame->smartArt.GetPointer());
}
else if ( oox_graphic_frame->pic.IsInit())
{
OoxConverter::convert(oox_graphic_frame->pic.GetPointer());
}
else if ( oox_graphic_frame->table.IsInit())
{
OoxConverter::convert(oox_graphic_frame->table.GetPointer());
}
else if ( oox_graphic_frame->element.IsInit())
{
OoxConverter::convert(oox_graphic_frame->element->GetElem().operator->());
}
odf_context()->drawing_context()->end_drawing();
}
void OoxConverter::convert(PPTX::Logic::NvGraphicFramePr *oox_framePr)
{
if (oox_framePr == NULL) return;
}
void OoxConverter::convert(PPTX::Logic::Table *oox_table)
{
if (oox_table == NULL) return;
}
void OoxConverter::convert(PPTX::Logic::SmartArt *oox_smart_art)
{
if (oox_smart_art == NULL) return;
if (oox_smart_art->id_data.IsInit() == false) return;
oox_smart_art->LoadDrawing();
if (oox_smart_art->m_diag.IsInit())
{
_CP_OPT(double) x, y, width, height, cx, cy;
odf_context()->drawing_context()->get_size (width, height);
odf_context()->drawing_context()->get_position (x, y);
oox_current_child_document = dynamic_cast<OOX::IFileContainer*>(oox_smart_art->m_oCommonRels.operator->());
odf_context()->drawing_context()->start_group();
odf_context()->drawing_context()->set_group_size (width, height, width, height);
odf_context()->drawing_context()->set_group_position (x, y, cx, cy);
convert(oox_smart_art->m_diag.GetPointer());
odf_context()->drawing_context()->end_group();
oox_current_child_document = NULL;
}
}
void OoxConverter::convert(PPTX::Logic::ChartRec *oox_chart)
{
if (!oox_chart) return;
if( !oox_chart->id_data.IsInit()) return;
_CP_OPT(double) width, height;
odf_context()->drawing_context()->get_size (width, height);
smart_ptr<OOX::File> oFile = find_file_by_id (oox_chart->id_data->get());
if (oFile.IsInit())
{
OOX::Spreadsheet::CChartSpace* pChart = (OOX::Spreadsheet::CChartSpace*)oFile.operator->();
if (pChart)
{
oox_current_child_document_spreadsheet = dynamic_cast<OOX::Spreadsheet::IFileContainer*>(pChart);
odf_context()->drawing_context()->start_object(odf_context()->get_next_name_object());
{
odf_context()->start_chart();
odf_context()->chart_context()->set_chart_size(width, height);
OoxConverter::convert(pChart->m_oChartSpace.m_oSpPr.GetPointer());
OoxConverter::convert(&pChart->m_oChartSpace);
odf_context()->end_chart();
}
odf_context()->drawing_context()->end_object();
oox_current_child_document_spreadsheet = NULL;
}
}
}
void OoxConverter::convert(PPTX::Logic::SpTree *oox_shape_tree)
{
if (oox_shape_tree == NULL) return;

View File

@ -311,6 +311,7 @@ namespace PPTX
{
namespace Logic
{
class GraphicFrame;
class SpTree;
class Shape;
class SpPr;
@ -342,6 +343,10 @@ namespace PPTX
class Fld;
class Br;
class MathParaWrapper;
class NvGraphicFramePr;
class Table;
class ChartRec;
class SmartArt;
}
}
@ -427,11 +432,12 @@ public:
void convert(OOX::Drawing::CRun *oox_run);
void convert(OOX::Drawing::CRunProperty *oox_run_pr, cpdoccore::odf_writer::style_text_properties * text_properties);
void convert(OOX::Drawing::CLineSpacing *oox_spacing, cpdoccore::odf_types::length_or_percent & length_or_percent);
//.diagram & pptx................................................................................................................................
void convert(PPTX::Logic::TextSpacing *oox_spacing, cpdoccore::odf_types::length_or_percent & length_or_percent);
//drawingML & pptx................................................................................................................................
void convert(PPTX::Logic::GraphicFrame *oox_graphicFrame);
void convert(PPTX::Logic::SpTree *oox_shape_tree);
void convert(PPTX::Logic::Shape *oox_shape);
void convert(PPTX::Logic::SpPr *oox_spPr, PPTX::Logic::ShapeStyle* oox_sp_style = NULL);
void convert(PPTX::Logic::TextSpacing *oox_spacing, cpdoccore::odf_types::length_or_percent & length_or_percent);
int convert(PPTX::Logic::PrstTxWarp *oox_text_preset);
void convert(PPTX::Logic::PrstGeom *oox_geom);
void convert(PPTX::Logic::CustGeom *oox_geom);
@ -457,6 +463,10 @@ public:
void convert(PPTX::Logic::Fld *oox_fld);
void convert(PPTX::Logic::Br *oox_br);
void convert(PPTX::Logic::MathParaWrapper *oox_math);
void convert(PPTX::Logic::NvGraphicFramePr *oox_framePr);
void convert(PPTX::Logic::ChartRec *oox_chart);
void convert(PPTX::Logic::SmartArt *oox_smart_art);
void convert(PPTX::Logic::Table *oox_table);
//.chart............................................................................................................................
void convert(OOX::Spreadsheet::CT_ChartSpace *oox_chart);
void convert(OOX::Spreadsheet::CT_Title *ct_title);

View File

@ -2074,8 +2074,9 @@ void DocxConverter::convert(OOX::Logic::CRunProperty *oox_run_pr, odf_writer::st
}
bool set_color = false;
if (oox_run_pr->m_oGradFill.IsInit())
if (oox_run_pr->m_oTextFill.getType() == OOX::et_a_gradFill)
{
NSCommon::smart_ptr<PPTX::Logic::GradFill> gradFill = oox_run_pr->m_oTextFill.Fill.smart_dynamic_cast<PPTX::Logic::GradFill>();
odf_writer::odf_drawing_context *drawing_context = odf_context()->drawing_context();
if (drawing_context)
{
@ -2083,7 +2084,7 @@ void DocxConverter::convert(OOX::Logic::CRunProperty *oox_run_pr, odf_writer::st
{
odf_context()->drawing_context()->start_area_properties();
{
OoxConverter::convert(oox_run_pr->m_oGradFill.GetPointer(), NULL);
OoxConverter::convert(gradFill.operator->());
}
odf_context()->drawing_context()->end_area_properties();

View File

@ -64,7 +64,7 @@ XlsxConverter::XlsxConverter(const std::wstring & path, const ProgressCallback*
pCallBack = CallBack;
xlsx_current_drawing = NULL;
xlsx_current_container = NULL;
if (UpdateProgress(400000))return;
}
@ -98,8 +98,8 @@ smart_ptr<OOX::File> XlsxConverter::find_file_by_id(std::wstring sId)
{
smart_ptr<OOX::File> oFile;
if (xlsx_current_drawing)
oFile = xlsx_current_drawing->Find(sId);
if (xlsx_current_container)
oFile = xlsx_current_container->Find(sId);
else if (oox_current_child_document)
oFile = oox_current_child_document->Find(sId);
else if (oox_current_child_document_spreadsheet)
@ -113,9 +113,9 @@ std::wstring XlsxConverter::find_link_by_id (std::wstring sId, int type)
if (type == 1)
{
if (ref.empty() && xlsx_current_drawing)
if (ref.empty() && xlsx_current_container)
{
smart_ptr<OOX::File> oFile = xlsx_current_drawing->Find(sId);
smart_ptr<OOX::File> oFile = xlsx_current_container->Find(sId);
if (oFile.IsInit() && OOX::Spreadsheet::FileTypes::Image == oFile->type())
{
OOX::Spreadsheet::Image* pImage = (OOX::Spreadsheet::Image*)oFile.operator->();
@ -1760,11 +1760,7 @@ void XlsxConverter::convert(OOX::Spreadsheet::CCellAnchor *oox_anchor)
{
convert(oox_anchor->m_oConnShape.GetPointer());
}
else if (oox_anchor->m_oGraphicFrame.IsInit())//chart
{
convert(oox_anchor->m_oGraphicFrame.GetPointer());
}
else if (oox_anchor->m_oGroupShape.IsInit())//chart
else if (oox_anchor->m_oGroupShape.IsInit())
{
convert(oox_anchor->m_oGroupShape.GetPointer());
}
@ -1773,7 +1769,8 @@ void XlsxConverter::convert(OOX::Spreadsheet::CCellAnchor *oox_anchor)
void XlsxConverter::convert(OOX::Spreadsheet::CDrawing *oox_drawing)
{
if (!oox_drawing)return;
xlsx_current_drawing = oox_drawing;
xlsx_current_container = dynamic_cast<OOX::Spreadsheet::IFileContainer*>(oox_drawing);
for (unsigned int dr = 0 ; dr < oox_drawing->m_arrItems.size(); dr++)
{
@ -1782,7 +1779,7 @@ void XlsxConverter::convert(OOX::Spreadsheet::CDrawing *oox_drawing)
ods_context->end_drawings();
}
xlsx_current_drawing = NULL;
xlsx_current_container = NULL;
}
@ -1840,11 +1837,6 @@ void XlsxConverter::convert(OOX::Spreadsheet::CGroupShape* oox_group_shape)
OOX::Spreadsheet::CPic* item = static_cast<OOX::Spreadsheet::CPic*>(oox_group_shape->m_arrItems[i]);
convert(item);
}break;
case OOX::Spreadsheet::et_xdr_GraphicFrame:
{
OOX::Spreadsheet::CGraphicFrame* item = static_cast<OOX::Spreadsheet::CGraphicFrame*>(oox_group_shape->m_arrItems[i]);
convert(item);
}break;
}
}
ods_context->drawing_context()->end_group();
@ -1913,64 +1905,6 @@ void XlsxConverter::convert(OOX::Spreadsheet::CShape* oox_shape)
}
void XlsxConverter::convert(OOX::Spreadsheet::CGraphicFrame* oox_graphic_frame)
{
if (!oox_graphic_frame)return;
if (!oox_graphic_frame->m_oGraphic.IsInit()) return;
if (!oox_graphic_frame->m_oGraphic->m_oGraphicData.IsInit()) return;
////////////////////////////////////////////////////////////////////////////////
ods_context->drawing_context()->start_drawing();
if (oox_graphic_frame->m_oNvGraphicFramePr.IsInit())
{
OoxConverter::convert(oox_graphic_frame->m_oNvGraphicFramePr->m_oCNvPr.GetPointer());
}
if ( OOX::Drawing::graphictypeChart == oox_graphic_frame->m_oGraphic->m_oGraphicData->m_eGraphicType)
{
convert(oox_graphic_frame->m_oGraphic->m_oGraphicData->m_oChart.GetPointer());
}
else if ( OOX::Drawing::graphictypeDiagram == oox_graphic_frame->m_oGraphic->m_oGraphicData->m_eGraphicType)
{
OoxConverter::convert(oox_graphic_frame->m_oGraphic->m_oGraphicData->m_oDiagrammParts.GetPointer());
}
ods_context->drawing_context()->end_drawing();
}
void XlsxConverter::convert(OOX::Spreadsheet::CGraphicChart *oox_chart)
{
if (!oox_chart) return;
if( !oox_chart->m_oRId.IsInit()) return;
_CP_OPT(double) width, height;
odf_context()->drawing_context()->get_size (width, height);
smart_ptr<OOX::File> oFile = xlsx_current_drawing->Find(oox_chart->m_oRId->GetValue());
if (oFile.IsInit() && OOX::Spreadsheet::FileTypes::Charts == oFile->type())
{
OOX::Spreadsheet::CChartSpace* pChart = (OOX::Spreadsheet::CChartSpace*)oFile.operator->();
if (pChart)
{
oox_current_child_document_spreadsheet = dynamic_cast<OOX::Spreadsheet::IFileContainer*>(pChart);
odf_context()->drawing_context()->start_object(ods_context->get_next_name_object());
{
odf_context()->start_chart();
odf_context()->chart_context()->set_chart_size(width, height);
OoxConverter::convert(pChart->m_oChartSpace.m_oSpPr.GetPointer());
OoxConverter::convert(&pChart->m_oChartSpace);
odf_context()->end_chart();
}
odf_context()->drawing_context()->end_object();
oox_current_child_document_spreadsheet = NULL;
}
}
}
void XlsxConverter::convert(OOX::Spreadsheet::CConnShape* oox_shape)
{
if (!oox_shape)return;

View File

@ -144,7 +144,7 @@ namespace Oox2Odf
void convert(OOX::Spreadsheet::WritingElement *oox_unknown);
private:
OOX::Spreadsheet::CXlsx *xlsx_document;
OOX::Spreadsheet::CDrawing *xlsx_current_drawing; //пока сюда .. потом покрасивше, для внешних ссылок
OOX::Spreadsheet::IFileContainer *xlsx_current_container;
odf_writer::ods_conversion_context *ods_context;
@ -199,9 +199,7 @@ namespace Oox2Odf
void convert(OOX::Spreadsheet::CPic *oox_picture);
void convert(OOX::Spreadsheet::CShape *oox_shape);
void convert(OOX::Spreadsheet::CConnShape *oox_conn_shape);
void convert(OOX::Spreadsheet::CGraphicFrame *oox_graphic_frame);
void convert(OOX::Spreadsheet::CGroupShape *oox_group_shape);
void convert(OOX::Spreadsheet::CGraphicChart *oox_chart);
void convert(OOX::Spreadsheet::CConditionalFormatting *oox_cond_fmt);
void convert(OOX::Spreadsheet::CConditionalFormattingRule *oox_cond_rule);

View File

@ -668,27 +668,27 @@ void NSPresentationEditor::CPPTXWriter::WriteColorScheme(CStringWriter& oStringW
oStringWriter.WriteString(L"<a:dk1><a:srgbClr val=\"" + XmlUtils::IntToString(colors[14].GetLONG_RGB(), L"%06X") + L"\"/></a:dk1>");
oStringWriter.WriteString(L"<a:lt1><a:srgbClr val=\"%" + XmlUtils::IntToString(colors[13].GetLONG_RGB(), L"%06X") + L"\"/></a:lt1>");
oStringWriter.WriteString(L"<a:lt1><a:srgbClr val=\"" + XmlUtils::IntToString(colors[13].GetLONG_RGB(), L"%06X") + L"\"/></a:lt1>");
oStringWriter.WriteString(L"<a:dk2><a:srgbClr val=\"%" + XmlUtils::IntToString(colors[16].GetLONG_RGB(), L"%06X") + L"\"/></a:dk2>");
oStringWriter.WriteString(L"<a:dk2><a:srgbClr val=\"" + XmlUtils::IntToString(colors[16].GetLONG_RGB(), L"%06X") + L"\"/></a:dk2>");
oStringWriter.WriteString(L"<a:lt2><a:srgbClr val=\"%" + XmlUtils::IntToString(colors[15].GetLONG_RGB(), L"%06X") + L"\"/></a:lt2>");
oStringWriter.WriteString(L"<a:lt2><a:srgbClr val=\"" + XmlUtils::IntToString(colors[15].GetLONG_RGB(), L"%06X") + L"\"/></a:lt2>");
oStringWriter.WriteString(L"<a:accent1><a:srgbClr val=\"%" + XmlUtils::IntToString(colors[5].GetLONG_RGB(), L"%06X") + L"\"/></a:accent1>");
oStringWriter.WriteString(L"<a:accent1><a:srgbClr val=\"" + XmlUtils::IntToString(colors[5].GetLONG_RGB(), L"%06X") + L"\"/></a:accent1>");
oStringWriter.WriteString(L"<a:accent2><a:srgbClr val=\"%" + XmlUtils::IntToString(colors[6].GetLONG_RGB(), L"%06X") + L"\"/></a:accent2>");
oStringWriter.WriteString(L"<a:accent2><a:srgbClr val=\"" + XmlUtils::IntToString(colors[6].GetLONG_RGB(), L"%06X") + L"\"/></a:accent2>");
oStringWriter.WriteString(L"<a:accent3><a:srgbClr val=\"%" + XmlUtils::IntToString(colors[7].GetLONG_RGB(), L"%06X") + L"\"/></a:accent3>");
oStringWriter.WriteString(L"<a:accent3><a:srgbClr val=\"" + XmlUtils::IntToString(colors[7].GetLONG_RGB(), L"%06X") + L"\"/></a:accent3>");
oStringWriter.WriteString(L"<a:accent4><a:srgbClr val=\"%" + XmlUtils::IntToString(colors[8].GetLONG_RGB(), L"%06X") + L"\"/></a:accent4>");
oStringWriter.WriteString(L"<a:accent4><a:srgbClr val=\"" + XmlUtils::IntToString(colors[8].GetLONG_RGB(), L"%06X") + L"\"/></a:accent4>");
oStringWriter.WriteString(L"<a:accent5><a:srgbClr val=\"%" + XmlUtils::IntToString(colors[9].GetLONG_RGB(), L"%06X") + L"\"/></a:accent5>");
oStringWriter.WriteString(L"<a:accent5><a:srgbClr val=\"" + XmlUtils::IntToString(colors[9].GetLONG_RGB(), L"%06X") + L"\"/></a:accent5>");
oStringWriter.WriteString(L"<a:accent6><a:srgbClr val=\"%" + XmlUtils::IntToString(colors[10].GetLONG_RGB(), L"%06X") + L"\"/></a:accent6>");
oStringWriter.WriteString(L"<a:accent6><a:srgbClr val=\"" + XmlUtils::IntToString(colors[10].GetLONG_RGB(), L"%06X") + L"\"/></a:accent6>");
oStringWriter.WriteString(L"<a:hlink><a:srgbClr val=\"%" + XmlUtils::IntToString(colors[11].GetLONG_RGB(), L"%06X") + L"\"/></a:hlink>");
oStringWriter.WriteString(L"<a:hlink><a:srgbClr val=\"" + XmlUtils::IntToString(colors[11].GetLONG_RGB(), L"%06X") + L"\"/></a:hlink>");
oStringWriter.WriteString(L"<a:folHlink><a:srgbClr val=\"%" + XmlUtils::IntToString(colors[12].GetLONG_RGB(), L"%06X") + L"\"/></a:folHlink>");
oStringWriter.WriteString(L"<a:folHlink><a:srgbClr val=\"" + XmlUtils::IntToString(colors[12].GetLONG_RGB(), L"%06X") + L"\"/></a:folHlink>");
oStringWriter.WriteString(L"</a:clrScheme>");
if (extra)

View File

@ -4841,6 +4841,8 @@ HRESULT CDrawingConverter::SaveObjectEx(LONG lStart, LONG lLength, const std::ws
}
std::wstring CDrawingConverter::SaveObjectBackground(LONG lStart, LONG lLength)
{
if (lLength < 1) return L"";
m_pReader->Seek(lStart);
++m_nCurrentIndexObject;

View File

@ -66,11 +66,11 @@ namespace PPTX
}
virtual void fromXML(XmlUtils::CXmlLiteReader& oReader)
{
std::wstring sName = oReader.GetName();
std::wstring sName = XmlUtils::GetNameNoNS(oReader.GetName());
if (sName == L"a:ahXY")
if (sName == L"ahXY")
ah.reset(new Logic::AhXY(oReader));
else if(sName == L"a:ahPolar")
else if(sName == L"ahPolar")
ah.reset(new Logic::AhPolar(oReader));
else ah.reset();
}

View File

@ -88,7 +88,7 @@ namespace PPTX
}
void ReadAttributes(XmlUtils::CXmlLiteReader& oReader, nullable_int & x, nullable_int & y, nullable_int & z )
{
WritingElement_ReadAttributes_Start( oReader )
WritingElement_ReadAttributes_Start_No_NS( oReader )
WritingElement_ReadAttributes_Read_if ( oReader, _T("x"), x)
WritingElement_ReadAttributes_Read_else_if ( oReader, _T("y"), y)
WritingElement_ReadAttributes_Read_else_if ( oReader, _T("z"), z)

View File

@ -59,7 +59,7 @@ namespace PPTX
}
void ReadAttributes(XmlUtils::CXmlLiteReader& oReader)
{
WritingElement_ReadAttributes_Start( oReader )
WritingElement_ReadAttributes_Start_No_NS( oReader )
WritingElement_ReadAttributes_Read_if ( oReader, _T("w"), w)
WritingElement_ReadAttributes_Read_else_if ( oReader, _T("h"), h)
WritingElement_ReadAttributes_Read_else_if ( oReader, _T("prst"), prst)

View File

@ -52,7 +52,11 @@ namespace PPTX
{
public:
WritingElement_AdditionConstructors(BodyPr)
PPTX_LOGIC_BASE2(BodyPr)
BodyPr(std::wstring ns = L"a")
{
m_namespace = ns;
}
virtual void fromXML(XmlUtils::CXmlLiteReader& oReader)
{
@ -147,6 +151,8 @@ namespace PPTX
virtual std::wstring toXML() const
{
if (m_namespace.empty()) m_namespace = L"a";
XmlUtils::CAttribute oAttr;
oAttr.Write(_T("rot"), rot);
oAttr.Write(_T("spcFirstLastPara"), spcFirstLastPara);
@ -186,6 +192,8 @@ namespace PPTX
virtual void toXmlWriter(NSBinPptxRW::CXmlWriter* pWriter) const
{
if (m_namespace.empty()) m_namespace = L"a";
pWriter->StartNode(m_namespace + _T(":bodyPr"));
pWriter->StartAttributes();

View File

@ -42,8 +42,13 @@ namespace PPTX
class CNvCxnSpPr : public WrapperWritingElement
{
public:
PPTX_LOGIC_BASE(CNvCxnSpPr)
WritingElement_AdditionConstructors(CNvCxnSpPr)
CNvCxnSpPr(std::wstring ns = L"p")
{
m_namespace = ns;
}
CNvCxnSpPr& operator=(const CNvCxnSpPr& oSrc)
{
parentFile = oSrc.parentFile;
@ -68,9 +73,58 @@ namespace PPTX
return *this;
}
public:
virtual void fromXML(XmlUtils::CXmlLiteReader& oReader)
{
m_namespace = XmlUtils::GetNamespace(oReader.GetName());
if ( oReader.IsEmptyNode() )
return;
int nParentDepth = oReader.GetDepth();
while( oReader.ReadNextSiblingNode( nParentDepth ) )
{
std::wstring strName = XmlUtils::GetNameNoNS(oReader.GetName());
if (strName == L"a:cxnSpLocks")
{
ReadAttributesLocks(oReader);
}
else if (strName == L"a:stCxn")
{
ReadAttributes(oReader, stCxn_id, stCxn_idx);
}
else if (strName == L"a:endCxn")
{
ReadAttributes(oReader, endCxn_id, endCxn_idx);
}
}
}
void ReadAttributes(XmlUtils::CXmlLiteReader& oReader, nullable_int & id, nullable_int & idx )
{
WritingElement_ReadAttributes_Start( oReader )
WritingElement_ReadAttributes_Read_if ( oReader, _T("id"), id)
WritingElement_ReadAttributes_Read_else_if ( oReader, _T("idx"), idx)
WritingElement_ReadAttributes_End( oReader )
}
void ReadAttributesLocks(XmlUtils::CXmlLiteReader& oReader)
{
WritingElement_ReadAttributes_Start( oReader )
WritingElement_ReadAttributes_Read_if ( oReader, _T("noAdjustHandles"), noAdjustHandles)
WritingElement_ReadAttributes_Read_else_if ( oReader, _T("noChangeArrowheads"), noChangeArrowheads)
WritingElement_ReadAttributes_Read_else_if ( oReader, _T("noChangeAspect"), noChangeAspect)
WritingElement_ReadAttributes_Read_else_if ( oReader, _T("noChangeShapeType"), noChangeShapeType)
WritingElement_ReadAttributes_Read_else_if ( oReader, _T("noEditPoints"), noEditPoints)
WritingElement_ReadAttributes_Read_else_if ( oReader, _T("noGrp"), noGrp)
WritingElement_ReadAttributes_Read_else_if ( oReader, _T("noMove"), noMove)
WritingElement_ReadAttributes_Read_else_if ( oReader, _T("noResize"), noResize)
WritingElement_ReadAttributes_Read_else_if ( oReader, _T("noRot"), noRot)
WritingElement_ReadAttributes_Read_else_if ( oReader, _T("noSelect"), noSelect)
WritingElement_ReadAttributes_End( oReader )
}
virtual void fromXML(XmlUtils::CXmlNode& node)
{
m_namespace = XmlUtils::GetNamespace(node.GetName());
XmlUtils::CXmlNode l_Locks;
if (node.GetNode(_T("a:cxnSpLocks"), l_Locks))
{
@ -132,17 +186,17 @@ namespace PPTX
if (_T("") != oAttr3.m_strValue)
oValue.m_strValue += XmlUtils::CreateNode(_T("a:endCxn"), oAttr3);
return XmlUtils::CreateNode(_T("p:cNvCxnSpPr"), oValue);
return XmlUtils::CreateNode(m_namespace + L":cNvCxnSpPr", oValue);
}
virtual void toXmlWriter(NSBinPptxRW::CXmlWriter* pWriter) const
{
if (pWriter->m_lDocType == XMLWRITER_DOC_TYPE_DOCX)
pWriter->StartNode(_T("wps:cNvCxnSpPr"));
else if (pWriter->m_lDocType == XMLWRITER_DOC_TYPE_XLSX)
pWriter->StartNode(_T("xdr:cNvCxnSpPr"));
else
pWriter->StartNode(_T("p:cNvCxnSpPr"));
std::wstring namespace_ = m_namespace;
if (pWriter->m_lDocType == XMLWRITER_DOC_TYPE_DOCX) namespace_ = _T("wps");
else if (pWriter->m_lDocType == XMLWRITER_DOC_TYPE_XLSX) namespace_ = _T("xdr");
pWriter->StartNode(namespace_ + L":cNvCxnSpPr");
pWriter->EndAttributes();
@ -181,12 +235,7 @@ namespace PPTX
pWriter->EndNode(_T("a:endCxn"));
}
if (pWriter->m_lDocType == XMLWRITER_DOC_TYPE_DOCX)
pWriter->EndNode(_T("wps:cNvCxnSpPr"));
else if (pWriter->m_lDocType == XMLWRITER_DOC_TYPE_XLSX)
pWriter->EndNode(_T("xdr:cNvCxnSpPr"));
else
pWriter->EndNode(_T("p:cNvCxnSpPr"));
pWriter->EndNode(namespace_ + L":cNvCxnSpPr");
}
virtual void toPPTY(NSBinPptxRW::CBinaryFileWriter* pWriter) const
@ -299,7 +348,8 @@ namespace PPTX
pReader->Seek(_end_rec);
}
public:
std::wstring m_namespace;
nullable_bool noAdjustHandles;
nullable_bool noChangeArrowheads;
nullable_bool noChangeAspect;

View File

@ -42,7 +42,12 @@ namespace PPTX
class CNvGraphicFramePr : public WrapperWritingElement
{
public:
PPTX_LOGIC_BASE(CNvGraphicFramePr)
WritingElement_AdditionConstructors(CNvGraphicFramePr)
CNvGraphicFramePr(std::wstring ns = L"p")
{
m_namespace = ns;
}
CNvGraphicFramePr& operator=(const CNvGraphicFramePr& oSrc)
{
@ -56,12 +61,43 @@ namespace PPTX
noResize = oSrc.noResize;
noSelect = oSrc.noSelect;
m_namespace = oSrc.m_namespace;
return *this;
}
void fromXML(XmlUtils::CXmlLiteReader& oReader)
{
m_namespace = XmlUtils::GetNamespace(oReader.GetName());
if ( oReader.IsEmptyNode() )
return;
int nParentDepth = oReader.GetDepth();
while( oReader.ReadNextSiblingNode( nParentDepth ) )
{
std::wstring strName = oReader.GetName();
public:
if (strName == L"a:graphicFrameLocks")
{
ReadAttributesLocks(oReader);
}
}
}
void ReadAttributesLocks(XmlUtils::CXmlLiteReader& oReader)
{
WritingElement_ReadAttributes_Start( oReader )
WritingElement_ReadAttributes_Read_if ( oReader, _T("noChangeAspect"), noChangeAspect)
WritingElement_ReadAttributes_Read_else_if ( oReader, _T("noGrp"), noGrp)
WritingElement_ReadAttributes_Read_else_if ( oReader, _T("noMove"), noMove)
WritingElement_ReadAttributes_Read_else_if ( oReader, _T("noResize"), noResize)
WritingElement_ReadAttributes_Read_else_if ( oReader, _T("noDrilldown"), noDrilldown)
WritingElement_ReadAttributes_Read_else_if ( oReader, _T("noSelect"), noSelect)
WritingElement_ReadAttributes_End( oReader )
}
virtual void fromXML(XmlUtils::CXmlNode& node)
{
m_namespace = XmlUtils::GetNamespace(node.GetName());
XmlUtils::CXmlNode oNode;
if (node.GetNode(_T("a:graphicFrameLocks"), oNode))
{
@ -84,18 +120,16 @@ namespace PPTX
oAttr.Write(_T("noResize"), noResize);
oAttr.Write(_T("noSelect"), noSelect);
if (_T("") == oAttr.m_strValue)
return _T("<p:cNvGraphicFramePr/>");
return _T("<p:cNvGraphicFramePr>") + XmlUtils::CreateNode(_T("a:graphicFrameLocks"), oAttr) + _T("</p:cNvGraphicFramePr>");
return XmlUtils::CreateNode(m_namespace + L":cNvGraphicFramePr>", XmlUtils::CreateNode(_T("a:graphicFrameLocks"), oAttr));
}
virtual void toXmlWriter(NSBinPptxRW::CXmlWriter* pWriter) const
{
if (pWriter->m_lDocType == XMLWRITER_DOC_TYPE_XLSX)
pWriter->StartNode(_T("xdr:cNvGraphicFramePr"));
else
pWriter->StartNode(_T("p:cNvGraphicFramePr"));
std::wstring namespace_ = m_namespace;
if (pWriter->m_lDocType == XMLWRITER_DOC_TYPE_XLSX) namespace_ = L"xdr";
pWriter->StartNode(namespace_ + L":cNvGraphicFramePr");
pWriter->EndAttributes();
@ -114,10 +148,7 @@ namespace PPTX
pWriter->EndNode(_T("a:graphicFrameLocks"));
if (pWriter->m_lDocType == XMLWRITER_DOC_TYPE_XLSX)
pWriter->EndNode(_T("xdr:cNvGraphicFramePr"));
else
pWriter->EndNode(_T("p:cNvGraphicFramePr"));
pWriter->EndNode(namespace_ + L":cNvGraphicFramePr");
}
virtual void toPPTY(NSBinPptxRW::CBinaryFileWriter* pWriter) const
@ -182,8 +213,8 @@ namespace PPTX
pReader->Seek(_end_rec);
}
std::wstring m_namespace;
public:
nullable_bool noChangeAspect;
nullable_bool noDrilldown;
nullable_bool noGrp;

View File

@ -35,7 +35,6 @@ namespace PPTX
{
namespace Logic
{
CNvGrpSpPr& CNvGrpSpPr::operator=(const CNvGrpSpPr& oSrc)
{
parentFile = oSrc.parentFile;
@ -54,6 +53,8 @@ namespace PPTX
void CNvGrpSpPr::fromXML(XmlUtils::CXmlNode& node)
{
m_namespace = XmlUtils::GetNamespace(node.GetName());
XmlUtils::CXmlNode oNode;
if (node.GetNode(_T("a:grpSpLocks"), oNode))
{
@ -66,8 +67,36 @@ namespace PPTX
oNode.ReadAttributeBase(L"noUngrp", noUngrp);
}
}
void CNvGrpSpPr::ReadAttributesLocks(XmlUtils::CXmlLiteReader& oReader)
{
WritingElement_ReadAttributes_Start( oReader )
WritingElement_ReadAttributes_Read_if ( oReader, _T("noChangeAspect"), noChangeAspect)
WritingElement_ReadAttributes_Read_else_if ( oReader, _T("noGrp"), noGrp)
WritingElement_ReadAttributes_Read_else_if ( oReader, _T("noMove"), noMove)
WritingElement_ReadAttributes_Read_else_if ( oReader, _T("noResize"), noResize)
WritingElement_ReadAttributes_Read_else_if ( oReader, _T("noRot"), noRot)
WritingElement_ReadAttributes_Read_else_if ( oReader, _T("noSelect"), noSelect)
WritingElement_ReadAttributes_Read_else_if ( oReader, _T("noUngrp"), noUngrp)
WritingElement_ReadAttributes_End( oReader )
}
void CNvGrpSpPr::fromXML(XmlUtils::CXmlLiteReader& oReader)
{
m_namespace = XmlUtils::GetNamespace(oReader.GetName());
if ( oReader.IsEmptyNode() )
return;
int nParentDepth = oReader.GetDepth();
while( oReader.ReadNextSiblingNode( nParentDepth ) )
{
std::wstring strName = oReader.GetName();
if (strName == L"a:grpSpLocks")
{
ReadAttributesLocks(oReader);
}
}
}
std::wstring CNvGrpSpPr::toXML() const
{
XmlUtils::CAttribute oAttr;
@ -79,10 +108,7 @@ namespace PPTX
oAttr.Write(_T("noSelect"), noSelect);
oAttr.Write(_T("noUngrp"), noUngrp);
if (_T("") == oAttr.m_strValue)
return _T("<p:cNvGrpSpPr/>");
return _T("<p:cNvGrpSpPr>") + XmlUtils::CreateNode(_T("a:grpSpLocks"), oAttr) + _T("</p:cNvGrpSpPr>");
return XmlUtils::CreateNode(m_namespace + L":cNvGrpSpPr", XmlUtils::CreateNode(_T("a:grpSpLocks"), oAttr));
}
} // namespace Logic

View File

@ -42,18 +42,26 @@ namespace PPTX
class CNvGrpSpPr : public WrapperWritingElement
{
public:
PPTX_LOGIC_BASE(CNvGrpSpPr)
WritingElement_AdditionConstructors(CNvGrpSpPr)
CNvGrpSpPr& operator=(const CNvGrpSpPr& oSrc);
CNvGrpSpPr(std::wstring ns = L"p")
{
m_namespace = ns;
}
CNvGrpSpPr& operator=(const CNvGrpSpPr& oSrc);
public:
virtual void fromXML(XmlUtils::CXmlNode& node);
virtual void fromXML(XmlUtils::CXmlLiteReader& oReader);
virtual std::wstring toXML() const;
virtual void toXmlWriter(NSBinPptxRW::CXmlWriter* pWriter) const
{
std::wstring ns = m_namespace;
if (pWriter->m_lDocType == XMLWRITER_DOC_TYPE_XLSX)
ns = L"xdr";
if (!noChangeAspect.is_init() &&
!noGrp.is_init() &&
!noMove.is_init() &&
@ -62,17 +70,11 @@ namespace PPTX
!noSelect.is_init() &&
!noUngrp.is_init())
{
if (pWriter->m_lDocType == XMLWRITER_DOC_TYPE_XLSX)
pWriter->WriteString(_T("<xdr:cNvGrpSpPr/>"));
else
pWriter->WriteString(_T("<p:cNvGrpSpPr/>"));
pWriter->WriteString(L"<" + ns + L":cNvGrpSpPr/>");
return;
}
if (pWriter->m_lDocType == XMLWRITER_DOC_TYPE_XLSX)
pWriter->WriteString(_T("<xdr:cNvGrpSpPr>"));
else
pWriter->WriteString(_T("<p:cNvGrpSpPr>"));
pWriter->WriteString(L"<" + ns + L":cNvGrpSpPr>");
pWriter->StartNode(_T("a:grpSpLocks"));
@ -88,10 +90,7 @@ namespace PPTX
pWriter->EndNode(_T("a:grpSpLocks"));
if (pWriter->m_lDocType == XMLWRITER_DOC_TYPE_XLSX)
pWriter->WriteString(_T("</xdr:cNvGrpSpPr>"));
else
pWriter->WriteString(_T("</p:cNvGrpSpPr>"));
pWriter->WriteString(L"</" + ns + L":cNvGrpSpPr>");
}
void toXmlWriter2(const std::wstring& strNS, NSBinPptxRW::CXmlWriter* pWriter) const
@ -192,8 +191,8 @@ namespace PPTX
pReader->Seek(_end_rec);
}
std::wstring m_namespace;
public:
nullable_bool noChangeAspect;
nullable_bool noGrp;
nullable_bool noMove;
@ -202,6 +201,7 @@ namespace PPTX
nullable_bool noSelect;
nullable_bool noUngrp;
protected:
void ReadAttributesLocks(XmlUtils::CXmlLiteReader& oReader);
virtual void FillParentPointersForChilds(){};
};
} // namespace Logic

View File

@ -44,7 +44,12 @@ namespace PPTX
{
public:
PPTX_LOGIC_BASE(CNvPicPr)
WritingElement_AdditionConstructors(CNvPicPr)
CNvPicPr(std::wstring ns = L"p")
{
m_namespace = ns;
}
CNvPicPr& operator=(const CNvPicPr& oSrc)
{
@ -65,10 +70,52 @@ namespace PPTX
noRot = oSrc.noRot;
noSelect = oSrc.noSelect;
m_namespace = oSrc.m_namespace;
return *this;
}
void ReadAttributes(XmlUtils::CXmlLiteReader& oReader)
{
WritingElement_ReadAttributes_Start ( oReader )
WritingElement_ReadAttributes_ReadSingle( oReader, _T("preferRelativeResize"), preferRelativeResize )
WritingElement_ReadAttributes_End ( oReader )
}
virtual void fromXML(XmlUtils::CXmlLiteReader& oReader)
{
m_namespace = XmlUtils::GetNamespace(oReader.GetName());
public:
ReadAttributes( oReader );
if ( oReader.IsEmptyNode() )
return;
int nParentDepth = oReader.GetDepth();
while( oReader.ReadNextSiblingNode( nParentDepth ) )
{
std::wstring strName = XmlUtils::GetNameNoNS(oReader.GetName());
if (_T("a:picLocks") == strName)
{
ReadAttributesLocks(oReader);
}
}
}
void ReadAttributesLocks(XmlUtils::CXmlLiteReader& oReader)
{
WritingElement_ReadAttributes_Start( oReader )
WritingElement_ReadAttributes_Read_if ( oReader, _T("noAdjustHandles"), noAdjustHandles)
WritingElement_ReadAttributes_Read_else_if ( oReader, _T("noChangeArrowheads"), noChangeArrowheads)
WritingElement_ReadAttributes_Read_else_if ( oReader, _T("noChangeAspect"), noChangeAspect)
WritingElement_ReadAttributes_Read_else_if ( oReader, _T("noChangeShapeType"), noChangeShapeType)
WritingElement_ReadAttributes_Read_else_if ( oReader, _T("noCrop"), noCrop)
WritingElement_ReadAttributes_Read_else_if ( oReader, _T("noEditPoints"), noEditPoints)
WritingElement_ReadAttributes_Read_else_if ( oReader, _T("noGrp"), noGrp)
WritingElement_ReadAttributes_Read_else_if ( oReader, _T("noMove"), noMove)
WritingElement_ReadAttributes_Read_else_if ( oReader, _T("noResize"), noResize)
WritingElement_ReadAttributes_Read_else_if ( oReader, _T("noRot"), noRot)
WritingElement_ReadAttributes_Read_else_if ( oReader, _T("noSelect"), noSelect)
WritingElement_ReadAttributes_End( oReader )
}
virtual void fromXML(XmlUtils::CXmlNode& node)
{
node.ReadAttributeBase(L"preferRelativeResize", preferRelativeResize);
@ -118,12 +165,12 @@ namespace PPTX
virtual void toXmlWriter(NSBinPptxRW::CXmlWriter* pWriter) const
{
if (pWriter->m_lDocType == XMLWRITER_DOC_TYPE_DOCX)
pWriter->StartNode(_T("pic:cNvPicPr"));
else if (pWriter->m_lDocType == XMLWRITER_DOC_TYPE_XLSX)
pWriter->StartNode(_T("xdr:cNvPicPr"));
else
pWriter->StartNode(_T("p:cNvPicPr"));
std::wstring namespace_ = m_namespace;
if (pWriter->m_lDocType == XMLWRITER_DOC_TYPE_DOCX) namespace_ = L"pic";
else if (pWriter->m_lDocType == XMLWRITER_DOC_TYPE_XLSX) namespace_ = L"xdr";
pWriter->StartNode(namespace_ + L":cNvPicPr");
pWriter->StartAttributes();
pWriter->WriteAttribute(_T("preferRelativeResize"), preferRelativeResize);
@ -157,13 +204,7 @@ namespace PPTX
pWriter->EndAttributes();
pWriter->EndNode(_T("a:picLocks"));
}
if (pWriter->m_lDocType == XMLWRITER_DOC_TYPE_DOCX)
pWriter->EndNode(_T("pic:cNvPicPr"));
else if (pWriter->m_lDocType == XMLWRITER_DOC_TYPE_XLSX)
pWriter->EndNode(_T("xdr:cNvPicPr"));
else
pWriter->EndNode(_T("p:cNvPicPr"));
pWriter->EndNode(namespace_ + L":cNvPicPr");
}
virtual void toPPTY(NSBinPptxRW::CBinaryFileWriter* pWriter) const
@ -262,8 +303,8 @@ namespace PPTX
pReader->Seek(_end_rec);
}
std::wstring m_namespace;
public:
nullable_bool preferRelativeResize;
nullable_bool noAdjustHandles;

View File

@ -44,15 +44,54 @@ namespace PPTX
class CNvPr : public WrapperWritingElement
{
public:
PPTX_LOGIC_BASE(CNvPr)
WritingElement_AdditionConstructors(CNvPr)
CNvPr(std::wstring ns = L"p")
{
m_namespace = ns;
}
virtual OOX::EElementType getType () const
{
return OOX::et_p_cNvPr;
}
void ReadAttributes(XmlUtils::CXmlLiteReader& oReader)
{
nullable_int id_;
WritingElement_ReadAttributes_Start( oReader )
WritingElement_ReadAttributes_Read_if ( oReader, _T("id"), id_)
WritingElement_ReadAttributes_Read_else_if ( oReader, _T("name"), name)
WritingElement_ReadAttributes_Read_else_if ( oReader, _T("descr"), descr)
WritingElement_ReadAttributes_Read_else_if ( oReader, _T("hidden"), hidden)
WritingElement_ReadAttributes_Read_else_if ( oReader, _T("title"), title)
WritingElement_ReadAttributes_End( oReader )
id = id_.get_value_or(0);
Normalize();
}
virtual void fromXML(XmlUtils::CXmlLiteReader& oReader)
{
m_namespace = XmlUtils::GetNamespace(oReader.GetName());
ReadAttributes( oReader );
if ( oReader.IsEmptyNode() )
return;
int nParentDepth = oReader.GetDepth();
while( oReader.ReadNextSiblingNode( nParentDepth ) )
{
std::wstring sName = oReader.GetName();
if (sName == L"a:hlinkClick")
hlinkClick = oReader;
else if (sName == L"a:hlinkHover")
hlinkHover = oReader;
}
}
virtual void fromXML(XmlUtils::CXmlNode& node)
{
m_namespace = XmlUtils::GetNamespace(node.GetName());
id = node.ReadAttributeInt(L"id");
name = node.GetAttribute(L"name");
@ -79,18 +118,15 @@ namespace PPTX
oValue.WriteNullable(hlinkClick);
oValue.WriteNullable(hlinkHover);
return XmlUtils::CreateNode(_T("p:cNvPr"), oAttr, oValue);
return XmlUtils::CreateNode(m_namespace + L":cNvPr", oAttr, oValue);
}
virtual void toXmlWriter(NSBinPptxRW::CXmlWriter* pWriter) const
{
std::wstring namespace_;
if (pWriter->m_lDocType == XMLWRITER_DOC_TYPE_DOCX)
namespace_= _T("pic");
else if (pWriter->m_lDocType == XMLWRITER_DOC_TYPE_XLSX)
namespace_= _T("xdr");
else
namespace_= _T("p");
std::wstring namespace_ = m_namespace;
if (pWriter->m_lDocType == XMLWRITER_DOC_TYPE_DOCX) namespace_= _T("pic");
else if (pWriter->m_lDocType == XMLWRITER_DOC_TYPE_XLSX) namespace_= _T("xdr");
toXmlWriter2(namespace_, pWriter);
@ -196,7 +232,8 @@ namespace PPTX
pReader->Seek(_end_rec);
}
public:
std::wstring m_namespace;
int id;
std::wstring name;
nullable_string descr;

View File

@ -42,7 +42,12 @@ namespace PPTX
class CNvSpPr : public WrapperWritingElement
{
public:
PPTX_LOGIC_BASE(CNvSpPr)
WritingElement_AdditionConstructors(CNvSpPr)
CNvSpPr(std::wstring ns = L"p")
{
m_namespace = ns;
}
CNvSpPr& operator=(const CNvSpPr& oSrc)
{
@ -65,9 +70,52 @@ namespace PPTX
return *this;
}
public:
virtual void fromXML(XmlUtils::CXmlLiteReader& oReader)
{
m_namespace = XmlUtils::GetNamespace(oReader.GetName());
ReadAttributes(oReader);
if ( oReader.IsEmptyNode() )
return;
int nParentDepth = oReader.GetDepth();
while( oReader.ReadNextSiblingNode( nParentDepth ) )
{
std::wstring strName = oReader.GetName();
if (strName == L"a:spLocks")
{
ReadAttributesLocks(oReader);
}
}
}
void ReadAttributesLocks(XmlUtils::CXmlLiteReader& oReader)
{
WritingElement_ReadAttributes_Start( oReader )
WritingElement_ReadAttributes_Read_if ( oReader, _T("noAdjustHandles"), noAdjustHandles)
WritingElement_ReadAttributes_Read_else_if ( oReader, _T("noGrp"), noGrp)
WritingElement_ReadAttributes_Read_else_if ( oReader, _T("noMove"), noMove)
WritingElement_ReadAttributes_Read_else_if ( oReader, _T("noRot"), noRot)
WritingElement_ReadAttributes_Read_else_if ( oReader, _T("noResize"), noResize)
WritingElement_ReadAttributes_Read_else_if ( oReader, _T("noTextEdit"), noTextEdit)
WritingElement_ReadAttributes_Read_else_if ( oReader, _T("noSelect"), noSelect)
WritingElement_ReadAttributes_Read_else_if ( oReader, _T("noChangeArrowheads"), noChangeArrowheads)
WritingElement_ReadAttributes_Read_else_if ( oReader, _T("noChangeShapeType"), noChangeShapeType)
WritingElement_ReadAttributes_Read_else_if ( oReader, _T("noChangeAspect"), noChangeAspect)
WritingElement_ReadAttributes_Read_else_if ( oReader, _T("noEditPoints"), noEditPoints)
WritingElement_ReadAttributes_End( oReader )
}
void ReadAttributes(XmlUtils::CXmlLiteReader& oReader)
{
WritingElement_ReadAttributes_Start( oReader )
WritingElement_ReadAttributes_ReadSingle( oReader, _T("txBox"), txBox)
WritingElement_ReadAttributes_End( oReader )
}
virtual void fromXML(XmlUtils::CXmlNode& node)
{
m_namespace = XmlUtils::GetNamespace(node.GetName());
node.ReadAttributeBase(L"txBox", txBox);
XmlUtils::CXmlNode l_Locks;
@ -105,16 +153,18 @@ namespace PPTX
oAttr2.Write(_T("noTextEdit"), noTextEdit);
if (_T("") == oAttr2.m_strValue)
return XmlUtils::CreateNode(_T("p:cNvSpPr"), oAttr1);
return XmlUtils::CreateNode(m_namespace + L":cNvSpPr", oAttr1);
return XmlUtils::CreateNode(_T("p:cNvSpPr"), oAttr1, XmlUtils::CreateNode(_T("a:spLocks"), oAttr2));
return XmlUtils::CreateNode(m_namespace + L":cNvSpPr", oAttr1, XmlUtils::CreateNode(_T("a:spLocks"), oAttr2));
}
virtual void toXmlWriter(NSBinPptxRW::CXmlWriter* pWriter) const
{
if (pWriter->m_lDocType == XMLWRITER_DOC_TYPE_XLSX)
pWriter->StartNode(_T("xdr:cNvSpPr"));
else
pWriter->StartNode(_T("p:cNvSpPr"));
std::wstring namespace_ = m_namespace;
if (pWriter->m_lDocType == XMLWRITER_DOC_TYPE_DOCX) namespace_ = _T("wps");
else if (pWriter->m_lDocType == XMLWRITER_DOC_TYPE_XLSX) namespace_ = _T("xdr");
pWriter->StartNode(namespace_ + L":cNvSpPr");
pWriter->StartAttributes();
pWriter->WriteAttribute(_T("txBox"), txBox);
@ -151,10 +201,7 @@ namespace PPTX
pWriter->EndNode(_T("a:spLocks"));
}
if (pWriter->m_lDocType == XMLWRITER_DOC_TYPE_XLSX)
pWriter->EndNode(_T("xdr:cNvSpPr"));
else
pWriter->EndNode(_T("p:cNvSpPr"));
pWriter->EndNode(namespace_ + L":cNvSpPr");
}
void toXmlWriter2(const std::wstring& strNS, NSBinPptxRW::CXmlWriter* pWriter) const
@ -296,7 +343,8 @@ namespace PPTX
pReader->Seek(_end_rec);
}
public:
std::wstring m_namespace;
nullable_bool txBox;
nullable_bool noAdjustHandles;
nullable_bool noChangeArrowheads;

View File

@ -45,9 +45,12 @@ namespace PPTX
class CSld : public WrapperWritingElement
{
public:
PPTX_LOGIC_BASE(CSld)
WritingElement_AdditionConstructors(CSld)
PPTX_LOGIC_BASE2(CSld)
public:
virtual void fromXML(XmlUtils::CXmlLiteReader& oReader)
{
}
virtual void fromXML(XmlUtils::CXmlNode& node)
{
node.ReadAttributeBase(L"name", attrName);

View File

@ -74,7 +74,7 @@ namespace PPTX
}
void ReadAttributes(XmlUtils::CXmlLiteReader& oReader)
{
WritingElement_ReadAttributes_Start( oReader )
WritingElement_ReadAttributes_Start_No_NS( oReader )
WritingElement_ReadAttributes_Read_if ( oReader, _T("prst"), prst)
WritingElement_ReadAttributes_Read_else_if ( oReader, _T("fov"), fov)
WritingElement_ReadAttributes_Read_else_if ( oReader, _T("zoom"), zoom)

View File

@ -45,15 +45,43 @@ namespace PPTX
class Cell3D : public WrapperWritingElement
{
public:
PPTX_LOGIC_BASE(Cell3D)
WritingElement_AdditionConstructors(Cell3D)
public:
Cell3D()
{
}
virtual void fromXML(XmlUtils::CXmlLiteReader& oReader)
{
ReadAttributes( oReader );
if ( oReader.IsEmptyNode() )
return;
int nParentDepth = oReader.GetDepth();
while( oReader.ReadNextSiblingNode( nParentDepth ) )
{
std::wstring strName = XmlUtils::GetNameNoNS(oReader.GetName());
if (_T("bevel") == strName)
bevel = oReader;
else if (_T("lightRig") == strName)
lightRig = oReader;
}
FillParentPointersForChilds();
}
void ReadAttributes(XmlUtils::CXmlLiteReader& oReader)
{
WritingElement_ReadAttributes_Start ( oReader )
WritingElement_ReadAttributes_ReadSingle ( oReader, _T("prstMaterial"), prstMaterial )
WritingElement_ReadAttributes_End ( oReader )
}
virtual void fromXML(XmlUtils::CXmlNode& node)
{
node.ReadAttributeBase(L"prstMaterial", prstMaterial);
bevel = node.ReadNodeNoNS(_T("bevel"));
lightRig = node.ReadNode(_T("a:lightRig"));
lightRig = node.ReadNodeNoNS(_T("lightRig"));
FillParentPointersForChilds();
}

View File

@ -43,8 +43,13 @@ namespace PPTX
class ClrMap : public WrapperWritingElement
{
public:
PPTX_LOGIC_BASE(ClrMap)
WritingElement_AdditionConstructors(ClrMap)
PPTX_LOGIC_BASE2(ClrMap)
virtual OOX::EElementType getType() const
{
return OOX::et_a_clrMap;
}
ClrMap& operator=(const ClrMap& oSrc)
{
parentFile = oSrc.parentFile;
@ -60,7 +65,57 @@ namespace PPTX
return *this;
}
public:
virtual void fromXML(XmlUtils::CXmlLiteReader& oReader)
{
m_name = oReader.GetName();
ColorMap.clear();
ReadAttributes(oReader);
}
void ReadAttributes(XmlUtils::CXmlLiteReader& oReader)
{
Limit::ColorSchemeIndex lColorIndex_accent1;
Limit::ColorSchemeIndex lColorIndex_accent2;
Limit::ColorSchemeIndex lColorIndex_accent3;
Limit::ColorSchemeIndex lColorIndex_accent4;
Limit::ColorSchemeIndex lColorIndex_accent5;
Limit::ColorSchemeIndex lColorIndex_accent6;
Limit::ColorSchemeIndex lColorIndex_bg1;
Limit::ColorSchemeIndex lColorIndex_bg2;
Limit::ColorSchemeIndex lColorIndex_tx1;
Limit::ColorSchemeIndex lColorIndex_tx2;
Limit::ColorSchemeIndex lColorIndex_folHlink;
Limit::ColorSchemeIndex lColorIndex_hlink;
WritingElement_ReadAttributes_Start( oReader )
WritingElement_ReadAttributes_Read_if ( oReader, _T("accent1"), lColorIndex_accent1)
WritingElement_ReadAttributes_Read_else_if( oReader, _T("accent2"), lColorIndex_accent2 )
WritingElement_ReadAttributes_Read_else_if( oReader, _T("accent3"), lColorIndex_accent3 )
WritingElement_ReadAttributes_Read_else_if( oReader, _T("accent4"), lColorIndex_accent4 )
WritingElement_ReadAttributes_Read_else_if( oReader, _T("accent5"), lColorIndex_accent5 )
WritingElement_ReadAttributes_Read_else_if( oReader, _T("accent6"), lColorIndex_accent6 )
WritingElement_ReadAttributes_Read_else_if( oReader, _T("bg1"), lColorIndex_bg1 )
WritingElement_ReadAttributes_Read_else_if( oReader, _T("bg2"), lColorIndex_bg2 )
WritingElement_ReadAttributes_Read_else_if( oReader, _T("tx1"), lColorIndex_tx1 )
WritingElement_ReadAttributes_Read_else_if( oReader, _T("tx1"), lColorIndex_tx2 )
WritingElement_ReadAttributes_Read_else_if( oReader, _T("folHlink"), lColorIndex_folHlink )
WritingElement_ReadAttributes_Read_else_if( oReader, _T("hlink"), lColorIndex_hlink )
WritingElement_ReadAttributes_End( oReader )
ColorMap.insert(std::pair<std::wstring,Limit::ColorSchemeIndex>(_T("accent1"), lColorIndex_accent1));
ColorMap.insert(std::pair<std::wstring,Limit::ColorSchemeIndex>(_T("accent2"), lColorIndex_accent2));
ColorMap.insert(std::pair<std::wstring,Limit::ColorSchemeIndex>(_T("accent3"), lColorIndex_accent3));
ColorMap.insert(std::pair<std::wstring,Limit::ColorSchemeIndex>(_T("accent4"), lColorIndex_accent4));
ColorMap.insert(std::pair<std::wstring,Limit::ColorSchemeIndex>(_T("accent5"), lColorIndex_accent5));
ColorMap.insert(std::pair<std::wstring,Limit::ColorSchemeIndex>(_T("accent6"), lColorIndex_accent6));
ColorMap.insert(std::pair<std::wstring,Limit::ColorSchemeIndex>(_T("bg1"), lColorIndex_bg1));
ColorMap.insert(std::pair<std::wstring,Limit::ColorSchemeIndex>(_T("bg2"), lColorIndex_bg2));
ColorMap.insert(std::pair<std::wstring,Limit::ColorSchemeIndex>(_T("tx1"), lColorIndex_tx1));
ColorMap.insert(std::pair<std::wstring,Limit::ColorSchemeIndex>(_T("tx2"), lColorIndex_tx2));
ColorMap.insert(std::pair<std::wstring,Limit::ColorSchemeIndex>(_T("folHlink"), lColorIndex_folHlink));
ColorMap.insert(std::pair<std::wstring,Limit::ColorSchemeIndex>(_T("hlink"), lColorIndex_hlink));
}
virtual void fromXML(XmlUtils::CXmlNode& node)
{
m_name = node.GetName();

View File

@ -43,9 +43,34 @@ namespace PPTX
class ClrMapOvr : public WrapperWritingElement
{
public:
PPTX_LOGIC_BASE(ClrMapOvr)
WritingElement_AdditionConstructors(ClrMapOvr)
PPTX_LOGIC_BASE2(ClrMapOvr)
public:
virtual OOX::EElementType getType() const
{
return OOX::et_a_clrMapOvr;
}
virtual void fromXML(XmlUtils::CXmlLiteReader& oReader)
{
if ( oReader.IsEmptyNode() )
return;
int nParentDepth = oReader.GetDepth();
while( oReader.ReadNextSiblingNode( nParentDepth ) )
{
std::wstring sName = XmlUtils::GetNameNoNS(oReader.GetName());
if ( L"overrideClrMapping" == sName)
{
overrideClrMapping = oReader;
break;
}
}
if (overrideClrMapping.is_init())
overrideClrMapping->m_name = _T("a:overrideClrMapping");
FillParentPointersForChilds();
}
virtual void fromXML(XmlUtils::CXmlNode& node)
{
overrideClrMapping = node.ReadNodeNoNS(_T("overrideClrMapping"));

View File

@ -63,7 +63,7 @@ namespace PPTX
void ReadAttributes2(XmlUtils::CXmlLiteReader& oReader)
{
nullable_string sTmp;
WritingElement_ReadAttributes_Start( oReader )
WritingElement_ReadAttributes_Start_No_NS( oReader )
WritingElement_ReadAttributes_ReadSingle ( oReader, _T("val"), sTmp)
WritingElement_ReadAttributes_End( oReader )
@ -72,7 +72,7 @@ namespace PPTX
}
void ReadAttributes(XmlUtils::CXmlLiteReader& oReader)
{
WritingElement_ReadAttributes_Start( oReader )
WritingElement_ReadAttributes_Start_No_NS( oReader )
WritingElement_ReadAttributes_ReadSingle ( oReader, _T("val"), val)
WritingElement_ReadAttributes_End( oReader )
}

View File

@ -69,7 +69,7 @@ namespace PPTX
}
void ReadAttributes(XmlUtils::CXmlLiteReader& oReader)
{
WritingElement_ReadAttributes_Start( oReader )
WritingElement_ReadAttributes_Start_No_NS( oReader )
WritingElement_ReadAttributes_ReadSingle ( oReader, _T("val"), val)
WritingElement_ReadAttributes_End( oReader )
}

View File

@ -58,7 +58,7 @@ namespace PPTX
void ReadAttributes(XmlUtils::CXmlLiteReader& oReader)
{
WritingElement_ReadAttributes_Start( oReader )
WritingElement_ReadAttributes_Start_No_NS( oReader )
WritingElement_ReadAttributes_Read_if ( oReader, _T("val"), val)
WritingElement_ReadAttributes_End( oReader )
}

View File

@ -55,7 +55,7 @@ namespace PPTX
{
std::wstring val;
WritingElement_ReadAttributes_Start( oReader )
WritingElement_ReadAttributes_Start_No_NS( oReader )
WritingElement_ReadAttributes_Read_if ( oReader, _T("val"), val)
WritingElement_ReadAttributes_End( oReader )

View File

@ -170,7 +170,7 @@ namespace PPTX
}
void ReadAttributes(XmlUtils::CXmlLiteReader& oReader)
{
WritingElement_ReadAttributes_Start( oReader )
WritingElement_ReadAttributes_Start_No_NS( oReader )
WritingElement_ReadAttributes_Read_if ( oReader, _T("val"), val)
WritingElement_ReadAttributes_End( oReader )
}

View File

@ -41,28 +41,58 @@ namespace PPTX
{
namespace Logic
{
CxnSp::CxnSp()
CxnSp::CxnSp(std::wstring ns)
{
m_namespace = ns;
}
CxnSp::~CxnSp()
{
}
CxnSp::CxnSp(XmlUtils::CXmlNode& node)
{
fromXML(node);
}
const CxnSp& CxnSp::operator =(XmlUtils::CXmlNode& node)
{
fromXML(node);
return *this;
}
CxnSp::CxnSp(XmlUtils::CXmlLiteReader& oReader)
{
fromXML(oReader);
}
const CxnSp& CxnSp::operator =(XmlUtils::CXmlLiteReader& oReader)
{
fromXML(oReader);
return *this;
}
void CxnSp::fromXML(XmlUtils::CXmlLiteReader& oReader)
{
m_namespace = XmlUtils::GetNamespace(oReader.GetName());
if ( oReader.IsEmptyNode() )
return;
int nParentDepth = oReader.GetDepth();
while( oReader.ReadNextSiblingNode( nParentDepth ) )
{
std::wstring strName = XmlUtils::GetNameNoNS(oReader.GetName());
if (_T("nvCxnSpPr") == strName)
nvCxnSpPr = oReader;
else if (_T("spPr") == strName)
spPr = oReader;
else if (_T("style") == strName)
style = oReader;
}
FillParentPointersForChilds();
}
void CxnSp::fromXML(XmlUtils::CXmlNode& node)
{
m_namespace = XmlUtils::GetNamespace(node.GetName());
XmlUtils::CXmlNodes oNodes;
if (node.GetNodes(_T("*"), oNodes))
{
@ -93,7 +123,7 @@ namespace PPTX
oValue.Write(spPr);
oValue.WriteNullable(style);
return XmlUtils::CreateNode(_T("<p:cxnSp>"), oValue);
return XmlUtils::CreateNode(m_namespace + L":cxnSp", oValue);
}
void CxnSp::FillParentPointersForChilds()

View File

@ -46,13 +46,23 @@ namespace PPTX
class CxnSp : public WrapperWritingElement
{
public:
CxnSp();
CxnSp(std::wstring ns = L"p");
virtual ~CxnSp();
explicit CxnSp(XmlUtils::CXmlNode& node);
const CxnSp& operator =(XmlUtils::CXmlNode& node);
public:
explicit CxnSp(XmlUtils::CXmlLiteReader& oReader);
const CxnSp& operator =(XmlUtils::CXmlLiteReader& oReader);
virtual OOX::EElementType getType () const
{
return OOX::et_cxnSp;
}
virtual void fromXML(XmlUtils::CXmlNode& node);
virtual void fromXML(XmlUtils::CXmlLiteReader& oReader);
virtual std::wstring toXML() const;
virtual void GetRect(Aggplus::RECT& pRect)const;
@ -72,12 +82,12 @@ namespace PPTX
virtual void toXmlWriter(NSBinPptxRW::CXmlWriter* pWriter) const
{
if (pWriter->m_lDocType == XMLWRITER_DOC_TYPE_DOCX)
pWriter->StartNode(_T("wps:cxnSp"));
else if (pWriter->m_lDocType == XMLWRITER_DOC_TYPE_XLSX)
pWriter->StartNode(_T("xdr:cxnSp"));
else
pWriter->StartNode(_T("p:cxnSp"));
std::wstring namespace_ = m_namespace;
if (pWriter->m_lDocType == XMLWRITER_DOC_TYPE_DOCX) namespace_ = L"wps";
else if (pWriter->m_lDocType == XMLWRITER_DOC_TYPE_XLSX) namespace_ = L"xdr";
pWriter->StartNode(namespace_ + L":cxnSp");
pWriter->EndAttributes();
@ -87,19 +97,13 @@ namespace PPTX
if (style.is_init())
{
if (pWriter->m_lDocType == XMLWRITER_DOC_TYPE_DOCX)
style->m_ns = _T("wps");
style->m_namespace = _T("wps");
else if (pWriter->m_lDocType == XMLWRITER_DOC_TYPE_XLSX)
style->m_ns = _T("xdr");
style->m_namespace = _T("xdr");
pWriter->Write(style);
}
if (pWriter->m_lDocType == XMLWRITER_DOC_TYPE_DOCX)
pWriter->EndNode(_T("wps:cxnSp"));
else if (pWriter->m_lDocType == XMLWRITER_DOC_TYPE_XLSX)
pWriter->EndNode(_T("xdr:cxnSp"));
else
pWriter->EndNode(_T("p:cxnSp"));
pWriter->EndNode(namespace_ + L":cxnSp");
}
virtual void fromPPTY(NSBinPptxRW::CBinaryFileReader* pReader)
@ -123,8 +127,7 @@ namespace PPTX
}
case 2:
{
style = new ShapeStyle();
style->m_ns = _T("p");
style = new ShapeStyle(L"p");
style->fromPPTY(pReader);
break;
}
@ -138,7 +141,8 @@ namespace PPTX
pReader->Seek(_end_rec);
}
public:
std::wstring m_namespace;
NvCxnSpPr nvCxnSpPr;
SpPr spPr;
nullable<ShapeStyle> style;

View File

@ -127,8 +127,7 @@ namespace PPTX
}
case 1:
{
bodyPr = BodyPr();
bodyPr->m_namespace = _T("a");
bodyPr = BodyPr(L"a");
bodyPr->fromPPTY(pReader);
break;
}
@ -140,8 +139,7 @@ namespace PPTX
}
case 3:
{
style = new ShapeStyle();
style->m_ns = _T("a");
style = new ShapeStyle(L"a");
style->fromPPTY(pReader);
break;
}

View File

@ -67,7 +67,7 @@ namespace PPTX
void ReadAttributes(XmlUtils::CXmlLiteReader& oReader)
{
WritingElement_ReadAttributes_Start ( oReader )
WritingElement_ReadAttributes_Start_No_NS ( oReader )
WritingElement_ReadAttributes_Read_if ( oReader, L"name", name)
WritingElement_ReadAttributes_Read_else_if( oReader, L"type", type)
WritingElement_ReadAttributes_End ( oReader )

View File

@ -63,8 +63,6 @@ namespace PPTX
void ReadAttributes(XmlUtils::CXmlLiteReader& oReader)
{
WritingElement_ReadAttributes_Start ( oReader )
WritingElement_ReadAttributes_End ( oReader )
}
virtual void fromXML(XmlUtils::CXmlNode& node);

View File

@ -63,7 +63,7 @@ namespace PPTX
}
virtual void fromXML(XmlUtils::CXmlLiteReader& oReader)
{
std::wstring strName = oReader.GetName();
std::wstring strName = XmlUtils::GetNameNoNS(oReader.GetName());
if (strName == _T("effectLst"))
List.reset(new Logic::EffectLst(oReader));

View File

@ -65,7 +65,7 @@ namespace PPTX
}
void ReadAttributes(XmlUtils::CXmlLiteReader& oReader)
{
WritingElement_ReadAttributes_Start( oReader )
WritingElement_ReadAttributes_Start_No_NS( oReader )
WritingElement_ReadAttributes_ReadSingle ( oReader, _T("thresh"), thresh)
WritingElement_ReadAttributes_End( oReader )

View File

@ -64,7 +64,7 @@ namespace PPTX
}
void ReadAttributes(XmlUtils::CXmlLiteReader& oReader)
{
WritingElement_ReadAttributes_Start( oReader )
WritingElement_ReadAttributes_Start_No_NS( oReader )
WritingElement_ReadAttributes_Read_if ( oReader, _T("amt"), amt)
WritingElement_ReadAttributes_End( oReader )

View File

@ -65,7 +65,7 @@ namespace PPTX
}
void ReadAttributes(XmlUtils::CXmlLiteReader& oReader)
{
WritingElement_ReadAttributes_Start( oReader )
WritingElement_ReadAttributes_Start_No_NS( oReader )
WritingElement_ReadAttributes_Read_if ( oReader, _T("rad"), rad)
WritingElement_ReadAttributes_End( oReader )
}

View File

@ -64,7 +64,7 @@ namespace PPTX
}
void ReadAttributes(XmlUtils::CXmlLiteReader& oReader)
{
WritingElement_ReadAttributes_Start( oReader )
WritingElement_ReadAttributes_Start_No_NS( oReader )
WritingElement_ReadAttributes_Read_if ( oReader, _T("a"), a)
WritingElement_ReadAttributes_End( oReader )

View File

@ -65,7 +65,7 @@ namespace PPTX
}
void ReadAttributes(XmlUtils::CXmlLiteReader& oReader)
{
WritingElement_ReadAttributes_Start( oReader )
WritingElement_ReadAttributes_Start_No_NS( oReader )
WritingElement_ReadAttributes_Read_if ( oReader, _T("thresh"), thresh)
WritingElement_ReadAttributes_End( oReader )

View File

@ -79,7 +79,7 @@ namespace PPTX
}
void ReadAttributes(XmlUtils::CXmlLiteReader& oReader)
{
WritingElement_ReadAttributes_Start( oReader )
WritingElement_ReadAttributes_Start_No_NS( oReader )
WritingElement_ReadAttributes_Read_if ( oReader, _T("blend"), blend)
WritingElement_ReadAttributes_End( oReader )
}

View File

@ -66,7 +66,7 @@ namespace PPTX
}
void ReadAttributes(XmlUtils::CXmlLiteReader& oReader)
{
WritingElement_ReadAttributes_Start( oReader )
WritingElement_ReadAttributes_Start_No_NS( oReader )
WritingElement_ReadAttributes_Read_if ( oReader, _T("rad"), rad)
WritingElement_ReadAttributes_Read_else_if( oReader, _T("grow"), grow)
WritingElement_ReadAttributes_End( oReader )

View File

@ -73,15 +73,15 @@ namespace PPTX
std::wstring strName = oReader.GetName();
if (strName == L"a:clrTo")
ClrTo.fromXML(oReader);
ClrTo.fromXMLParent(oReader);
else if (strName == L"a:clrFrom")
ClrFrom.fromXML(oReader);
ClrFrom.fromXMLParent(oReader);
}
FillParentPointersForChilds();
}
void ReadAttributes(XmlUtils::CXmlLiteReader& oReader)
{
WritingElement_ReadAttributes_Start( oReader )
WritingElement_ReadAttributes_Start_No_NS( oReader )
WritingElement_ReadAttributes_Read_if ( oReader, _T("useA"), useA)
WritingElement_ReadAttributes_End( oReader )
}

View File

@ -65,7 +65,7 @@ namespace PPTX
}
void ReadAttributes(XmlUtils::CXmlLiteReader& oReader)
{
WritingElement_ReadAttributes_Start( oReader )
WritingElement_ReadAttributes_Start_No_NS( oReader )
WritingElement_ReadAttributes_Read_if ( oReader, _T("ref"), ref)
WritingElement_ReadAttributes_End( oReader )
}

View File

@ -81,7 +81,7 @@ namespace PPTX
}
void ReadAttributes(XmlUtils::CXmlLiteReader& oReader)
{
WritingElement_ReadAttributes_Start( oReader )
WritingElement_ReadAttributes_Start_No_NS( oReader )
WritingElement_ReadAttributes_Read_if ( oReader, _T("blend"), blend)
WritingElement_ReadAttributes_End( oReader )
}

View File

@ -77,7 +77,7 @@ namespace PPTX
}
void ReadAttributes(XmlUtils::CXmlLiteReader& oReader)
{
WritingElement_ReadAttributes_Start( oReader )
WritingElement_ReadAttributes_Start_No_NS( oReader )
WritingElement_ReadAttributes_Read_if ( oReader, _T("rad"), rad)
WritingElement_ReadAttributes_End( oReader )

View File

@ -66,7 +66,7 @@ namespace PPTX
}
void ReadAttributes(XmlUtils::CXmlLiteReader& oReader)
{
WritingElement_ReadAttributes_Start( oReader )
WritingElement_ReadAttributes_Start_No_NS( oReader )
WritingElement_ReadAttributes_Read_if ( oReader, _T("hue"), hue)
WritingElement_ReadAttributes_Read_else_if( oReader, _T("sat"), sat)
WritingElement_ReadAttributes_Read_else_if( oReader, _T("lum"), lum)

View File

@ -80,7 +80,7 @@ namespace PPTX
}
void ReadAttributes(XmlUtils::CXmlLiteReader& oReader)
{
WritingElement_ReadAttributes_Start( oReader )
WritingElement_ReadAttributes_Start_No_NS( oReader )
WritingElement_ReadAttributes_Read_if ( oReader, _T("blurRad"), blurRad)
WritingElement_ReadAttributes_Read_else_if( oReader, _T("dir"), dir)
WritingElement_ReadAttributes_Read_else_if( oReader, _T("dist"), dist)

View File

@ -65,7 +65,7 @@ namespace PPTX
}
void ReadAttributes(XmlUtils::CXmlLiteReader& oReader)
{
WritingElement_ReadAttributes_Start( oReader )
WritingElement_ReadAttributes_Start_No_NS( oReader )
WritingElement_ReadAttributes_Read_if ( oReader, _T("bright"), bright)
WritingElement_ReadAttributes_Read_else_if( oReader, _T("contrast"), contrast)
WritingElement_ReadAttributes_End( oReader )

View File

@ -89,7 +89,7 @@ namespace PPTX
}
void ReadAttributes(XmlUtils::CXmlLiteReader& oReader)
{
WritingElement_ReadAttributes_Start( oReader )
WritingElement_ReadAttributes_Start_No_NS( oReader )
WritingElement_ReadAttributes_Read_if ( oReader, _T("blurRad"), blurRad)
WritingElement_ReadAttributes_Read_else_if( oReader, _T("dir"), dir)
WritingElement_ReadAttributes_Read_else_if( oReader, _T("dist"), dist)

View File

@ -84,7 +84,7 @@ namespace PPTX
}
void ReadAttributes(XmlUtils::CXmlLiteReader& oReader)
{
WritingElement_ReadAttributes_Start( oReader )
WritingElement_ReadAttributes_Start_No_NS( oReader )
WritingElement_ReadAttributes_Read_if ( oReader, _T("prst"), prst)
WritingElement_ReadAttributes_Read_else_if( oReader, _T("dir"), dir)
WritingElement_ReadAttributes_Read_else_if( oReader, _T("dist"), dist)

View File

@ -79,7 +79,7 @@ namespace PPTX
}
void ReadAttributes(XmlUtils::CXmlLiteReader& oReader)
{
WritingElement_ReadAttributes_Start( oReader )
WritingElement_ReadAttributes_Start_No_NS( oReader )
WritingElement_ReadAttributes_Read_if ( oReader, _T("blurRad"), blurRad)
WritingElement_ReadAttributes_Read_else_if( oReader, _T("dir"), dir)
WritingElement_ReadAttributes_Read_else_if( oReader, _T("fadeDir"), fadeDir)

View File

@ -65,7 +65,7 @@ namespace PPTX
}
void ReadAttributes(XmlUtils::CXmlLiteReader& oReader)
{
WritingElement_ReadAttributes_Start( oReader )
WritingElement_ReadAttributes_Start_No_NS( oReader )
WritingElement_ReadAttributes_Read_if ( oReader, _T("tx"), tx)
WritingElement_ReadAttributes_Read_else_if( oReader, _T("ty"), ty)
WritingElement_ReadAttributes_End( oReader )

View File

@ -64,7 +64,7 @@ namespace PPTX
}
void ReadAttributes(XmlUtils::CXmlLiteReader& oReader)
{
WritingElement_ReadAttributes_Start( oReader )
WritingElement_ReadAttributes_Start_No_NS( oReader )
WritingElement_ReadAttributes_ReadSingle ( oReader, _T("rad"), rad)
WritingElement_ReadAttributes_End( oReader )
}

View File

@ -65,7 +65,7 @@ namespace PPTX
}
void ReadAttributes(XmlUtils::CXmlLiteReader& oReader)
{
WritingElement_ReadAttributes_Start( oReader )
WritingElement_ReadAttributes_Start_No_NS( oReader )
WritingElement_ReadAttributes_Read_if ( oReader, _T("amt"), amt)
WritingElement_ReadAttributes_Read_else_if( oReader, _T("hue"), hue)
WritingElement_ReadAttributes_End( oReader )

View File

@ -70,7 +70,7 @@ namespace PPTX
}
void ReadAttributes(XmlUtils::CXmlLiteReader& oReader)
{
WritingElement_ReadAttributes_Start( oReader )
WritingElement_ReadAttributes_Start_No_NS( oReader )
WritingElement_ReadAttributes_Read_if ( oReader, _T("kx"), kx)
WritingElement_ReadAttributes_Read_else_if( oReader, _T("ky"), ky)
WritingElement_ReadAttributes_Read_else_if( oReader, _T("sx"), sx)

View File

@ -52,9 +52,48 @@ namespace PPTX
class Ext : public WrapperWritingElement
{
public:
PPTX_LOGIC_BASE(Ext)
WritingElement_AdditionConstructors(Ext)
public:
Ext()
{
}
virtual void fromXML(XmlUtils::CXmlLiteReader& oReader)
{
if ( oReader.IsEmptyNode() )
return;
int nParentDepth = oReader.GetDepth();
while( oReader.ReadNextSiblingNode( nParentDepth ) )
{
std::wstring strName = XmlUtils::GetNameNoNS(oReader.GetName());
if (strName == L"media")
{
ReadAttributes(oReader);
//std::wstring xmkl = media.GetXml();
int nParentDepth1 = oReader.GetDepth();
while( oReader.ReadNextSiblingNode( nParentDepth1 ) )
{
std::wstring strName1 = XmlUtils::GetNameNoNS(oReader.GetName());
if (strName1 == L"trim")
{
ReadAttributes(oReader);
}
}
}
}
}
void ReadAttributes(XmlUtils::CXmlLiteReader& oReader)
{
WritingElement_ReadAttributes_Start( oReader )
WritingElement_ReadAttributes_Read_if ( oReader, _T("st"), st)
WritingElement_ReadAttributes_Read_else_if ( oReader, _T("end"), end)
WritingElement_ReadAttributes_Read_else_if ( oReader, _T("r:embed"), link)
WritingElement_ReadAttributes_End( oReader )
}
virtual void fromXML(XmlUtils::CXmlNode& node)
{
XmlUtils::CXmlNode media;
@ -95,11 +134,9 @@ namespace PPTX
pWriter->WriteBYTE(NSBinPptxRW::g_nodeAttributeEnd);
}
public:
OOX::RId link;
// trim
// trim
nullable_double st;
nullable_double end;

View File

@ -46,8 +46,11 @@ namespace PPTX
{
public:
WritingElement_AdditionConstructors(Blip)
PPTX_LOGIC_BASE2(Blip)
Blip(std::wstring ns = L"a")
{
m_namespace = ns;
}
Blip& operator=(const Blip& oSrc)
{
parentFile = oSrc.parentFile;
@ -74,7 +77,7 @@ namespace PPTX
virtual void fromXML(XmlUtils::CXmlLiteReader& oReader);
void ReadAttributes(XmlUtils::CXmlLiteReader& oReader)
{
WritingElement_ReadAttributes_Start( oReader )
WritingElement_ReadAttributes_Start_No_NS( oReader )
WritingElement_ReadAttributes_Read_if ( oReader, _T("r:embed"), embed)
WritingElement_ReadAttributes_Read_else_if( oReader, _T("r:link"), link )
WritingElement_ReadAttributes_Read_else_if( oReader, _T("cstate"), cstate )
@ -179,10 +182,9 @@ namespace PPTX
nullable_limit<Limit::BlipCompression> cstate;
nullable<OOX::RId> embed;
nullable<OOX::RId> link;
//private:
public:
std::wstring m_namespace;
//internal
std::wstring oleRid;
std::wstring oleFilepathBin;
std::wstring oleFilepathImg;

View File

@ -50,7 +50,11 @@ namespace PPTX
{
public:
WritingElement_AdditionConstructors(BlipFill)
PPTX_LOGIC_BASE2(BlipFill)
BlipFill(std::wstring ns = L"p")
{
m_namespace = ns;
}
BlipFill& operator=(const BlipFill& oSrc)
{
@ -107,7 +111,7 @@ namespace PPTX
}
void ReadAttributes(XmlUtils::CXmlLiteReader& oReader)
{
WritingElement_ReadAttributes_Start ( oReader )
WritingElement_ReadAttributes_Start_No_NS ( oReader )
WritingElement_ReadAttributes_Read_if ( oReader, _T("dpi"), dpi)
WritingElement_ReadAttributes_Read_else_if( oReader, _T("rotWithShape"), rotWithShape )
WritingElement_ReadAttributes_End ( oReader )

View File

@ -49,8 +49,12 @@ namespace PPTX
{
public:
WritingElement_AdditionConstructors(GradFill)
PPTX_LOGIC_BASE2(GradFill)
GradFill(std::wstring ns = L"a")
{
m_namespace = ns;
}
GradFill& operator=(const GradFill& oSrc)
{
parentFile = oSrc.parentFile;
@ -74,6 +78,8 @@ namespace PPTX
}
virtual void fromXML(XmlUtils::CXmlLiteReader& oReader)
{
m_namespace = XmlUtils::GetNamespace(oReader.GetName());
ReadAttributes( oReader );
if ( oReader.IsEmptyNode() )
@ -95,7 +101,6 @@ namespace PPTX
int nCurDepth1 = oReader.GetDepth();
while( oReader.ReadNextSiblingNode( nCurDepth1 ) )
{
std::wstring sName1 = XmlUtils::GetNameNoNS(oReader.GetName());
Gs g; GsLst.push_back(g);
GsLst.back().fromXML(oReader);
}
@ -104,7 +109,7 @@ namespace PPTX
}
void ReadAttributes(XmlUtils::CXmlLiteReader& oReader)
{
WritingElement_ReadAttributes_Start ( oReader )
WritingElement_ReadAttributes_Start_No_NS ( oReader )
WritingElement_ReadAttributes_Read_if ( oReader, _T("rotWithShape"), rotWithShape )
WritingElement_ReadAttributes_Read_else_if( oReader, _T("flip"), flip )
WritingElement_ReadAttributes_End ( oReader )
@ -164,7 +169,7 @@ namespace PPTX
oValue.WriteNullable(lin);
oValue.WriteNullable(tileRect);
std::wstring strName = (_T("") == m_namespace) ? _T("gradFill") : (m_namespace + _T(":gradFill"));
std::wstring strName = m_namespace.empty() ? _T("gradFill") : (m_namespace + _T(":gradFill"));
return XmlUtils::CreateNode(strName, oAttr, oValue);
}
@ -179,7 +184,7 @@ namespace PPTX
}
else
{
strName = (_T("") == m_namespace) ? _T("gradFill") : (m_namespace + _T(":gradFill"));
strName = m_namespace.empty() ? _T("gradFill") : (m_namespace + _T(":gradFill"));
}
pWriter->StartNode(strName);

View File

@ -44,8 +44,11 @@ namespace PPTX
{
public:
WritingElement_AdditionConstructors(NoFill)
PPTX_LOGIC_BASE2(NoFill)
NoFill(std::wstring ns = L"a")
{
m_namespace = ns;
}
NoFill& operator=(const NoFill& oSrc)
{
parentFile = oSrc.parentFile;
@ -64,8 +67,6 @@ namespace PPTX
}
void ReadAttributes(XmlUtils::CXmlLiteReader& oReader)
{
WritingElement_ReadAttributes_Start ( oReader )
WritingElement_ReadAttributes_End ( oReader )
}
virtual void fromXML(XmlUtils::CXmlNode& node)
{
@ -120,8 +121,6 @@ namespace PPTX
}
void ReadAttributes(XmlUtils::CXmlLiteReader& oReader)
{
WritingElement_ReadAttributes_Start ( oReader )
WritingElement_ReadAttributes_End ( oReader )
}
virtual void fromXML(XmlUtils::CXmlNode& node)
{

View File

@ -45,8 +45,11 @@ namespace PPTX
{
public:
WritingElement_AdditionConstructors(PattFill)
PPTX_LOGIC_BASE2(PattFill)
PattFill(std::wstring ns = L"a")
{
m_namespace = ns;
}
PattFill& operator=(const PattFill& oSrc)
{
parentFile = oSrc.parentFile;
@ -71,9 +74,9 @@ namespace PPTX
{
std::wstring sName = oReader.GetName();
if (sName == L"a:fgClr")
fgClr.fromXML(oReader);
fgClr.fromXMLParent(oReader);
if (sName == L"a:bgClr")
bgClr.fromXML(oReader);
bgClr.fromXMLParent(oReader);
}
FillParentPointersForChilds();
}
@ -83,7 +86,7 @@ namespace PPTX
}
void ReadAttributes(XmlUtils::CXmlLiteReader& oReader)
{
WritingElement_ReadAttributes_Start ( oReader )
WritingElement_ReadAttributes_Start_No_NS ( oReader )
WritingElement_ReadAttributes_ReadSingle ( oReader, _T("prst"), prst )
WritingElement_ReadAttributes_End ( oReader )
}

View File

@ -45,8 +45,11 @@ namespace PPTX
{
public:
WritingElement_AdditionConstructors(SolidFill)
PPTX_LOGIC_BASE2(SolidFill)
SolidFill(std::wstring ns = L"a")
{
m_namespace = ns;
}
SolidFill& operator=(const SolidFill& oSrc)
{
parentFile = oSrc.parentFile;

View File

@ -73,7 +73,7 @@ namespace PPTX
}
void ReadAttributes(XmlUtils::CXmlLiteReader& oReader)
{
WritingElement_ReadAttributes_Start( oReader )
WritingElement_ReadAttributes_Start_No_NS( oReader )
WritingElement_ReadAttributes_Read_if ( oReader, _T("algn"), algn )
WritingElement_ReadAttributes_Read_else_if( oReader, _T("flip"), flip )
WritingElement_ReadAttributes_Read_else_if( oReader, _T("sx"), sx )

View File

@ -44,9 +44,32 @@ namespace PPTX
class FontRef : public WrapperWritingElement
{
public:
PPTX_LOGIC_BASE(FontRef)
WritingElement_AdditionConstructors(FontRef)
public:
FontRef()
{
}
virtual OOX::EElementType getType () const
{
return OOX::et_Unknown;
}
virtual void fromXML(XmlUtils::CXmlLiteReader& oReader)
{
m_name = oReader.GetName();
ReadAttributes( oReader );
Color.fromXMLParent(oReader);
FillParentPointersForChilds();
}
void ReadAttributes(XmlUtils::CXmlLiteReader& oReader)
{
WritingElement_ReadAttributes_Start ( oReader )
WritingElement_ReadAttributes_ReadSingle( oReader, _T("idx"), idx )
WritingElement_ReadAttributes_End ( oReader )
}
virtual void fromXML(XmlUtils::CXmlNode& node)
{
m_name = node.GetName();

View File

@ -43,8 +43,9 @@ namespace PPTX
{
namespace Logic
{
GraphicFrame::GraphicFrame()
GraphicFrame::GraphicFrame(std::wstring ns) : nvGraphicFramePr(ns)
{
m_namespace = ns;
}
GraphicFrame::~GraphicFrame()
@ -61,9 +62,146 @@ namespace PPTX
fromXML(node);
return *this;
}
GraphicFrame::GraphicFrame(XmlUtils::CXmlLiteReader& oReader)
{
fromXML(oReader);
}
const GraphicFrame& GraphicFrame::operator =(XmlUtils::CXmlLiteReader& oReader)
{
fromXML(oReader);
return *this;
}
void GraphicFrame::fromXML(XmlUtils::CXmlLiteReader& oReader)
{
m_namespace = XmlUtils::GetNamespace(oReader.GetName());
if ( oReader.IsEmptyNode() )
return;
int nCurDepth = oReader.GetDepth();
while( oReader.ReadNextSiblingNode( nCurDepth ) )
{
fromXML2(oReader);
}
FillParentPointersForChilds();
}
void GraphicFrame::ReadAttributes3(XmlUtils::CXmlLiteReader& oReader)
{
WritingElement_ReadAttributes_Start( oReader )
WritingElement_ReadAttributes_ReadSingle ( oReader, _T("spid"), spid )
WritingElement_ReadAttributes_End( oReader )
}
void GraphicFrame::fromXML2(XmlUtils::CXmlLiteReader& oReader)
{
std::wstring strName = XmlUtils::GetNameNoNS(oReader.GetName());
std::wstring strNamespace = XmlUtils::GetNamespace(oReader.GetName());
if (L"xfrm" == strName && strNamespace != L"xdr")
xfrm = oReader;
else if (L"nvGraphicFramePr" == strName)
nvGraphicFramePr.fromXML( oReader );
else if (L"graphic" == strName)
{
int nCurDepth = oReader.GetDepth();
while( oReader.ReadNextSiblingNode( nCurDepth ) )
{
std::wstring strName1 = oReader.GetName();
if (strName1 == L"a:graphicData")
{
fromXML3(oReader);
}
}
}
}
bool GraphicFrame::fromXML3(XmlUtils::CXmlLiteReader& oReader)
{
bool result = false;
if ( oReader.IsEmptyNode() )
return result;
int nCurDepth = oReader.GetDepth();
while( oReader.ReadNextSiblingNode( nCurDepth ) )
{
std::wstring strName = XmlUtils::GetNameNoNS(oReader.GetName());
if (strName == L"tbl")
{
table = oReader;
result = true;
}
else if (strName == L"oleObj")
{
ReadAttributes3(oReader);
int nCurDepth1 = oReader.GetDepth();
while( oReader.ReadNextSiblingNode( nCurDepth1 ) )
{
std::wstring strName1 = XmlUtils::GetNameNoNS(oReader.GetName());
if (strName1 == L"pic")
{
result = true;
pic = oReader;
//pic->fromXMLOle(oNode2);
if (xfrm.IsInit())
xfrm->Merge(pic->spPr.xfrm);
}
}
}
else if (strName == L"relIds")
{
smartArt = oReader;
result = true;
}
else if (strName == L"chart")
{
chartRec = oReader;
result = true;
}
else if (strName == L"legacyDrawing")
{
ReadAttributes3(oReader);
result = true;
}
else if (strName == L"AlternateContent")
{
int nCurDepth1 = oReader.GetDepth();
while( oReader.ReadNextSiblingNode( nCurDepth1 ) )
{
std::wstring strName1 = oReader.GetName();
if (strName1 == L"mc:Choice")
{
result = fromXML3(oReader);
if (result)
break;
}
else if (strName1 == L"mc:Fallback")
{
result = fromXML3(oReader);
if (result)
break;
}
}
}
else
{
element = oReader;
if (element.IsInit())
result = true;
}
}
return result;
}
void GraphicFrame::fromXML(XmlUtils::CXmlNode& node)
{
m_namespace = XmlUtils::GetNamespace(node.GetName());
XmlUtils::CXmlNodes oNodes;
if (node.GetNodes(L"*", oNodes))
{
@ -159,21 +297,12 @@ namespace PPTX
void GraphicFrame::toXmlWriter(NSBinPptxRW::CXmlWriter* pWriter) const
{
std::wstring strNS = L"";
if (pWriter->m_lDocType == XMLWRITER_DOC_TYPE_DOCX && pWriter->m_lGroupIndex >= 0)
{
pWriter->StartNode(L"wpg:graphicFrame");
strNS = L"wpg";
}
else if (pWriter->m_lDocType == XMLWRITER_DOC_TYPE_XLSX && pWriter->m_lGroupIndex >= 0)
{
pWriter->StartNode(L"xdr:graphicFrame");
strNS = L"xdr";
}
else
{
pWriter->StartNode(L"p:graphicFrame");
}
std::wstring namespace_ = m_namespace;
if (pWriter->m_lDocType == XMLWRITER_DOC_TYPE_DOCX && pWriter->m_lGroupIndex >= 0) namespace_ = L"wpg";
else if (pWriter->m_lDocType == XMLWRITER_DOC_TYPE_XLSX && pWriter->m_lGroupIndex >= 0) namespace_ = L"xdr";
pWriter->StartNode(namespace_ + L":graphicFrame");
pWriter->EndAttributes();
@ -181,10 +310,8 @@ namespace PPTX
if (xfrm.IsInit())
{
if (strNS.empty())
xfrm->toXmlWriter(pWriter);
else
xfrm->toXmlWriter2(strNS, pWriter);
xfrm->m_ns = namespace_;
xfrm->toXmlWriter(pWriter);
}
if (table.is_init())
@ -200,12 +327,7 @@ namespace PPTX
pWriter->WriteString(L"</a:graphicData></a:graphic>");
}
if (pWriter->m_lDocType == XMLWRITER_DOC_TYPE_DOCX && pWriter->m_lGroupIndex >= 0)
pWriter->EndNode(L"wpg:graphicFrame");
else if (pWriter->m_lDocType == XMLWRITER_DOC_TYPE_XLSX && pWriter->m_lGroupIndex >= 0)
pWriter->EndNode(L"xdr:graphicFrame");
else
pWriter->EndNode(L"p:graphicFrame");
pWriter->EndNode(namespace_ + L":graphicFrame");
}
void GraphicFrame::toPPTY(NSBinPptxRW::CBinaryFileWriter* pWriter) const
@ -229,6 +351,7 @@ namespace PPTX
if (smartArt.is_init() && !table.is_init() && !chartRec.is_init() && !spid.is_init())
{
smartArt->LoadDrawing(pWriter);
if (smartArt->m_diag.is_init())
{
smartArt->m_diag->nvGrpSpPr.cNvPr = nvGraphicFramePr.cNvPr;
@ -385,6 +508,9 @@ namespace PPTX
}
pReader->Seek(_end_rec);
if (!xfrm.IsInit())
xfrm = new Logic::Xfrm();
}
void GraphicFrame::GetRect(Aggplus::RECT& pRect)const
@ -403,28 +529,38 @@ namespace PPTX
std::wstring GraphicFrame::toXML() const
{
//XML::XNode node;
//if(dm.is_init())
//{
// return XML::XElement(ns.p + "graphicFrame",
// XML::Write(nvGraphicFramePr) +
// XML::Write(xfrm) +
// XML::XElement(ns.a + "graphic",
// XML::XElement(ns.a + "graphicData", //Возможно, здесь надо добавить ури
// XML::XElement(ns.dgm + "relIds",
// XML::XNamespace(ns.dgm) +
// XML::XNamespace(ns.r) +
// XML::XAttribute(ns.r + "dm", dm) +
// XML::XAttribute(ns.r + "lo", lo) +
// XML::XAttribute(ns.r + "qs", qs) +
// XML::XAttribute(ns.r + "cs", cs)
// )
// )
// )
// );
//}
//return node;
return L"";
std::wstring sXml;
sXml += L"<" + m_namespace + L":graphicFrame macro=\"\">";
sXml += nvGraphicFramePr.toXML();
sXml += L"<" + m_namespace + L":xfrm><a:off x=\"0\" y=\"0\"/><a:ext cx=\"0\" cy=\"0\"/>";
sXml += L"</" + m_namespace + L":xfrm>";
if (xfrm.IsInit())
{
xfrm->m_ns = m_namespace;
sXml += xfrm->toXML();
}
if (table.IsInit())
{
sXml += L"<a:graphic><a:graphicData uri=\"http://schemas.openxmlformats.org/drawingml/2006/table\">";
sXml += table->toXML();
sXml += L"</a:graphicData></a:graphic>";
}
else if (chartRec.IsInit())
{
sXml += L"<a:graphic><a:graphicData uri=\"http://schemas.openxmlformats.org/drawingml/2006/chart\">";
sXml += chartRec->toXML();
sXml += L"</a:graphicData></a:graphic>";
}
sXml += L"</" + m_namespace + L":graphicFrame>";
sXml += L"<" + m_namespace + L":clientData/>";
return sXml;
}
void GraphicFrame::FillParentPointersForChilds()

View File

@ -49,29 +49,46 @@ namespace PPTX
class GraphicFrame : public WrapperWritingElement
{
public:
GraphicFrame();
GraphicFrame(std::wstring ns = L"p");
virtual ~GraphicFrame();
virtual OOX::EElementType getType () const
{
return OOX::et_graphicFrame;
}
explicit GraphicFrame(XmlUtils::CXmlLiteReader& oReader);
const GraphicFrame& operator =(XmlUtils::CXmlLiteReader& oReader);
explicit GraphicFrame(XmlUtils::CXmlNode& node);
const GraphicFrame& operator =(XmlUtils::CXmlNode& node);
virtual void fromXML(XmlUtils::CXmlNode& node);
virtual void fromXML(XmlUtils::CXmlLiteReader& oReader);
void fromXML2(XmlUtils::CXmlLiteReader& oReader);
bool fromXML3(XmlUtils::CXmlLiteReader& oReader);
void ReadAttributes3(XmlUtils::CXmlLiteReader& oReader);
virtual std::wstring toXML() const;
virtual void GetRect(Aggplus::RECT& pRect)const;
virtual void toXmlWriter(NSBinPptxRW::CXmlWriter* pWriter) const;
virtual void toPPTY(NSBinPptxRW::CBinaryFileWriter* pWriter) const;
virtual void fromPPTY(NSBinPptxRW::CBinaryFileReader* pReader);
std::wstring m_namespace;
NvGraphicFramePr nvGraphicFramePr;
nullable<Xfrm> xfrm;
nullable_string spid;
nullable<Table> table;
nullable<SmartArt> smartArt;
nullable<ChartRec> chartRec;
nullable<Pic> pic;
nullable<SpTreeElem> element;
std::wstring GetVmlXmlBySpid(std::wstring & rels) const;
protected:

View File

@ -48,8 +48,11 @@ namespace PPTX
class GrpSpPr : public WrapperWritingElement
{
public:
PPTX_LOGIC_BASE(GrpSpPr)
WritingElement_AdditionConstructors(GrpSpPr)
GrpSpPr()
{
}
GrpSpPr& operator=(const GrpSpPr& oSrc)
{
parentFile = oSrc.parentFile;
@ -66,7 +69,9 @@ namespace PPTX
{
return OOX::et_p_groupSpPr;
}
public:
virtual void fromXML(XmlUtils::CXmlLiteReader& oReader)
{
}
virtual void fromXML(XmlUtils::CXmlNode& node)
{
node.ReadAttributeBase(L"bwMode", bwMode);

View File

@ -71,13 +71,14 @@ namespace PPTX
while( oReader.ReadNextSiblingNode( nCurDepth ) )
{
color.fromXML(oReader);
break;
}
FillParentPointersForChilds();
}
void ReadAttributes(XmlUtils::CXmlLiteReader& oReader)
{
nullable_int tmp;
WritingElement_ReadAttributes_Start ( oReader )
WritingElement_ReadAttributes_Start_No_NS ( oReader )
WritingElement_ReadAttributes_ReadSingle ( oReader, _T("pos"), tmp)
WritingElement_ReadAttributes_End ( oReader )

View File

@ -75,7 +75,7 @@ namespace PPTX
}
void ReadAttributes(XmlUtils::CXmlLiteReader& oReader)
{
WritingElement_ReadAttributes_Start( oReader )
WritingElement_ReadAttributes_Start_No_NS( oReader )
WritingElement_ReadAttributes_Read_if ( oReader, _T("dir"), dir)
WritingElement_ReadAttributes_Read_else_if ( oReader, _T("rig"), rig)
WritingElement_ReadAttributes_End( oReader )

View File

@ -56,7 +56,7 @@ namespace PPTX
}
void ReadAttributes(XmlUtils::CXmlLiteReader& oReader)
{
WritingElement_ReadAttributes_Start ( oReader )
WritingElement_ReadAttributes_Start_No_NS ( oReader )
WritingElement_ReadAttributes_Read_if ( oReader, _T("ang"), ang)
WritingElement_ReadAttributes_Read_else_if ( oReader, _T("scaled"), scaled)
WritingElement_ReadAttributes_End ( oReader )

View File

@ -51,7 +51,7 @@ namespace PPTX
virtual void fromXML(XmlUtils::CXmlLiteReader& oReader)
{
std::wstring name = oReader.GetName();
std::wstring name = XmlUtils::GetNameNoNS(oReader.GetName());
type = JoinEmpty;
@ -80,7 +80,7 @@ namespace PPTX
}
void ReadAttributes(XmlUtils::CXmlLiteReader& oReader)
{
WritingElement_ReadAttributes_Start ( oReader )
WritingElement_ReadAttributes_Start_No_NS ( oReader )
WritingElement_ReadAttributes_Read_if ( oReader, _T("lim"), lim )
WritingElement_ReadAttributes_End ( oReader )
}

View File

@ -50,13 +50,15 @@ namespace PPTX
{
public:
WritingElement_AdditionConstructors(Ln)
PPTX_LOGIC_BASE2(Ln)
Ln()
{
}
virtual void fromXML(XmlUtils::CXmlLiteReader& oReader)
{
//m_eDashType = OOX::Drawing::linedashtypeUnknown;
std::wstring sName = oReader.GetName();
m_name = oReader.GetName();
ReadAttributes( oReader );
@ -66,31 +68,31 @@ namespace PPTX
int nCurDepth = oReader.GetDepth();
while ( oReader.ReadNextSiblingNode( nCurDepth ) )
{
sName = oReader.GetName();
if (_T("a:bevel") == sName ||
_T("a:miter") == sName ||
_T("a:round") == sName )
std::wstring sName = XmlUtils::GetNameNoNS(oReader.GetName());
if (_T("bevel") == sName ||
_T("miter") == sName ||
_T("round") == sName )
{
Join.fromXML(oReader);
}
else if ( _T("a:tailEnd") == sName )
else if ( _T("tailEnd") == sName )
tailEnd = oReader;
else if ( _T("a:headEnd") == sName )
else if ( _T("headEnd") == sName )
headEnd = oReader;
else if ( _T("a:gradFill") == sName ||
_T("a:noFill") == sName ||
_T("a:pattFill") == sName ||
_T("a:solidFill") == sName )
else if ( _T("gradFill") == sName ||
_T("noFill") == sName ||
_T("pattFill") == sName ||
_T("solidFill") == sName )
{
Fill.fromXML(oReader);
}
else if ( _T("a:custDash") == sName )
else if ( _T("custDash") == sName )
{
//custDash = oReader;
//m_eDashType = OOX::Drawing::linedashtypeCustom;
}
else if ( _T("a:prstDash") == sName )
else if ( _T("prstDash") == sName )
{
prstDash = oReader;
//m_eDashType = OOX::Drawing::linedashtypePreset;
@ -102,7 +104,7 @@ namespace PPTX
}
virtual void fromXML(XmlUtils::CXmlNode& node)
{
m_name = _T("a:ln");
m_name = node.GetName();
node.ReadAttributeBase(L"algn", algn);
node.ReadAttributeBase(L"cap", cap);
@ -120,7 +122,7 @@ namespace PPTX
void ReadAttributes(XmlUtils::CXmlLiteReader& oReader)
{
// Читаем атрибуты
WritingElement_ReadAttributes_Start( oReader )
WritingElement_ReadAttributes_Start_No_NS( oReader )
WritingElement_ReadAttributes_Read_if ( oReader, _T("algn"), algn )
WritingElement_ReadAttributes_Read_else_if( oReader, _T("cap"), cap )
WritingElement_ReadAttributes_Read_else_if( oReader, _T("cmpd"), cmpd )
@ -131,11 +133,20 @@ namespace PPTX
}
virtual std::wstring toXML() const
{
std::wstring _name = m_name;
if (_name.empty())
_name = _T("a:ln");
std::wstring sAttrNamespace;
if (_name == L"w14:textOutline")
sAttrNamespace = _T("w14:");
XmlUtils::CAttribute oAttr;
oAttr.Write(_T("w"), w);
oAttr.WriteLimitNullable(_T("cap"), cap);
oAttr.WriteLimitNullable(_T("cmpd"), cmpd);
oAttr.WriteLimitNullable(_T("algn"), algn);
oAttr.Write (sAttrNamespace + _T("w"), w);
oAttr.WriteLimitNullable(sAttrNamespace + _T("cap"), cap);
oAttr.WriteLimitNullable(sAttrNamespace + _T("cmpd"), cmpd);
oAttr.WriteLimitNullable(sAttrNamespace + _T("algn"), algn);
XmlUtils::CNodeValue oValue;
oValue.Write(Fill);
@ -144,14 +155,15 @@ namespace PPTX
oValue.WriteNullable(headEnd);
oValue.WriteNullable(tailEnd);
return XmlUtils::CreateNode(_T("a:ln"), oAttr, oValue);
return XmlUtils::CreateNode(_name, oAttr, oValue);
}
virtual void toXmlWriter(NSBinPptxRW::CXmlWriter* pWriter) const
{
std::wstring _name = m_name;
if (_name == _T(""))
if (_name.empty())
_name = _T("a:ln");
std::wstring sAttrNamespace;
if (XMLWRITER_DOC_TYPE_WORDART == pWriter->m_lDocType)
{

View File

@ -42,7 +42,11 @@ namespace PPTX
class AudioCD : public WrapperWritingElement
{
public:
PPTX_LOGIC_BASE(AudioCD)
WritingElement_AdditionConstructors(AudioCD)
AudioCD()
{
}
AudioCD& operator=(const AudioCD& oSrc)
{
@ -57,8 +61,10 @@ namespace PPTX
return *this;
}
public:
virtual void fromXML(XmlUtils::CXmlLiteReader& oReader)
{
//todooo
}
virtual void fromXML(XmlUtils::CXmlNode& node)
{
XmlUtils::CXmlNode oMem;

View File

@ -42,9 +42,12 @@ namespace PPTX
{
class MediaFile : public WrapperWritingElement
{
public:
PPTX_LOGIC_BASE(MediaFile)
public:
WritingElement_AdditionConstructors(MediaFile)
MediaFile()
{
}
MediaFile& operator=(const MediaFile& oSrc)
{
@ -57,15 +60,25 @@ namespace PPTX
return *this;
}
public:
virtual void fromXML(XmlUtils::CXmlLiteReader& oReader)
{
name = XmlUtils::GetNameNoNS(oReader.GetName());
ReadAttributes(oReader);
}
virtual void fromXML(XmlUtils::CXmlNode& node)
{
name = XmlUtils::GetNameNoNS(node.GetName());
link = node.GetAttribute(_T("r:link"));
node.ReadAttributeBase(L"contentType", contentType);
}
void ReadAttributes(XmlUtils::CXmlLiteReader& oReader)
{
WritingElement_ReadAttributes_Start( oReader )
WritingElement_ReadAttributes_Read_if ( oReader, _T("r:link"), link)
WritingElement_ReadAttributes_Read_else_if ( oReader, _T("contentType"), contentType)
WritingElement_ReadAttributes_End( oReader )
}
virtual std::wstring toXML() const
{
XmlUtils::CAttribute oAttr;
@ -75,7 +88,7 @@ namespace PPTX
return XmlUtils::CreateNode(_T("a:") + name, oAttr);
}
public:
std::wstring name;
std::wstring name;
OOX::RId link;
nullable_string contentType;
protected:

View File

@ -46,7 +46,12 @@ namespace PPTX
class NvCxnSpPr : public WrapperWritingElement
{
public:
PPTX_LOGIC_BASE(NvCxnSpPr)
WritingElement_AdditionConstructors(NvCxnSpPr)
NvCxnSpPr(std::wstring ns = L"p")
{
m_namespace = ns;
}
NvCxnSpPr& operator=(const NvCxnSpPr& oSrc)
{
@ -60,12 +65,33 @@ namespace PPTX
return *this;
}
public:
virtual void fromXML(XmlUtils::CXmlNode& node)
virtual void fromXML(XmlUtils::CXmlLiteReader& oReader)
{
cNvPr = node.ReadNode(_T("p:cNvPr"));
cNvCxnSpPr = node.ReadNode(_T("p:cNvCxnSpPr"));
nvPr = node.ReadNode(_T("p:nvPr"));
m_namespace = XmlUtils::GetNamespace(oReader.GetName());
if ( oReader.IsEmptyNode() )
return;
int nParentDepth = oReader.GetDepth();
while( oReader.ReadNextSiblingNode( nParentDepth ) )
{
std::wstring strName = XmlUtils::GetNameNoNS(oReader.GetName());
if (strName == L"cNvPr")
cNvPr = oReader;
else if(strName == L"cNvCxnSpPr")
cNvCxnSpPr = oReader;
else if(strName == L"nvPr")
nvPr = oReader;
}
}
virtual void fromXML(XmlUtils::CXmlNode& node)
{
m_namespace = XmlUtils::GetNamespace(node.GetName());
cNvPr = node.ReadNodeNoNS(_T("cNvPr"));
cNvCxnSpPr = node.ReadNodeNoNS(_T("cNvCxnSpPr"));
nvPr = node.ReadNodeNoNS(_T("nvPr"));
FillParentPointersForChilds();
}
@ -77,26 +103,16 @@ namespace PPTX
oValue.Write(cNvCxnSpPr);
oValue.Write(nvPr);
return XmlUtils::CreateNode(_T("<p:nvCxnSpPr>"), oValue);
return XmlUtils::CreateNode(m_namespace + L":nvCxnSpPr", oValue);
}
virtual void toXmlWriter(NSBinPptxRW::CXmlWriter* pWriter) const
{
std::wstring namespace_;
if (pWriter->m_lDocType == XMLWRITER_DOC_TYPE_DOCX)
{
pWriter->StartNode(_T("wps:nvCxnSpPr"));
namespace_ = _T("wps");
}
else if (pWriter->m_lDocType == XMLWRITER_DOC_TYPE_XLSX)
{
pWriter->StartNode(_T("xdr:nvCxnSpPr"));
namespace_ = _T("xdr");
}
else
{
pWriter->StartNode(_T("p:nvCxnSpPr"));
namespace_ = _T("p");
}
std::wstring namespace_ = m_namespace;
if (pWriter->m_lDocType == XMLWRITER_DOC_TYPE_DOCX) namespace_ = _T("wps");
else if (pWriter->m_lDocType == XMLWRITER_DOC_TYPE_XLSX) namespace_ = _T("xdr");
pWriter->StartNode(namespace_ + L":nvCxnSpPr");
pWriter->EndAttributes();
@ -104,12 +120,7 @@ namespace PPTX
cNvCxnSpPr.toXmlWriter(pWriter);
nvPr.toXmlWriter2(namespace_, pWriter);
if (pWriter->m_lDocType == XMLWRITER_DOC_TYPE_DOCX)
pWriter->EndNode(_T("wps:nvCxnSpPr"));
else if (pWriter->m_lDocType == XMLWRITER_DOC_TYPE_XLSX)
pWriter->EndNode(_T("xdr:nvCxnSpPr"));
else
pWriter->EndNode(_T("p:nvCxnSpPr"));
pWriter->EndNode(namespace_ + L":nvCxnSpPr");
}
virtual void toPPTY(NSBinPptxRW::CBinaryFileWriter* pWriter) const
@ -151,10 +162,11 @@ namespace PPTX
pReader->Seek(_end_rec);
}
public:
CNvPr cNvPr;
CNvCxnSpPr cNvCxnSpPr;
NvPr nvPr;
std::wstring m_namespace;
CNvPr cNvPr;
CNvCxnSpPr cNvCxnSpPr;
NvPr nvPr;
protected:
virtual void FillParentPointersForChilds()
{

View File

@ -46,8 +46,12 @@ namespace PPTX
class NvGraphicFramePr : public WrapperWritingElement
{
public:
PPTX_LOGIC_BASE(NvGraphicFramePr)
WritingElement_AdditionConstructors(NvGraphicFramePr)
NvGraphicFramePr(std::wstring ns = L"p") : cNvPr(ns), cNvGraphicFramePr(ns), nvPr(ns)
{
m_namespace = ns;
}
NvGraphicFramePr& operator=(const NvGraphicFramePr& oSrc)
{
parentFile = oSrc.parentFile;
@ -57,16 +61,40 @@ namespace PPTX
cNvGraphicFramePr = oSrc.cNvGraphicFramePr;
nvPr = oSrc.nvPr;
m_namespace = oSrc.m_namespace;
return *this;
}
public:
virtual void fromXML(XmlUtils::CXmlNode& node)
{
cNvPr = node.ReadNode(_T("p:cNvPr"));
cNvGraphicFramePr = node.ReadNode(_T("p:cNvGraphicFramePr"));
nvPr = node.ReadNode(_T("p:nvPr"));
m_namespace = XmlUtils::GetNamespace(node.GetName());
cNvPr = node.ReadNodeNoNS(_T("cNvPr"));
cNvGraphicFramePr = node.ReadNodeNoNS(_T("cNvGraphicFramePr"));
nvPr = node.ReadNodeNoNS(_T("nvPr"));
FillParentPointersForChilds();
}
virtual void fromXML(XmlUtils::CXmlLiteReader& oReader)
{
m_namespace = XmlUtils::GetNamespace(oReader.GetName());
if ( oReader.IsEmptyNode() )
return;
int nParentDepth = oReader.GetDepth();
while( oReader.ReadNextSiblingNode( nParentDepth ) )
{
std::wstring sName = XmlUtils::GetNameNoNS(oReader.GetName());
if (sName == L"cNvPr")
cNvPr.fromXML( oReader);
else if (sName == L"cNvGraphicFramePr")
cNvGraphicFramePr.fromXML( oReader);
else if (sName == L"nvPr")
nvPr.fromXML( oReader);
}
FillParentPointersForChilds();
}
@ -77,7 +105,7 @@ namespace PPTX
oValue.Write(cNvGraphicFramePr);
oValue.Write(nvPr);
return XmlUtils::CreateNode(_T("p:nvGraphicFramePr"), oValue);
return XmlUtils::CreateNode(m_namespace + L":nvGraphicFramePr", oValue);
}
virtual void toXmlWriter(NSBinPptxRW::CXmlWriter* pWriter) const
@ -150,7 +178,9 @@ namespace PPTX
pReader->Seek(_end_rec);
}
public:
std::wstring m_namespace;
CNvPr cNvPr;
CNvGraphicFramePr cNvGraphicFramePr;
NvPr nvPr;

View File

@ -38,45 +38,45 @@ namespace PPTX
void NvGrpSpPr::fromXML(XmlUtils::CXmlNode& node)
{
m_namespace = XmlUtils::GetNamespace(node.GetName());
cNvPr = node.ReadNode(_T("p:cNvPr"));
cNvGrpSpPr = node.ReadNode(_T("p:cNvGrpSpPr"));
nvPr = node.ReadNode(_T("p:nvPr"));
FillParentPointersForChilds();
/*
XmlUtils::CXmlNodes oNodes;
if (node.GetNodes(_T("*"), oNodes))
{
int nCount = oNodes.GetCount();
for (int i = 0; i < nCount; ++i)
{
XmlUtils::CXmlNode oNode;
oNodes.GetAt(i, oNode);
std::wstring strName = XmlUtils::GetNameNoNS(oNode.GetName());
if (_T("cNvPr") == strName)
cNvPr = oNode;
else if (_T("cNvGrpSpPr") == strName)
cNvGrpSpPr = oNode;
else if (_T("nvPr") == strName)
nvPr = oNode;
}
}
FillParentPointersForChilds();
from header (old)*/
}
}
void NvGrpSpPr::fromXML(XmlUtils::CXmlLiteReader& oReader)
{
m_namespace = XmlUtils::GetNamespace(oReader.GetName());
if ( oReader.IsEmptyNode() )
return;
int nParentDepth = oReader.GetDepth();
while( oReader.ReadNextSiblingNode( nParentDepth ) )
{
std::wstring sName = XmlUtils::GetNameNoNS(oReader.GetName());
if (sName == L"cNvPr")
cNvPr = oReader;
else if (sName == L"cNvGrpSpPr")
cNvGrpSpPr = oReader;
else if (sName == L"nvPr")
nvPr = oReader;
}
FillParentPointersForChilds();
}
std::wstring NvGrpSpPr::toXML() const
{
XmlUtils::CNodeValue oValue;
oValue.Write(cNvPr);
oValue.Write(cNvGrpSpPr);
oValue.Write(nvPr);
return XmlUtils::CreateNode(_T("p:nvGrpSpPr"), oValue);
return XmlUtils::CreateNode(m_namespace + L":nvGrpSpPr", oValue);
}
void NvGrpSpPr::FillParentPointersForChilds()

View File

@ -46,7 +46,12 @@ namespace PPTX
class NvGrpSpPr : public WrapperWritingElement
{
public:
PPTX_LOGIC_BASE(NvGrpSpPr)
WritingElement_AdditionConstructors(NvGrpSpPr)
NvGrpSpPr()
{
m_namespace = L"p";
}
NvGrpSpPr& operator=(const NvGrpSpPr& oSrc)
{
@ -62,49 +67,18 @@ namespace PPTX
{
return OOX::et_p_NvGrpSpPr;
}
public:
virtual void fromXML(XmlUtils::CXmlLiteReader& oReader);
virtual void fromXML(XmlUtils::CXmlNode& node);
//{
// XmlUtils::CXmlNodes oNodes;
// if (node.GetNodes(_T("*"), oNodes))
// {
// int nCount = oNodes.GetCount();
// for (int i = 0; i < nCount; ++i)
// {
// XmlUtils::CXmlNode oNode;
// oNodes.GetAt(i, oNode);
//virtual void fromXML(XmlUtils::CXmlNode& node);
virtual std::wstring toXML() const;
// std::wstring strName = XmlUtils::GetNameNoNS(oNode.GetName());
// if (_T("cNvPr") == strName)
// cNvPr = oNode;
// else if (_T("cNvGrpSpPr") == strName)
// cNvGrpSpPr = oNode;
// else if (_T("nvPr") == strName)
// nvPr = oNode;
// }
// }
// FillParentPointersForChilds();
//}
//virtual std::wstring toXML() const;
//{
// XmlUtils::CNodeValue oValue;
// oValue.Write(cNvPr);
// oValue.Write(cNvGrpSpPr);
// oValue.Write(nvPr);
// return XmlUtils::CreateNode(_T("p:nvGrpSpPr"), oValue);
//}
virtual void toXmlWriter(NSBinPptxRW::CXmlWriter* pWriter) const
virtual void toXmlWriter(NSBinPptxRW::CXmlWriter* pWriter) const
{
if (pWriter->m_lDocType == XMLWRITER_DOC_TYPE_XLSX)
pWriter->StartNode(_T("xdr:nvGrpSpPr"));
else
pWriter->StartNode(_T("p:nvGrpSpPr"));
std::wstring namespace_ = m_namespace;
if (pWriter->m_lDocType == XMLWRITER_DOC_TYPE_XLSX) namespace_ = L"xdr";
pWriter->StartNode(namespace_ + L":nvGrpSpPr");
pWriter->EndAttributes();
@ -112,12 +86,11 @@ namespace PPTX
cNvGrpSpPr.toXmlWriter(pWriter);
if (pWriter->m_lDocType == XMLWRITER_DOC_TYPE_PPTX)
{
nvPr.toXmlWriter(pWriter);
}
if (pWriter->m_lDocType == XMLWRITER_DOC_TYPE_XLSX)
pWriter->EndNode(_T("xdr:nvGrpSpPr"));
else
pWriter->EndNode(_T("p:nvGrpSpPr"));
pWriter->EndNode(namespace_ + L":nvGrpSpPr");
}
virtual void toPPTY(NSBinPptxRW::CBinaryFileWriter* pWriter) const
@ -159,17 +132,14 @@ namespace PPTX
pReader->Seek(_end_rec);
}
public:
std::wstring m_namespace;
CNvPr cNvPr;
CNvGrpSpPr cNvGrpSpPr;
NvPr nvPr;
protected:
virtual void FillParentPointersForChilds();
//{
// cNvPr.SetParentPointer(this);
// cNvGrpSpPr.SetParentPointer(this);
// nvPr.SetParentPointer(this);
//}
};
} // namespace Logic
} // namespace PPTX

View File

@ -46,8 +46,12 @@ namespace PPTX
class NvPicPr : public WrapperWritingElement
{
public:
PPTX_LOGIC_BASE(NvPicPr)
WritingElement_AdditionConstructors(NvPicPr)
NvPicPr(std::wstring ns = L"p")
{
m_namespace = ns;
}
NvPicPr& operator=(const NvPicPr& oSrc)
{
parentFile = oSrc.parentFile;
@ -57,12 +61,35 @@ namespace PPTX
cNvPicPr = oSrc.cNvPicPr;
nvPr = oSrc.nvPr;
m_namespace = oSrc.m_namespace;
return *this;
}
virtual void fromXML(XmlUtils::CXmlLiteReader& oReader)
{
m_namespace = XmlUtils::GetNamespace(oReader.GetName());
if ( oReader.IsEmptyNode() )
return;
int nParentDepth = oReader.GetDepth();
while( oReader.ReadNextSiblingNode( nParentDepth ) )
{
std::wstring strName = XmlUtils::GetNameNoNS(oReader.GetName());
if (_T("cNvPr") == strName)
cNvPr.fromXML( oReader);
else if (_T("cNvPicPr") == strName)
cNvPicPr.fromXML( oReader);
else if (_T("nvPr") == strName)
nvPr.fromXML( oReader);
}
}
public:
virtual void fromXML(XmlUtils::CXmlNode& node)
{
m_namespace = XmlUtils::GetNamespace(node.GetName());
XmlUtils::CXmlNodes oNodes;
if (node.GetNodes(_T("*"), oNodes))
{
@ -93,17 +120,17 @@ namespace PPTX
oValue.Write(cNvPicPr);
oValue.Write(nvPr);
return XmlUtils::CreateNode(_T("p:nvPicPr"), oValue);
return XmlUtils::CreateNode(m_namespace + L":nvPicPr", oValue);
}
virtual void toXmlWriter(NSBinPptxRW::CXmlWriter* pWriter) const
{
if (pWriter->m_lDocType == XMLWRITER_DOC_TYPE_DOCX)
pWriter->StartNode(_T("pic:nvPicPr"));
else if (pWriter->m_lDocType == XMLWRITER_DOC_TYPE_XLSX)
pWriter->StartNode(_T("xdr:nvPicPr"));
else
pWriter->StartNode(_T("p:nvPicPr"));
std::wstring namespace_ = m_namespace;
if (pWriter->m_lDocType == XMLWRITER_DOC_TYPE_DOCX) namespace_ = L"pic";
else if (pWriter->m_lDocType == XMLWRITER_DOC_TYPE_XLSX) namespace_ = L"xdr";
pWriter->StartNode(namespace_ + L":nvPicPr");
pWriter->EndAttributes();
@ -113,12 +140,7 @@ namespace PPTX
if (pWriter->m_lDocType == XMLWRITER_DOC_TYPE_PPTX)
nvPr.toXmlWriter(pWriter);
if (pWriter->m_lDocType == XMLWRITER_DOC_TYPE_DOCX)
pWriter->EndNode(_T("pic:nvPicPr"));
else if (pWriter->m_lDocType == XMLWRITER_DOC_TYPE_XLSX)
pWriter->EndNode(_T("xdr:nvPicPr"));
else
pWriter->EndNode(_T("p:nvPicPr"));
pWriter->EndNode(namespace_ + L":nvPicPr");
}
virtual void toPPTY(NSBinPptxRW::CBinaryFileWriter* pWriter) const
@ -159,11 +181,11 @@ namespace PPTX
pReader->Seek(_end_rec);
}
std::wstring m_namespace;
public:
CNvPr cNvPr;
CNvPicPr cNvPicPr;
NvPr nvPr;
CNvPr cNvPr;
CNvPicPr cNvPicPr;
NvPr nvPr;
protected:
virtual void FillParentPointersForChilds()
{

View File

@ -44,8 +44,12 @@ namespace PPTX
class NvPr : public WrapperWritingElement
{
public:
PPTX_LOGIC_BASE(NvPr)
WritingElement_AdditionConstructors(NvPr)
NvPr(std::wstring ns = L"p")
{
m_namespace = ns;
}
NvPr& operator=(const NvPr& oSrc)
{
isPhoto = oSrc.isPhoto;
@ -58,19 +62,58 @@ namespace PPTX
return *this;
}
virtual void fromXML(XmlUtils::CXmlLiteReader& oReader)
{
m_namespace = XmlUtils::GetNamespace(oReader.GetName());
ReadAttributes(oReader);
public:
if ( oReader.IsEmptyNode() )
return;
int nParentDepth = oReader.GetDepth();
while( oReader.ReadNextSiblingNode( nParentDepth ) )
{
std::wstring strName = XmlUtils::GetNameNoNS(oReader.GetName());
if (strName == L"ph")
ph = oReader;
else if (strName == L"extLst")
{
int nParentDepth1 = oReader.GetDepth();
while( oReader.ReadNextSiblingNode( nParentDepth1 ) )
{
Ext element;
element.fromXML(oReader);
extLst.push_back (element);
}
}
else
{
media.fromXML(oReader);
}
}
}
void ReadAttributes(XmlUtils::CXmlLiteReader& oReader)
{
WritingElement_ReadAttributes_Start( oReader )
WritingElement_ReadAttributes_Read_if ( oReader, _T("isPhoto"), isPhoto)
WritingElement_ReadAttributes_Read_else_if ( oReader, _T("userDrawn"), userDrawn)
WritingElement_ReadAttributes_End( oReader )
}
virtual void fromXML(XmlUtils::CXmlNode& node)
{
m_namespace = XmlUtils::GetNamespace(node.GetName());
node.ReadAttributeBase(L"isPhoto", isPhoto);
node.ReadAttributeBase(L"userDrawn", userDrawn);
ph = node.ReadNode(_T("p:ph"));
ph = node.ReadNodeNoNS(_T("ph"));
media.GetMediaFrom(node);
XmlUtils::CXmlNode list;
if (node.GetNode(_T("p:extLst"), list))
{
XmlUtils::CXmlNode list = node.ReadNodeNoNS(_T("extLst"));
if (list.IsValid())
{
XmlUtils::CXmlNodes oNodes;
if (list.GetNodes(_T("*"), oNodes))
{
@ -102,13 +145,9 @@ namespace PPTX
}
virtual void toXmlWriter(NSBinPptxRW::CXmlWriter* pWriter) const
{
std::wstring namespace_;
if (pWriter->m_lDocType == XMLWRITER_DOC_TYPE_DOCX)
namespace_= _T("pic");
else if (pWriter->m_lDocType == XMLWRITER_DOC_TYPE_XLSX)
namespace_= _T("xdr");
else
namespace_= _T("p");
std::wstring namespace_ = m_namespace;
if (pWriter->m_lDocType == XMLWRITER_DOC_TYPE_DOCX) namespace_= _T("pic");
else if (pWriter->m_lDocType == XMLWRITER_DOC_TYPE_XLSX) namespace_= _T("xdr");
toXmlWriter2(namespace_, pWriter);
}
@ -191,17 +230,16 @@ namespace PPTX
pReader->Seek(_end_rec);
}
std::wstring m_namespace;
// Attributes
nullable_bool isPhoto;
nullable_bool userDrawn;
public:
// Attributes
nullable_bool isPhoto;
nullable_bool userDrawn;
//Childs
nullable<Ph> ph;
UniMedia media;
//custDataLst
std::vector<Ext> extLst;
//Childs
nullable<Ph> ph;
UniMedia media;
//custDataLst
std::vector<Ext> extLst;
protected:
virtual void FillParentPointersForChilds()
{

View File

@ -46,7 +46,12 @@ namespace PPTX
class NvSpPr : public WrapperWritingElement
{
public:
PPTX_LOGIC_BASE(NvSpPr)
WritingElement_AdditionConstructors(NvSpPr)
NvSpPr(std::wstring ns = L"p")
{
m_namespace = ns;
}
NvSpPr& operator=(const NvSpPr& oSrc)
{
@ -58,10 +63,32 @@ namespace PPTX
nvPr = oSrc.nvPr;
return *this;
}
virtual void fromXML(XmlUtils::CXmlLiteReader& oReader)
{
m_namespace = XmlUtils::GetNamespace(oReader.GetName());
public:
if ( oReader.IsEmptyNode() )
return;
int nParentDepth = oReader.GetDepth();
while( oReader.ReadNextSiblingNode( nParentDepth ) )
{
std::wstring strName = XmlUtils::GetNameNoNS(oReader.GetName());
if (_T("cNvPr") == strName)
cNvPr = oReader;
else if (_T("cNvSpPr") == strName)
cNvSpPr = oReader;
else if (_T("nvPr") == strName)
nvPr = oReader;
}
FillParentPointersForChilds();
}
virtual void fromXML(XmlUtils::CXmlNode& node)
{
m_namespace = XmlUtils::GetNamespace(node.GetName());
XmlUtils::CXmlNodes oNodes;
if (node.GetNodes(_T("*"), oNodes))
{
@ -91,15 +118,17 @@ namespace PPTX
oValue.Write(cNvSpPr);
oValue.Write(nvPr);
return XmlUtils::CreateNode(_T("p:nvSpPr"), oValue);
return XmlUtils::CreateNode(m_namespace + L":nvSpPr", oValue);
}
virtual void toXmlWriter(NSBinPptxRW::CXmlWriter* pWriter) const
{
if (pWriter->m_lDocType == XMLWRITER_DOC_TYPE_XLSX)
pWriter->StartNode(_T("xdr:nvSpPr"));
else
pWriter->StartNode(_T("p:nvSpPr"));
std::wstring namespace_ = m_namespace;
if (pWriter->m_lDocType == XMLWRITER_DOC_TYPE_DOCX) namespace_ = _T("wps");
else if (pWriter->m_lDocType == XMLWRITER_DOC_TYPE_XLSX) namespace_ = _T("xdr");
pWriter->StartNode( namespace_ + L":nvSpPr");
pWriter->EndAttributes();
@ -109,10 +138,7 @@ namespace PPTX
if (pWriter->m_lDocType == XMLWRITER_DOC_TYPE_PPTX)
nvPr.toXmlWriter(pWriter);
if (pWriter->m_lDocType == XMLWRITER_DOC_TYPE_XLSX)
pWriter->EndNode(_T("xdr:nvSpPr"));
else
pWriter->EndNode(_T("p:nvSpPr"));
pWriter->EndNode( namespace_ + L":nvSpPr");
}
virtual void toPPTY(NSBinPptxRW::CBinaryFileWriter* pWriter) const
@ -154,10 +180,11 @@ namespace PPTX
pReader->Seek(_end_rec);
}
public:
CNvPr cNvPr;
CNvSpPr cNvSpPr;
NvPr nvPr;
std::wstring m_namespace;
CNvPr cNvPr;
CNvSpPr cNvSpPr;
NvPr nvPr;
protected:
virtual void FillParentPointersForChilds()
{

View File

@ -127,7 +127,7 @@ namespace PPTX
int nParentDepth = oReader.GetDepth();
while( oReader.ReadNextSiblingNode( nParentDepth ) )
{
std::wstring strName = oReader.GetName();
std::wstring strName = XmlUtils::GetNameNoNS(oReader.GetName());
WritingElement *pItem = NULL;
if (_T("pPr") == strName)

View File

@ -44,9 +44,26 @@ namespace PPTX
class Ph : public WrapperWritingElement
{
public:
PPTX_LOGIC_BASE(Ph)
WritingElement_AdditionConstructors(Ph)
public:
Ph()
{
}
virtual void fromXML(XmlUtils::CXmlLiteReader& oReader)
{
ReadAttributes(oReader);
}
void ReadAttributes(XmlUtils::CXmlLiteReader& oReader)
{
WritingElement_ReadAttributes_Start( oReader )
WritingElement_ReadAttributes_Read_if ( oReader, _T("hasCustomPrompt"), hasCustomPrompt)
WritingElement_ReadAttributes_Read_else_if ( oReader, _T("idx"), idx)
WritingElement_ReadAttributes_Read_else_if ( oReader, _T("orient"), orient)
WritingElement_ReadAttributes_Read_else_if ( oReader, _T("sz"), sz)
WritingElement_ReadAttributes_Read_else_if ( oReader, _T("type"), type)
WritingElement_ReadAttributes_End( oReader )
}
virtual void fromXML(XmlUtils::CXmlNode& node)
{
node.ReadAttributeBase(L"hasCustomPrompt", hasCustomPrompt);

View File

@ -261,31 +261,59 @@ namespace PPTX
return sRes;
}
Pic::Pic()
Pic::Pic(std::wstring ns)
{
m_namespace = ns;
}
Pic::~Pic()
{
}
Pic::Pic(XmlUtils::CXmlNode& node)
{
fromXML(node);
}
const Pic& Pic::operator =(XmlUtils::CXmlNode& node)
{
fromXML(node);
return *this;
}
Pic::Pic(XmlUtils::CXmlLiteReader& oReader)
{
fromXML(oReader);
}
const Pic& Pic::operator =(XmlUtils::CXmlLiteReader& oReader)
{
fromXML(oReader);
return *this;
}
void Pic::fromXML(XmlUtils::CXmlLiteReader& oReader)
{
m_namespace = XmlUtils::GetNamespace(oReader.GetName());
if ( oReader.IsEmptyNode() )
return;
int nParentDepth = oReader.GetDepth();
while( oReader.ReadNextSiblingNode( nParentDepth ) )
{
std::wstring strName = XmlUtils::GetNameNoNS(oReader.GetName());
if (_T("nvPicPr") == strName)
nvPicPr = oReader;
else if (_T("blipFill") == strName)
blipFill = oReader;
else if (_T("spPr") == strName)
spPr = oReader;
else if (_T("style") == strName)
style = oReader;
}
FillParentPointersForChilds();
}
void Pic::fromXML(XmlUtils::CXmlNode& node)
{
m_namespace = XmlUtils::GetNamespace(node.GetName());
XmlUtils::CXmlNodes oNodes;
if (node.GetNodes(_T("*"), oNodes))
{
@ -327,7 +355,6 @@ namespace PPTX
FillParentPointersForChilds();
}
std::wstring Pic::toXML() const
{
XmlUtils::CNodeValue oValue;
@ -336,7 +363,7 @@ namespace PPTX
oValue.Write(spPr);
oValue.WriteNullable(style);
return XmlUtils::CreateNode(_T("p:pic"), oValue);
return XmlUtils::CreateNode(m_namespace + L":pic", oValue);
}
void Pic::FillParentPointersForChilds()

View File

@ -215,13 +215,23 @@ namespace PPTX
class Pic : public WrapperWritingElement
{
public:
Pic();
Pic(std::wstring ns = L"p");
virtual ~Pic();
virtual OOX::EElementType getType () const
{
return OOX::et_pic;
}
explicit Pic(XmlUtils::CXmlNode& node);
const Pic& operator =(XmlUtils::CXmlNode& node);
explicit Pic(XmlUtils::CXmlLiteReader& oReader);
const Pic& operator =(XmlUtils::CXmlLiteReader& oReader);
public:
virtual void fromXML(XmlUtils::CXmlNode& node);
virtual void fromXML(XmlUtils::CXmlLiteReader& oReader);
virtual std::wstring toXML() const;
virtual void GetRect(Aggplus::RECT& pRect)const;
virtual std::wstring GetFullPicName()const;
@ -255,16 +265,14 @@ namespace PPTX
virtual void toXmlWriter(NSBinPptxRW::CXmlWriter* pWriter) const
{
std::wstring namespace_ = m_namespace;
bool bOle = false;
if (pWriter->m_lDocType == XMLWRITER_DOC_TYPE_XLSX)
pWriter->StartNode(_T("xdr:pic"));
else if (pWriter->m_lDocType == XMLWRITER_DOC_TYPE_DOCX)
{
pWriter->StartNode(_T("pic:pic"));
pWriter->StartAttributes();
pWriter->WriteAttribute(_T("xmlns:pic"), (std::wstring)_T("http://schemas.openxmlformats.org/drawingml/2006/picture"));
}
else
if (pWriter->m_lDocType == XMLWRITER_DOC_TYPE_XLSX) namespace_ = L"xdr";
else if (pWriter->m_lDocType == XMLWRITER_DOC_TYPE_DOCX) namespace_ = L"pic";
if (pWriter->m_lDocType != XMLWRITER_DOC_TYPE_XLSX &&
pWriter->m_lDocType != XMLWRITER_DOC_TYPE_DOCX)
{
if(oleObject.IsInit() && oleObject->isValid())
{
@ -301,22 +309,19 @@ namespace PPTX
pWriter->WriteString(L"<p:embed/>");
}
pWriter->StartNode(_T("p:pic"));
}
pWriter->StartNode(namespace_ + L":pic");
if (pWriter->m_lDocType == XMLWRITER_DOC_TYPE_DOCX)
{
pWriter->StartAttributes();
pWriter->WriteAttribute(_T("xmlns:pic"), (std::wstring)_T("http://schemas.openxmlformats.org/drawingml/2006/picture"));
}
pWriter->EndAttributes();
nvPicPr.toXmlWriter(pWriter);
if (pWriter->m_lDocType == XMLWRITER_DOC_TYPE_XLSX)
blipFill.m_namespace = _T("xdr");
else if (pWriter->m_lDocType == XMLWRITER_DOC_TYPE_DOCX)
blipFill.m_namespace = _T("pic");
else
blipFill.m_namespace = _T("p");
if (blipFill.blip.is_init())
blipFill.blip->m_namespace = _T("a");
blipFill.m_namespace = namespace_;
blipFill.toXmlWriter(pWriter);
pWriter->m_lFlag = 1;
@ -325,19 +330,16 @@ namespace PPTX
pWriter->Write(style);
if (pWriter->m_lDocType == XMLWRITER_DOC_TYPE_XLSX)
pWriter->EndNode(_T("xdr:pic"));
else if (pWriter->m_lDocType == XMLWRITER_DOC_TYPE_DOCX)
pWriter->EndNode(_T("pic:pic"));
else
pWriter->EndNode(namespace_ + L":pic");
if (pWriter->m_lDocType != XMLWRITER_DOC_TYPE_XLSX &&
pWriter->m_lDocType != XMLWRITER_DOC_TYPE_DOCX)
{
pWriter->EndNode(_T("p:pic"));
if(bOle)
{
pWriter->WriteString(L"</p:oleObj></a:graphicData></a:graphic></p:graphicFrame>");
}
}
}
virtual void fromPPTY(NSBinPptxRW::CBinaryFileReader* pReader)
@ -367,8 +369,7 @@ namespace PPTX
}
case 3:
{
style = new ShapeStyle();
style->m_ns = _T("p");
style = new ShapeStyle(L"p");
style->fromPPTY(pReader);
break;
}
@ -401,13 +402,13 @@ namespace PPTX
void toXmlWriterVML(NSBinPptxRW::CXmlWriter* pWriter, smart_ptr<PPTX::WrapperFile>& oTheme, smart_ptr<PPTX::WrapperWritingElement>& oClrMap, bool in_group = false);
void fromXMLOle(XmlUtils::CXmlNode& node);
public:
NvPicPr nvPicPr;
BlipFill blipFill;
SpPr spPr;
nullable<ShapeStyle> style;
//internal
//internal
std::wstring m_namespace;
nullable<COLEObject> oleObject;
protected:
virtual void FillParentPointersForChilds();

View File

@ -57,7 +57,7 @@ namespace PPTX
}
void ReadAttributes(XmlUtils::CXmlLiteReader& oReader)
{
WritingElement_ReadAttributes_Start( oReader )
WritingElement_ReadAttributes_Start_No_NS( oReader )
WritingElement_ReadAttributes_Read_if ( oReader, _T("val"), val )
WritingElement_ReadAttributes_End( oReader )
}

View File

@ -56,7 +56,7 @@ namespace PPTX
}
void ReadAttributes(XmlUtils::CXmlLiteReader& oReader)
{
WritingElement_ReadAttributes_Start( oReader )
WritingElement_ReadAttributes_Start_No_NS( oReader )
WritingElement_ReadAttributes_Read_if ( oReader, _T("t"), t )
WritingElement_ReadAttributes_Read_else_if( oReader, _T("l"), l )
WritingElement_ReadAttributes_Read_else_if( oReader, _T("r"), r )

View File

@ -58,7 +58,7 @@ namespace PPTX
{
nullable_int lat_, lon_, rev_;
WritingElement_ReadAttributes_Start( oReader )
WritingElement_ReadAttributes_Start_No_NS( oReader )
WritingElement_ReadAttributes_Read_if ( oReader, _T("lat"), lat_)
WritingElement_ReadAttributes_Read_else_if ( oReader, _T("lon"), lon_)
WritingElement_ReadAttributes_Read_else_if ( oReader, _T("rev"), rev_)

View File

@ -59,7 +59,7 @@ namespace PPTX
}
virtual void fromXML(XmlUtils::CXmlLiteReader& oReader)
{
std::wstring name = oReader.GetName();
std::wstring name = XmlUtils::GetNameNoNS(oReader.GetName());
if(name == _T("r"))
Elem.reset(new Logic::Run(oReader));

View File

@ -98,14 +98,19 @@ namespace PPTX
{
public:
WritingElement_AdditionConstructors(RunProperties)
PPTX_LOGIC_BASE2(RunProperties)
RunProperties()
{
m_name = L"a:rPr";
}
virtual OOX::EElementType getType () const
{
return OOX::et_a_rPr;
}
virtual void fromXML(XmlUtils::CXmlLiteReader& oReader)
{
m_name = oReader.GetName();
ReadAttributes( oReader );
if ( oReader.IsEmptyNode() )
@ -114,34 +119,34 @@ namespace PPTX
int nParentDepth = oReader.GetDepth();
while( oReader.ReadNextSiblingNode( nParentDepth ) )
{
std::wstring sName = oReader.GetName();
std::wstring sName = XmlUtils::GetNameNoNS(oReader.GetName());
if (L"a:blipFill" == sName ||
L"a:gradFill" == sName ||
L"a:grpFill" == sName ||
L"a:noFill" == sName ||
L"a:pattFill" == sName ||
L"a:solidFill" == sName )
if (L"blipFill" == sName ||
L"gradFill" == sName ||
L"grpFill" == sName ||
L"noFill" == sName ||
L"pattFill" == sName ||
L"solidFill" == sName )
{
Fill.fromXML(oReader);
}
else if ( _T("a:ln") == sName )
else if ( _T("ln") == sName )
ln = oReader;
else if ( _T("a:cs") == sName )
else if ( _T("cs") == sName )
cs = oReader;
else if ( _T("a:ea") == sName )
else if ( _T("ea") == sName )
ea = oReader;
else if ( _T("a:latin") == sName )
else if ( _T("latin") == sName )
latin = oReader;
else if ( _T("a:sym") == sName )
else if ( _T("sym") == sName )
sym = oReader;
else if ( _T("a:hlinkClick") == sName )
else if ( _T("hlinkClick") == sName )
hlinkClick = oReader;
else if ( _T("a:rtl") == sName )
else if ( _T("rtl") == sName )
rtl = oReader;
else if ( L"a:effectDag" == sName ||
L"a:effectLst" == sName ||
L"a:extLst" == sName )
else if ( L"effectDag" == sName ||
L"effectLst" == sName ||
L"extLst" == sName )
{
EffectList.fromXML(oReader);
}

View File

@ -41,8 +41,9 @@ namespace PPTX
{
namespace Logic
{
Shape::Shape()
Shape::Shape(std::wstring name_)
{
m_name = name_;
}
Shape::~Shape()
@ -53,15 +54,61 @@ namespace PPTX
{
fromXML(node);
}
const Shape& Shape::operator =(XmlUtils::CXmlNode& node)
{
fromXML(node);
return *this;
}
Shape::Shape(XmlUtils::CXmlLiteReader& oReader)
{
fromXML(oReader);
}
const Shape& Shape::operator =(XmlUtils::CXmlLiteReader& oReader)
{
fromXML(oReader);
return *this;
}
void Shape::fromXML(XmlUtils::CXmlLiteReader& oReader)
{
m_name = oReader.GetName();
ReadAttributes( oReader );
if ( oReader.IsEmptyNode() )
return;
int nParentDepth = oReader.GetDepth();
while( oReader.ReadNextSiblingNode( nParentDepth ) )
{
std::wstring strName = XmlUtils::GetNameNoNS(oReader.GetName());
if (_T("nvSpPr") == strName)
nvSpPr = oReader;
else if (_T("spPr") == strName)
spPr = oReader;
else if (_T("style") == strName)
style = oReader;
else if (_T("txBody") == strName)
txBody = oReader;
else if (_T("txXfrm") == strName)
txXfrm = oReader;
else if (_T("txbx") == strName || _T("textbox") == strName)
txBody = oReader;
else if (_T("cNvPr") == strName)
nvSpPr.cNvPr = oReader;
else if (_T("cNvSpPr") == strName)
nvSpPr.cNvSpPr = oReader;
else if (_T("txSp") == strName)
txBody = oReader;
else if (_T("bodyPr") == strName)
TextBoxBodyPr = oReader;
}
FillParentPointersForChilds();
}
void Shape::fromXML(XmlUtils::CXmlNode& node)
{
m_name = node.GetName();
node.ReadAttributeBase(L"useBgFill", attrUseBgFill);
XmlUtils::CXmlNodes oNodes;
@ -112,7 +159,6 @@ namespace PPTX
FillParentPointersForChilds();
}
std::wstring Shape::toXML() const
{
XmlUtils::CAttribute oAttr;
@ -124,17 +170,17 @@ namespace PPTX
oValue.WriteNullable(style);
oValue.WriteNullable(txBody);
return XmlUtils::CreateNode(_T("p:sp"), oAttr, oValue);
return XmlUtils::CreateNode(m_name, oAttr, oValue);
}
void Shape::toXmlWriter(NSBinPptxRW::CXmlWriter* pWriter) const
{
if (pWriter->m_lDocType == XMLWRITER_DOC_TYPE_DOCX)
pWriter->StartNode(_T("wps:wsp"));
else if (pWriter->m_lDocType == XMLWRITER_DOC_TYPE_XLSX)
pWriter->StartNode(_T("xdr:sp"));
else
pWriter->StartNode(_T("p:sp"));
std::wstring name_ = m_name;
if (pWriter->m_lDocType == XMLWRITER_DOC_TYPE_DOCX) name_ = L"wps:wsp";
else if (pWriter->m_lDocType == XMLWRITER_DOC_TYPE_XLSX) name_ = L"xdr:sp";
pWriter->StartNode(name_);
pWriter->StartAttributes();
pWriter->WriteAttribute(_T("useBgFill"), attrUseBgFill);
@ -142,7 +188,6 @@ namespace PPTX
if (pWriter->m_lDocType == XMLWRITER_DOC_TYPE_DOCX)
{
//nvSpPr.cNvPr.toXmlWriter2(_T("wps"), pWriter);
nvSpPr.cNvSpPr.toXmlWriter2(_T("wps"), pWriter);
}
else
@ -166,9 +211,9 @@ namespace PPTX
if (style.is_init())
{
if (pWriter->m_lDocType == XMLWRITER_DOC_TYPE_DOCX)
style->m_ns = _T("wps");
style->m_namespace = _T("wps");
else if (pWriter->m_lDocType == XMLWRITER_DOC_TYPE_XLSX)
style->m_ns = _T("xdr");
style->m_namespace = _T("xdr");
pWriter->Write(style);
}
@ -208,12 +253,7 @@ namespace PPTX
}
}
if (pWriter->m_lDocType == XMLWRITER_DOC_TYPE_DOCX)
pWriter->EndNode(_T("wps:wsp"));
else if (pWriter->m_lDocType == XMLWRITER_DOC_TYPE_XLSX)
pWriter->EndNode(_T("xdr:sp"));
else
pWriter->EndNode(_T("p:sp"));
pWriter->EndNode(name_);
}
void Shape::fromPPTY(NSBinPptxRW::CBinaryFileReader* pReader)
@ -257,8 +297,7 @@ namespace PPTX
}
case 2:
{
style = new ShapeStyle();
style->m_ns = _T("p");
style = new ShapeStyle(L"p");
style->fromPPTY(pReader);
break;
}

View File

@ -275,19 +275,31 @@ namespace PPTX
class Shape : public WrapperWritingElement
{
public:
Shape();
Shape(std::wstring name_ = L"p:sp");
virtual ~Shape();
explicit Shape(XmlUtils::CXmlNode& node);
const Shape& operator =(XmlUtils::CXmlNode& node);
explicit Shape(XmlUtils::CXmlLiteReader& oReader);
const Shape& operator =(XmlUtils::CXmlLiteReader& oReader);
virtual OOX::EElementType getType () const
{
return OOX::et_p_Shape;
return OOX::et_a_Shape;
}
virtual void fromXML(XmlUtils::CXmlNode& node);
virtual void fromXML(XmlUtils::CXmlLiteReader& oReader);
virtual std::wstring toXML() const;
void ReadAttributes(XmlUtils::CXmlLiteReader& oReader)
{
WritingElement_ReadAttributes_Start( oReader )
WritingElement_ReadAttributes_ReadSingle( oReader, _T("useBgFill"), attrUseBgFill)
WritingElement_ReadAttributes_End( oReader )
}
std::wstring GetText()const{if(txBody.IsInit()) return txBody->GetText(); return _T(""); };
void GetShapeFullDescription(Shape& shape, int level = 0)const;
@ -312,6 +324,8 @@ namespace PPTX
virtual void toXmlWriter (NSBinPptxRW::CXmlWriter* pWriter) const;
virtual void fromPPTY (NSBinPptxRW::CBinaryFileReader* pReader);
std::wstring m_name;
NvSpPr nvSpPr;
SpPr spPr;
nullable<ShapeStyle> style;
@ -324,7 +338,7 @@ namespace PPTX
bool isFontRefInSlide;
mutable nullable<TextParagraphPr> body[10];
// Attributes
// Attributes
nullable_bool attrUseBgFill;
protected:
virtual void FillParentPointersForChilds();

View File

@ -44,8 +44,12 @@ namespace PPTX
class ShapeStyle : public WrapperWritingElement
{
public:
PPTX_LOGIC_BASE(ShapeStyle)
WritingElement_AdditionConstructors(ShapeStyle)
ShapeStyle(std::wstring ns = L"a")
{
m_namespace = ns;
}
ShapeStyle& operator=(const ShapeStyle& oSrc)
{
parentFile = oSrc.parentFile;
@ -56,7 +60,7 @@ namespace PPTX
effectRef = oSrc.effectRef;
fontRef = oSrc.fontRef;
m_ns = oSrc.m_ns;
m_namespace = oSrc.m_namespace;
return *this;
}
@ -64,10 +68,33 @@ namespace PPTX
{
return OOX::et_p_style;
}
public:
virtual void fromXML(XmlUtils::CXmlLiteReader& oReader)
{
m_namespace = XmlUtils::GetNamespace(oReader.GetName());
if ( oReader.IsEmptyNode() )
return;
int nCurDepth = oReader.GetDepth();
while( oReader.ReadNextSiblingNode( nCurDepth ) )
{
std::wstring strName = XmlUtils::GetNameNoNS(oReader.GetName());
if (_T("lnRef") == strName)
lnRef.fromXML(oReader);
else if (_T("fillRef") == strName)
fillRef.fromXML(oReader);
else if (_T("effectRef") == strName)
effectRef.fromXML(oReader);
else if (_T("fontRef") == strName)
fontRef.fromXML(oReader);
}
FillParentPointersForChilds();
}
virtual void fromXML(XmlUtils::CXmlNode& node)
{
m_ns = XmlUtils::GetNamespace(node.GetName());
m_namespace = XmlUtils::GetNamespace(node.GetName());
XmlUtils::CXmlNodes oNodes;
if (node.GetNodes(_T("*"), oNodes))
@ -106,12 +133,12 @@ namespace PPTX
oValue.Write(effectRef);
oValue.Write(fontRef);
return XmlUtils::CreateNode(m_ns + _T(":style"), oAttr, oValue);
return XmlUtils::CreateNode(m_namespace + _T(":style"), oAttr, oValue);
}
virtual void toXmlWriter(NSBinPptxRW::CXmlWriter* pWriter) const
{
pWriter->StartNode(m_ns + _T(":style"));
pWriter->StartNode(m_namespace + _T(":style"));
pWriter->EndAttributes();
lnRef.toXmlWriter(pWriter);
@ -119,7 +146,7 @@ namespace PPTX
effectRef.toXmlWriter(pWriter);
fontRef.toXmlWriter(pWriter);
pWriter->EndNode(m_ns + _T(":style"));
pWriter->EndNode(m_namespace + _T(":style"));
}
virtual void toPPTY(NSBinPptxRW::CBinaryFileWriter* pWriter) const
@ -177,7 +204,7 @@ namespace PPTX
StyleRef effectRef;
FontRef fontRef;
mutable std::wstring m_ns;
mutable std::wstring m_namespace;
protected:
virtual void FillParentPointersForChilds()
{

View File

@ -46,9 +46,15 @@ namespace PPTX
{
void SmartArt::LoadDrawing(NSBinPptxRW::CBinaryFileWriter* pWriter)
{
if (m_diag.IsInit())
return ;
FileContainer* pRels = NULL;
if (pWriter->m_pCommonRels->is_init())
pRels = pWriter->m_pCommonRels->operator ->();
if (pWriter)
{
if (pWriter->m_pCommonRels->is_init())
pRels = pWriter->m_pCommonRels->operator ->();
}
smart_ptr<OOX::File> oFileData;
smart_ptr<OOX::File> oFileDrawing;
@ -101,7 +107,7 @@ namespace PPTX
pDiagramDrawing = dynamic_cast<OOX::CDiagramDrawing*>(oFileDrawing.operator->());
}
if (!pDiagramDrawing)
if (!pDiagramDrawing && pDiagramData)
{
// easy4cargo1.pptx - слайд 2 - в диаграмме Smart вместо ссылки на drawing.xml ссылка на стороннюю картинку
OOX::CPath pathDiagramData = pDiagramData->m_strFilename;
@ -118,7 +124,9 @@ namespace PPTX
if ((pDiagramDrawing) && (pDiagramDrawing->m_oShapeTree.IsInit()))
{
m_diag = pDiagramDrawing->m_oShapeTree;
m_diag = pDiagramDrawing->m_oShapeTree;
FillParentPointersForChilds();
m_oCommonRels = smart_ptr<PPTX::CCommonRels>( new PPTX::CCommonRels());
m_oCommonRels->_read(pDiagramDrawing->m_oReadPath);
}
@ -169,7 +177,15 @@ namespace PPTX
*oDrawingConverter.m_pBinaryWriter->m_pCommonRels = pOldRels;
oDrawingConverter.m_pBinaryWriter = pOldWriter;
}
std::wstring ChartRec::toXML() const
{
if (!id_data.is_init() || NULL == m_bData)
return L"";
std::wstring strData = L"<c:chart xmlns:c=\"http://schemas.openxmlformats.org/drawingml/2006/chart\" \
xmlns:r=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\" r:id=\"" + id_data->ToString() + L"\"/>";
return strData;
}
void ChartRec::toXmlWriter(NSBinPptxRW::CXmlWriter* pWriter) const
{
if (!id_data.is_init() || NULL == m_bData)

View File

@ -42,7 +42,11 @@ namespace PPTX
class SmartArt : public WrapperWritingElement
{
public:
PPTX_LOGIC_BASE(SmartArt)
WritingElement_AdditionConstructors(SmartArt)
SmartArt()
{
}
SmartArt& operator=(const SmartArt& oSrc)
{
@ -52,15 +56,28 @@ namespace PPTX
m_diag = oSrc.m_diag;
return *this;
}
public:
void ReadAttributes(XmlUtils::CXmlLiteReader& oReader)
{
WritingElement_ReadAttributes_Start ( oReader )
WritingElement_ReadAttributes_Read_if ( oReader, _T("r:cs"), id_color)
WritingElement_ReadAttributes_Read_else_if( oReader, _T("r:dm"), id_data)
WritingElement_ReadAttributes_Read_else_if( oReader, _T("r:lo"), id_layout)
WritingElement_ReadAttributes_Read_else_if( oReader, _T("r:qs"), id_style)
WritingElement_ReadAttributes_End ( oReader )
}
virtual void fromXML(XmlUtils::CXmlLiteReader& oReader)
{
ReadAttributes( oReader );
//FillParentPointersForChilds();
}
virtual void fromXML(XmlUtils::CXmlNode& node)
{
node.ReadAttributeBase(L"r:dm", id_data);
FillParentPointersForChilds();
node.ReadAttributeBase(L"r:cs", id_color);
node.ReadAttributeBase(L"r:lo", id_layout);
node.ReadAttributeBase(L"r:qs", id_style);
//FillParentPointersForChilds();
}
virtual std::wstring toXML() const
{
return _T("");
@ -86,9 +103,10 @@ namespace PPTX
pReader->SkipRecord();
}
public:
nullable<OOX::RId> id_data;
nullable<OOX::RId> id_data;
nullable<OOX::RId> id_color;
nullable<OOX::RId> id_layout;
nullable<OOX::RId> id_style;
nullable<PPTX::Logic::SpTree> m_diag;
smart_ptr<PPTX::CCommonRels> m_oCommonRels;
@ -100,34 +118,24 @@ namespace PPTX
}
public:
void LoadDrawing(NSBinPptxRW::CBinaryFileWriter* pWriter);
void LoadDrawing(NSBinPptxRW::CBinaryFileWriter* pWriter = NULL);
};
class ChartRec : public WrapperWritingElement
{
public:
WritingElement_AdditionConstructors(ChartRec)
ChartRec()
{
m_bData = false;
m_lChartNumber = 0;
}
virtual ~ChartRec()
{
}
explicit ChartRec(XmlUtils::CXmlNode& node)
{
fromXML(node);
}
const ChartRec& operator =(XmlUtils::CXmlNode& node)
{
fromXML(node);
return *this;
}
ChartRec(const ChartRec& oSrc)
{
*this = oSrc;
}
ChartRec& operator=(const ChartRec& oSrc)
{
parentFile = oSrc.parentFile;
@ -135,8 +143,18 @@ namespace PPTX
return *this;
}
public:
void ReadAttributes(XmlUtils::CXmlLiteReader& oReader)
{
WritingElement_ReadAttributes_Start ( oReader )
WritingElement_ReadAttributes_ReadSingle ( oReader, _T("r:id"), id_data )
WritingElement_ReadAttributes_End ( oReader )
}
virtual void fromXML(XmlUtils::CXmlLiteReader& oReader)
{
m_bData = false;
ReadAttributes( oReader );
FillParentPointersForChilds();
}
virtual void fromXML(XmlUtils::CXmlNode& node)
{
m_bData = false;
@ -144,24 +162,16 @@ namespace PPTX
node.ReadAttributeBase(L"r:id", id_data);
FillParentPointersForChilds();
}
virtual std::wstring toXML() const
{
return _T("");
}
virtual std::wstring toXML() const;
virtual void toXmlWriter(NSBinPptxRW::CXmlWriter* pWriter) const;
virtual void toPPTY(NSBinPptxRW::CBinaryFileWriter* pWriter) const;
virtual void fromPPTY(NSBinPptxRW::CBinaryFileReader* pReader);
public:
nullable<OOX::RId> id_data;
nullable<OOX::RId> id_data;
LONG m_lChartNumber;
bool m_bData;
LONG m_lChartNumber;
bool m_bData;
protected:
virtual void FillParentPointersForChilds()
{

View File

@ -39,9 +39,9 @@ namespace PPTX
{
namespace Logic
{
SpPr::SpPr()
SpPr::SpPr(std::wstring ns)
{
m_namespace = ns;
Fill.m_type = UniFill::notInit;
}
SpPr::~SpPr()

View File

@ -52,8 +52,9 @@ namespace PPTX
class SpPr : public WrapperWritingElement
{
public:
SpPr();
virtual ~SpPr();
SpPr(std::wstring ns = L"a");
virtual ~SpPr();
explicit SpPr(XmlUtils::CXmlNode& node);
const SpPr& operator =(XmlUtils::CXmlNode& node);

View File

@ -49,7 +49,11 @@ namespace PPTX
class SpTree : public WrapperWritingElement
{
public:
PPTX_LOGIC_BASE(SpTree)
WritingElement_AdditionConstructors(SpTree)
SpTree()
{
}
SpTree& operator=(const SpTree& oSrc)
{
@ -70,7 +74,43 @@ namespace PPTX
{
return OOX::et_p_ShapeTree;
}
public:
virtual void fromXML(XmlUtils::CXmlLiteReader& oReader)
{
m_name = oReader.GetName();
SpTreeElems.clear();
if ( oReader.IsEmptyNode() )
return;
int nParentDepth = oReader.GetDepth();
while( oReader.ReadNextSiblingNode( nParentDepth ) )
{
std::wstring strName = XmlUtils::GetNameNoNS(oReader.GetName());
if (strName == L"nvGrpSpPr")
nvGrpSpPr.fromXML(oReader);
else if (strName == L"grpSpPr")
grpSpPr.fromXML(oReader);
else if (_T("cNvPr") == strName)
{
nvGrpSpPr.cNvPr = oReader;
}
else if (_T("cNvGrpSpPr") == strName)
{
nvGrpSpPr.cNvGrpSpPr = oReader;
}
else
{
SpTreeElem elem(oReader);
if (elem.is_init())
SpTreeElems.push_back(elem);
}
}
FillParentPointersForChilds();
}
virtual void fromXML(XmlUtils::CXmlNode& node)
{
m_name = node.GetName();
@ -256,9 +296,8 @@ namespace PPTX
Logic::NvGrpSpPr nvGrpSpPr;
Logic::GrpSpPr grpSpPr;
std::vector<SpTreeElem> SpTreeElems;
//private:
public:
std::wstring m_name;
std::wstring m_name;
protected:
virtual void FillParentPointersForChilds()
{

Some files were not shown because too many files have changed in this diff Show More