Compare commits

..

36 Commits

Author SHA1 Message Date
bc3461147d fix pptx note slide default 2017-03-03 14:29:18 +03:00
80d4e6057b .. 2017-03-03 13:35:37 +03:00
2dc5c2916a .. 2017-03-03 13:28:16 +03:00
5f9631a3c5 .. 2017-03-02 13:14:27 +03:00
ef7df69036 linux build fix 2017-03-01 20:06:37 +03:00
b3961994d2 Pptx .. 2017-03-01 19:40:40 +03:00
927a847607 . 2017-03-01 18:14:33 +03:00
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
7496de06f0 . 2017-02-21 13:19:21 +03:00
fdd443a2d7 . 2017-02-21 13:18:29 +03:00
037c4046eb PptxFormat - extending reading xml; sppr, txpr in chart without DrawingConverter 2017-02-21 11:32:31 +03:00
4e5ac14ca9 errors for builder (open/save) 2017-02-18 14:17:42 +03:00
dedf74b366 fix for build 2017-02-18 11:02:42 +03:00
6f2eef1137 .. 2017-02-17 16:42:49 +03:00
9a8d3edbef . 2017-02-17 16:33:19 +03:00
305ebda78d OfficeUtils - add sort for compress 2017-02-17 16:28:00 +03:00
114050c23e fix bug #33849 2017-02-16 19:26:50 +03:00
7eee0755bf RtfFormatReader - generate replacement text hyperlink if absent 2017-02-16 16:23:21 +03:00
c329f29e9a RtfFormatReader - fix hyperlink text 2017-02-16 15:49:08 +03:00
0f3a02ca7c . 2017-02-16 15:20:53 +03:00
62d4860873 pptx - extending reading xml 2017-02-16 15:08:53 +03:00
241 changed files with 7360 additions and 3492 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

@ -61,7 +61,7 @@ bool BinDocxRW::CDocxSerializer::ConvertDocxToDoct(const std::wstring& sSrcFileN
if(S_OK == oCOfficeUtils.ExtractToDirectory(sSrcFileName, strDirSrc, NULL, 0))
if(saveToFile(strEditorBin, strDirSrc, sXMLOptions))
if(S_OK == oCOfficeUtils.CompressFileOrDirectory(strDirDst, sDstFileName, -1))
if(S_OK == oCOfficeUtils.CompressFileOrDirectory(strDirDst, sDstFileName))
return true;
return false;
}
@ -88,7 +88,7 @@ bool BinDocxRW::CDocxSerializer::ConvertDoctToDocx(const std::wstring& sSrcFileN
if(loadFromFile(sEditorBin, strDirDst, sXMLOptions, sThemePath, sMediaPath, sEmbedPath))
{
if(S_OK == oCOfficeUtils.CompressFileOrDirectory(strDirDst, sDstFileName, -1))
if(S_OK == oCOfficeUtils.CompressFileOrDirectory(strDirDst, sDstFileName, true))
return true;
}
}

View File

@ -275,7 +275,7 @@ namespace BinXlsxRW{
oXlsx.Write(oPath, sAdditionalContentTypes);
//zip
COfficeUtils oOfficeUtils(NULL);
oOfficeUtils.CompressFileOrDirectory(sTempDir, sDstFile, -1);
oOfficeUtils.CompressFileOrDirectory(sTempDir, sDstFile, true);
//clean
NSDirectory::DeleteDirectory(sTempDir);
}

View File

@ -34,7 +34,6 @@
#include <stdio.h>
#include <tchar.h>
#include "../../OfficeUtils/src/OfficeUtils.h"
#include "../../DesktopEditor/common/Directory.h"
#include "../src/ConvertOO2OOX.h"
@ -55,7 +54,7 @@ int _tmain(int argc, _TCHAR* argv[])
HRESULT hr = S_OK;
//////////////////////////////////////////////////////////////////////////
std::wstring srcFileName = argv[1];
std::wstring dstPath = argc > 2 ? argv[2] : srcFileName + L"-my.docx"; //xlsx pptx
std::wstring dstPath = argc > 2 ? argv[2] : srcFileName + L"-my.xlsx"; //xlsx pptx docx
std::wstring outputDir = NSDirectory::GetFolderPath(dstPath);
@ -73,7 +72,7 @@ int _tmain(int argc, _TCHAR* argv[])
if (hr != S_OK) return hr;
if (S_OK != oCOfficeUtils.CompressFileOrDirectory(dstTempPath.c_str(), dstPath.c_str(), -1))
if (S_OK != oCOfficeUtils.CompressFileOrDirectory(dstTempPath.c_str(), dstPath.c_str(), true))
return hr;
NSDirectory::DeleteDirectory(dstTempPath);

View File

@ -64,6 +64,8 @@
<Tool
Name="VCLinkerTool"
AdditionalDependencies="gdi32.lib Rpcrt4.lib"
ShowProgress="0"
Version=""
LinkIncremental="2"
GenerateDebugInformation="true"
SubSystem="1"

View File

@ -24,7 +24,8 @@ DEFINES += UNICODE \
_USE_LIBXML2_READER_ \
_USE_XMLLITE_READER_ \
USE_LITE_READER \
LIBXML_READER_ENABLED
LIBXML_READER_ENABLED \
DONT_WRITE_EMBEDDED_FONTS
INCLUDEPATH += ../include
INCLUDEPATH += ../../DesktopEditor/freetype-2.5.2/include

View File

@ -47,12 +47,12 @@ docx_content_types_file::docx_content_types_file()
content()->add_default(L"jpg", L"image/jpeg");
content()->add_default(L"png", L"image/png");
//
content()->add_override(L"/_rels/.rels", L"application/vnd.openxmlformats-package.relationships+xml");
content()->add_override(L"/word/_rels/document.xml.rels", L"application/vnd.openxmlformats-package.relationships+xml");
content()->add_override(L"/word/document.xml", L"application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml");
content()->add_override(L"/word/settings.xml", L"application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml");
content()->add_override(L"/word/styles.xml", L"application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml");
content()->add_override(L"/word/fontTable.xml", L"application/vnd.openxmlformats-officedocument.wordprocessingml.fontTable+xml");
//content()->add_override(L"/word/_rels/document.xml.rels", L"application/vnd.openxmlformats-package.relationships+xml");
//content()->add_override(L"/_rels/.rels", L"application/vnd.openxmlformats-package.relationships+xml");
content()->add_override(L"/docProps/app.xml", L"application/vnd.openxmlformats-officedocument.extended-properties+xml");
content()->add_override(L"/docProps/core.xml", L"application/vnd.openxmlformats-package.core-properties+xml");
}

View File

@ -381,7 +381,7 @@ std::wstring draw_object::office_convert(odf_document * odfDocument, int type)
std::wstring temp_file = folderPath + FILE_SEPARATOR_STR + href_result;
COfficeUtils oCOfficeUtils(NULL);
oCOfficeUtils.CompressFileOrDirectory(objectOutPath.c_str(), temp_file.c_str(), -1);
oCOfficeUtils.CompressFileOrDirectory(objectOutPath.c_str(), temp_file.c_str(), true);
}
NSDirectory::DeleteDirectory(objectOutPath);

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;
@ -85,9 +187,10 @@ void OoxConverter::convert(PPTX::Logic::Shape *oox_shape)
if (type == SimpleTypes::shapetypeRect && oox_shape->txBody.IsInit()) type = 2000;
if (type == 2000 && oox_shape->txBody->bodyPr.fromWordArt.get_value_or(false))
if (type == 2000 && oox_shape->txBody->bodyPr.IsInit()
&& oox_shape->txBody->bodyPr->fromWordArt.get_value_or(false))
{
int wordart_type = convert(oox_shape->txBody->bodyPr.prstTxWarp.GetPointer());
int wordart_type = convert(oox_shape->txBody->bodyPr->prstTxWarp.GetPointer());
if (wordart_type > 0) type = wordart_type;
}
@ -111,7 +214,7 @@ void OoxConverter::convert(PPTX::Logic::Shape *oox_shape)
odf_context()->drawing_context()->set_text( odf_context()->text_context());
//наложим внешние настройки для текста
convert(&oox_shape->txBody->bodyPr);
convert(oox_shape->txBody->bodyPr.GetPointer());
if (oox_shape->style.IsInit())
{
@ -281,15 +384,15 @@ void OoxConverter::convert(PPTX::Logic::PathBase *oox_path)
}
if (cubicBezTo)
{
std::wstring path_elm = cubicBezTo->x1 + L" " + cubicBezTo->y1 + L" " +
cubicBezTo->x2 + L" " + cubicBezTo->y2 + L" " +
cubicBezTo->x3 + L" " + cubicBezTo->y3;
std::wstring path_elm = cubicBezTo->x[0] + L" " + cubicBezTo->y[0] + L" " +
cubicBezTo->x[1] + L" " + cubicBezTo->y[1] + L" " +
cubicBezTo->x[2] + L" " + cubicBezTo->y[2];
odf_context()->drawing_context()->add_path_element(std::wstring(L"C"), path_elm);
}
if (quadBezTo)
{
std::wstring path_elm = quadBezTo->x1 + L" " + quadBezTo->y1 + L" " +
quadBezTo->x2 + L" " + quadBezTo->y2;
std::wstring path_elm = quadBezTo->x[0] + L" " + quadBezTo->y[0] + L" " +
quadBezTo->x[1] + L" " + quadBezTo->y[1];
odf_context()->drawing_context()->add_path_element(std::wstring(L"S"), path_elm);
}
if (arcTo)

View File

@ -395,7 +395,7 @@ void OoxConverter::convert(OOX::Drawing::CDiagrammParts *oox_diagramm)
if (oFile.is_init() && OOX::FileTypes::DiagDrawing == oFile->type())
{
_CP_OPT(double) x, y, width, height, cx = 0, cy = 0;
_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);

View File

@ -270,7 +270,6 @@ namespace OOX
class CT_Style1;
class CT_Style;
class CT_TextLanguageID;
class CRichText;
class CTextProperties;
}
namespace Vml
@ -312,6 +311,7 @@ namespace PPTX
{
namespace Logic
{
class GraphicFrame;
class SpTree;
class Shape;
class SpPr;
@ -343,6 +343,10 @@ namespace PPTX
class Fld;
class Br;
class MathParaWrapper;
class NvGraphicFramePr;
class Table;
class ChartRec;
class SmartArt;
}
}
@ -428,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);
@ -458,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);
@ -495,8 +504,8 @@ public:
void convert(OOX::Spreadsheet::CT_LineSer *ser);
void convert(OOX::Spreadsheet::CT_AxDataSource *cat, int type);
void convert(OOX::Spreadsheet::CT_NumDataSource *val);
void convert(OOX::Spreadsheet::CRichText *rich);
void convert(OOX::Spreadsheet::CTextProperties *txPr);
//void convert(OOX::Spreadsheet::CRichText *rich);
//void convert(OOX::Spreadsheet::CTextProperties *txPr);
void convert(OOX::Spreadsheet::CT_Tx *ct_tx);
void convert(OOX::Spreadsheet::CT_Layout *ct_layout);
void convert(OOX::Spreadsheet::CT_ManualLayout *ct_layout);

View File

@ -73,32 +73,32 @@ void OoxConverter::convert(OOX::Spreadsheet::CT_ChartSpace *oox_chart)
odf_context()->chart_context()->end_plot_area();
}
void OoxConverter::convert(OOX::Spreadsheet::CRichText* rich)
{
if (rich == NULL)return;
odf_context()->chart_context()->start_text();
OoxConverter::convert(rich->m_oBodyPr.GetPointer());
for (size_t i = 0; i < rich->m_arrItems.size();i++)
{
OoxConverter::convert(rich->m_arrItems[i]);
}
odf_context()->chart_context()->end_text();
}
void OoxConverter::convert(OOX::Spreadsheet::CTextProperties* txPr)
{
if (txPr == NULL)return;
odf_context()->chart_context()->start_text();
OoxConverter::convert(txPr->m_oBodyPr.GetPointer());
for (size_t i = 0; i < txPr->m_arrItems.size();i++)
{
OoxConverter::convert(txPr->m_arrItems[i]);
}
odf_context()->chart_context()->end_text();
}
//void OoxConverter::convert(OOX::Spreadsheet::CRichText* rich)
//{
// if (rich == NULL)return;
//
// odf_context()->chart_context()->start_text();
// OoxConverter::convert(rich->m_oBodyPr.GetPointer());
//
// for (size_t i = 0; i < rich->m_arrItems.size();i++)
// {
// OoxConverter::convert(rich->m_arrItems[i]);
// }
// odf_context()->chart_context()->end_text();
//}
//void OoxConverter::convert(OOX::Spreadsheet::CTextProperties* txPr)
//{
// if (txPr == NULL)return;
//
// odf_context()->chart_context()->start_text();
// OoxConverter::convert(txPr->m_oBodyPr.GetPointer());
//
// for (size_t i = 0; i < txPr->m_arrItems.size();i++)
// {
// OoxConverter::convert(txPr->m_arrItems[i]);
// }
// odf_context()->chart_context()->end_text();
//}
void OoxConverter::convert(OOX::Spreadsheet::CT_Tx* ct_tx)
{
if (ct_tx == NULL)return;

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

@ -2754,7 +2754,11 @@ void CDrawingConverter::doc_LoadShape(PPTX::Logic::SpTreeElem *elem, XmlUtils::C
{
if (pShape->txBody.IsInit() == false)
pShape->txBody = new PPTX::Logic::TxBody();
pShape->txBody->bodyPr.vert = pShape->TextBoxBodyPr->vert;
if (!pShape->txBody->bodyPr.IsInit())
pShape->txBody->bodyPr = new PPTX::Logic::BodyPr();
pShape->txBody->bodyPr->vert = pShape->TextBoxBodyPr->vert;
}
pPair = oCSSParser.m_mapSettings.find(L"mso-rotate");
@ -2765,7 +2769,11 @@ void CDrawingConverter::doc_LoadShape(PPTX::Logic::SpTreeElem *elem, XmlUtils::C
pShape->TextBoxBodyPr->rot = _wtoi(pPair->second.c_str()) * 60000; //для docx, xlsx
if (pShape->txBody.IsInit() == false) //для pptx
pShape->txBody = new PPTX::Logic::TxBody();
pShape->txBody->bodyPr.rot = pShape->TextBoxBodyPr->rot;
if (!pShape->txBody->bodyPr.IsInit())
pShape->txBody->bodyPr = new PPTX::Logic::BodyPr();
pShape->txBody->bodyPr->rot = pShape->TextBoxBodyPr->rot;
}catch(...){}
}
@ -2954,12 +2962,10 @@ void CDrawingConverter::doc_LoadGroup(PPTX::Logic::SpTreeElem *result, XmlUtils:
{
if (!result) return;
PPTX::Logic::SpTree* pTree = new PPTX::Logic::SpTree();
PPTX::Logic::SpTree* pTree = new PPTX::Logic::SpTree(L"wp");
if (bIsTop)
pTree->m_name = L"wpg:wgp";
else
pTree->m_name = L"wpg:grpSp";
if (bIsTop) pTree->m_lGroupIndex = 0;
else pTree->m_lGroupIndex = 1;
XmlUtils::CXmlNodes oNodes;
if (oNode.GetNodes(L"*", oNodes))
@ -4833,6 +4839,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;
@ -5210,45 +5218,45 @@ void CDrawingConverter::ConvertMainPropsToVML(const std::wstring& bsMainProps, N
pWriter.m_strStyleMain = oWriter.GetXmlString();
}
HRESULT CDrawingConverter::GetTxBodyBinary(const std::wstring& bsXml)
{
XmlUtils::CXmlNode oNode;
if (!oNode.FromXmlString((std::wstring)bsXml))
return S_FALSE;
PPTX::Logic::TxBody oTxBody(oNode);
//HRESULT CDrawingConverter::GetTxBodyBinary(const std::wstring& bsXml)
//{
// XmlUtils::CXmlNode oNode;
// if (!oNode.FromXmlString((std::wstring)bsXml))
// return S_FALSE;
//
// PPTX::Logic::TxBody oTxBody(oNode);
//
// //m_pBinaryWriter->ClearNoAttack();
// //ULONG lOldPos = m_pBinaryWriter->GetPosition();
// m_pBinaryWriter->m_pCommon->CheckFontPicker();
// //m_pBinaryWriter->m_pCommon->m_pNativePicker->Init(m_strFontDirectory);
//
// m_pBinaryWriter->WriteRecord1(0, oTxBody);
//
// //m_pBinaryWriter->SetPosition(lOldPos);
//
// //m_pBinaryWriter->ClearNoAttack();
// return S_OK;
//}
//m_pBinaryWriter->ClearNoAttack();
//ULONG lOldPos = m_pBinaryWriter->GetPosition();
m_pBinaryWriter->m_pCommon->CheckFontPicker();
//m_pBinaryWriter->m_pCommon->m_pNativePicker->Init(m_strFontDirectory);
m_pBinaryWriter->WriteRecord1(0, oTxBody);
//m_pBinaryWriter->SetPosition(lOldPos);
//m_pBinaryWriter->ClearNoAttack();
return S_OK;
}
HRESULT CDrawingConverter::GetTxBodyXml(LONG lStart, std::wstring& sXml)
{
m_pReader->Seek(lStart);
BYTE type = m_pReader->GetUChar();
if (0 != type)
return S_FALSE;
PPTX::Logic::TxBody oTxBody;
oTxBody.fromPPTY(m_pReader);
NSBinPptxRW::CXmlWriter oWriter;
oTxBody.toXmlWriterExcel(&oWriter);
sXml = oWriter.GetXmlString();
return S_OK;
}
//HRESULT CDrawingConverter::GetTxBodyXml(LONG lStart, std::wstring& sXml)
//{
// m_pReader->Seek(lStart);
//
// BYTE type = m_pReader->GetUChar();
// if (0 != type)
// return S_FALSE;
//
// PPTX::Logic::TxBody oTxBody;
// oTxBody.fromPPTY(m_pReader);
//
// NSBinPptxRW::CXmlWriter oWriter;
// oTxBody.toXmlWriterExcel(&oWriter);
//
// sXml = oWriter.GetXmlString();
//
// return S_OK;
//}
HRESULT CDrawingConverter::SetFontDir(const std::wstring& bsFontDir)
{

View File

@ -236,8 +236,6 @@ namespace NSBinPptxRW
HRESULT WriteRels (const std::wstring& sType, const std::wstring& sTarget, const std::wstring& sTargetMode, long* lId);
HRESULT LoadClrMap (const std::wstring& sXml);
HRESULT(GetTxBodyBinary) (const std::wstring& sXml);
HRESULT(GetTxBodyXml) (long lStart, std::wstring & Xml);
HRESULT(SetFontDir) (const std::wstring& sFontDir);
HRESULT SetFontPicker (COfficeFontPicker* pFontPicker);

View File

@ -1066,7 +1066,7 @@ namespace NSBinPptxRW
xfrm->chOffY = 0;
xfrm->chExtX = 0;
xfrm->chExtY = 0;
m_oDefaultNote.cSld.spTree.m_name = _T("p:spTree");
m_oDefaultNote.cSld.spTree.grpSpPr.xfrm = xfrm;
// shape comment !!! (TODO:)
@ -1090,6 +1090,11 @@ namespace NSBinPptxRW
pTxRun->SetText(_T("")); // enter simple comment here
pShape->txBody = pTxBody;
if (pShape->txBody.IsInit())
{
if (!pShape->txBody->bodyPr.IsInit())
pShape->txBody->bodyPr = new PPTX::Logic::BodyPr;
}
PPTX::Logic::RunElem elm;
pTxBody->Paragrs[0].RunElems.push_back(elm);

View File

@ -73,9 +73,9 @@ namespace PPTX
{
directory = directory.substr(0, pos_ppt - 1); //root directory
}
CArray<std::wstring> arrFiles = NSDirectory::GetFiles(directory, true);
std::vector<std::wstring> arrFiles = NSDirectory::GetFiles(directory, true);
for (int i = 0 ; i < arrFiles.GetCount(); i++)
for (size_t i = 0 ; i < arrFiles.size(); i++)
{
if (std::wstring::npos != arrFiles[i].find(filename))
{

View File

@ -45,9 +45,15 @@ namespace PPTX
class AhBase : public WrapperWritingElement
{
public:
PPTX_LOGIC_BASE(AhBase)
WritingElement_AdditionConstructors(AhBase)
PPTX_LOGIC_BASE2(AhBase)
public:
virtual OOX::EElementType getType() const
{
if (ah.IsInit())
return ah->getType();
return OOX::et_Unknown;
}
virtual void fromXML(XmlUtils::CXmlNode& node)
{
std::wstring name = XmlUtils::GetNameNoNS(node.GetName());
@ -58,7 +64,16 @@ namespace PPTX
ah.reset(new Logic::AhPolar(node));
else ah.reset();
}
virtual void fromXML(XmlUtils::CXmlLiteReader& oReader)
{
std::wstring sName = XmlUtils::GetNameNoNS(oReader.GetName());
if (sName == L"ahXY")
ah.reset(new Logic::AhXY(oReader));
else if(sName == L"ahPolar")
ah.reset(new Logic::AhPolar(oReader));
else ah.reset();
}
virtual void GetAdjustHandleFrom(XmlUtils::CXmlNode& element)
{
XmlUtils::CXmlNode oNode;

View File

@ -43,9 +43,9 @@ namespace PPTX
class AhPolar : public Ah
{
public:
PPTX_LOGIC_BASE(AhPolar)
WritingElement_AdditionConstructors(AhPolar)
PPTX_LOGIC_BASE2(AhPolar)
public:
virtual void fromXML(XmlUtils::CXmlNode& node)
{
XmlUtils::CXmlNode oPos = node.ReadNode(_T("a:pos"));
@ -60,7 +60,46 @@ namespace PPTX
node.ReadAttributeBase(L"minAng", minAng);
node.ReadAttributeBase(L"minR", minR);
}
virtual OOX::EElementType getType() const
{
return OOX::et_a_ahPolar;
}
virtual void fromXML(XmlUtils::CXmlLiteReader& oReader)
{
ReadAttributes( oReader );
if ( oReader.IsEmptyNode() )
return;
int nParentDepth = oReader.GetDepth();
while( oReader.ReadNextSiblingNode( nParentDepth ) )
{
std::wstring sName = oReader.GetName();
if (sName == L"a:pos")
{
ReadAttributes2(oReader);
}
}
}
void ReadAttributes(XmlUtils::CXmlLiteReader& oReader)
{
WritingElement_ReadAttributes_Start( oReader )
WritingElement_ReadAttributes_Read_if ( oReader, _T("gdRefR"), gdRefR )
WritingElement_ReadAttributes_Read_else_if ( oReader, _T("minR"), minR )
WritingElement_ReadAttributes_Read_else_if ( oReader, _T("maxR"), maxR )
WritingElement_ReadAttributes_Read_else_if ( oReader, _T("gdRefAng"), gdRefAng )
WritingElement_ReadAttributes_Read_else_if ( oReader, _T("minAng"), minAng )
WritingElement_ReadAttributes_Read_else_if ( oReader, _T("maxAng"), maxAng )
WritingElement_ReadAttributes_End( oReader )
}
void ReadAttributes2(XmlUtils::CXmlLiteReader& oReader)
{
WritingElement_ReadAttributes_Start( oReader )
WritingElement_ReadAttributes_Read_if ( oReader, _T("x"), x )
WritingElement_ReadAttributes_Read_else_if ( oReader, _T("y"), y )
WritingElement_ReadAttributes_End( oReader )
}
virtual std::wstring toXML() const
{
XmlUtils::CAttribute oAttr1;

View File

@ -43,9 +43,9 @@ namespace PPTX
class AhXY : public Ah
{
public:
PPTX_LOGIC_BASE(AhXY)
WritingElement_AdditionConstructors(AhXY)
PPTX_LOGIC_BASE2(AhXY)
public:
virtual void fromXML(XmlUtils::CXmlNode& node)
{
XmlUtils::CXmlNode oPos = node.ReadNode(_T("a:pos"));
@ -60,7 +60,46 @@ namespace PPTX
node.ReadAttributeBase(L"minX", minX);
node.ReadAttributeBase(L"minY", minY);
}
virtual OOX::EElementType getType() const
{
return OOX::et_a_ahXY;
}
virtual void fromXML(XmlUtils::CXmlLiteReader& oReader)
{
ReadAttributes( oReader );
if ( oReader.IsEmptyNode() )
return;
int nParentDepth = oReader.GetDepth();
while( oReader.ReadNextSiblingNode( nParentDepth ) )
{
std::wstring sName = oReader.GetName();
if (sName == L"a:pos")
{
ReadAttributes2(oReader);
}
}
}
void ReadAttributes(XmlUtils::CXmlLiteReader& oReader)
{
WritingElement_ReadAttributes_Start( oReader )
WritingElement_ReadAttributes_Read_if ( oReader, _T("gdRefX"), gdRefX )
WritingElement_ReadAttributes_Read_else_if ( oReader, _T("minX"), minX )
WritingElement_ReadAttributes_Read_else_if ( oReader, _T("maxX"), maxX )
WritingElement_ReadAttributes_Read_else_if ( oReader, _T("gdRefY"), gdRefY )
WritingElement_ReadAttributes_Read_else_if ( oReader, _T("minY"), minY )
WritingElement_ReadAttributes_Read_else_if ( oReader, _T("maxY"), maxY )
WritingElement_ReadAttributes_End( oReader )
}
void ReadAttributes2(XmlUtils::CXmlLiteReader& oReader)
{
WritingElement_ReadAttributes_Start( oReader )
WritingElement_ReadAttributes_Read_if ( oReader, _T("x"), x )
WritingElement_ReadAttributes_Read_else_if ( oReader, _T("y"), y )
WritingElement_ReadAttributes_End( oReader )
}
virtual std::wstring toXML() const
{
XmlUtils::CAttribute oAttr1;

View File

@ -43,9 +43,60 @@ namespace PPTX
class Backdrop : public WrapperWritingElement
{
public:
PPTX_LOGIC_BASE(Backdrop)
WritingElement_AdditionConstructors(Backdrop)
PPTX_LOGIC_BASE2(Backdrop)
public:
virtual OOX::EElementType getType() const
{
return OOX::et_a_backdrop;
}
void fromXML(XmlUtils::CXmlLiteReader& oReader)
{
if ( oReader.IsEmptyNode() )
return;
int nCurDepth = oReader.GetDepth();
while( oReader.ReadNextSiblingNode( nCurDepth ) )
{
std::wstring strName = oReader.GetName();
nullable_int x, y, z;
if (strName == L"a:anchor")
{
ReadAttributes(oReader, x, y, z);
anchorX = x.get_value_or(0);
anchorY = y.get_value_or(0);
anchorZ = z.get_value_or(0);
}
else if (strName == L"a:norm")
{
ReadAttributes(oReader, x, y, z);
normX = x.get_value_or(0);
normY = y.get_value_or(0);
normZ = z.get_value_or(0);
}
else if (strName == L"a:up")
{
ReadAttributes(oReader, x, y, z);
upX = x.get_value_or(0);
upY = y.get_value_or(0);
upZ = z.get_value_or(0);
}
}
FillParentPointersForChilds();
}
void ReadAttributes(XmlUtils::CXmlLiteReader& oReader, nullable_int & x, nullable_int & y, nullable_int & z )
{
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)
WritingElement_ReadAttributes_Read_else_if ( oReader, _T("dx"), x)
WritingElement_ReadAttributes_Read_else_if ( oReader, _T("dy"), y)
WritingElement_ReadAttributes_Read_else_if ( oReader, _T("dz"), z)
WritingElement_ReadAttributes_End( oReader )
}
virtual void fromXML(XmlUtils::CXmlNode& node)
{
XmlUtils::CXmlNode oNodeA = node.ReadNode(_T("a:anchor"));

View File

@ -44,9 +44,27 @@ namespace PPTX
class Bevel : public WrapperWritingElement
{
public:
PPTX_LOGIC_BASE(Bevel)
WritingElement_AdditionConstructors(Bevel)
PPTX_LOGIC_BASE2(Bevel)
public:
virtual OOX::EElementType getType() const
{
return OOX::et_a_bevel;
}
void fromXML(XmlUtils::CXmlLiteReader& oReader)
{
m_name = XmlUtils::GetNameNoNS(oReader.GetName());
ReadAttributes( oReader );
}
void ReadAttributes(XmlUtils::CXmlLiteReader& 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)
WritingElement_ReadAttributes_End( oReader )
}
virtual void fromXML(XmlUtils::CXmlNode& node)
{
m_name = XmlUtils::GetNameNoNS(node.GetName());

View File

@ -51,9 +51,67 @@ namespace PPTX
class BodyPr : public WrapperWritingElement
{
public:
PPTX_LOGIC_BASE(BodyPr)
WritingElement_AdditionConstructors(BodyPr)
BodyPr(std::wstring ns = L"a")
{
m_namespace = ns;
}
public:
virtual void fromXML(XmlUtils::CXmlLiteReader& oReader)
{
ReadAttributes( oReader );
if ( oReader.IsEmptyNode() )
return;
int nCurDepth = oReader.GetDepth();
while( oReader.ReadNextSiblingNode( nCurDepth ) )
{
std::wstring strName = oReader.GetName();
if (L"a:prstTxWarp" == strName)
prstTxWarp = oReader;
else if (L"a:scene3d" == strName)
scene3d = oReader;
else if (L"a:sp3d" == strName)
sp3d = oReader;
else if (strName == L"a:noAutofit" || strName == L"a:spAutoFit" || strName == L"a:normAutofit")
Fit.fromXML(oReader);
else if (L"a:flatTx" == strName)
{
//oNode.ReadAttributeBase(L"z", flatTx);
}
}
FillParentPointersForChilds();
}
void ReadAttributes(XmlUtils::CXmlLiteReader& oReader)
{
WritingElement_ReadAttributes_Start ( oReader )
WritingElement_ReadAttributes_Read_if ( oReader, _T("anchor"), anchor )
WritingElement_ReadAttributes_Read_else_if( oReader, _T("anchorCtr"), anchorCtr )
WritingElement_ReadAttributes_Read_else_if( oReader, _T("bIns"), bIns )
WritingElement_ReadAttributes_Read_else_if( oReader, _T("compatLnSpc"), compatLnSpc )
WritingElement_ReadAttributes_Read_else_if( oReader, _T("forceAA"), forceAA )
WritingElement_ReadAttributes_Read_else_if( oReader, _T("fromWordArt"), fromWordArt )
WritingElement_ReadAttributes_Read_else_if( oReader, _T("horzOverflow"), horzOverflow )
WritingElement_ReadAttributes_Read_else_if( oReader, _T("lIns"), lIns )
WritingElement_ReadAttributes_Read_else_if( oReader, _T("numCol"), numCol )
WritingElement_ReadAttributes_Read_else_if( oReader, _T("rIns"), rIns )
WritingElement_ReadAttributes_Read_else_if( oReader, _T("rot"), rot )
WritingElement_ReadAttributes_Read_else_if( oReader, _T("rtlCol"), rtlCol )
WritingElement_ReadAttributes_Read_else_if( oReader, _T("spcCol"), spcCol )
WritingElement_ReadAttributes_Read_else_if( oReader, _T("spcFirstLastPara"), spcFirstLastPara )
WritingElement_ReadAttributes_Read_else_if( oReader, _T("tIns"), tIns )
WritingElement_ReadAttributes_Read_else_if( oReader, _T("upright"), upright )
WritingElement_ReadAttributes_Read_else_if( oReader, _T("vert"), vert )
WritingElement_ReadAttributes_Read_else_if( oReader, _T("vertOverflow"), vertOverflow )
WritingElement_ReadAttributes_Read_else_if( oReader, _T("wrap"), wrap )
WritingElement_ReadAttributes_End ( oReader )
Normalize();
}
virtual void fromXML(XmlUtils::CXmlNode& node)
{
m_namespace = XmlUtils::GetNamespace(node.GetName());
@ -93,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);
@ -132,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();
@ -172,10 +234,16 @@ namespace PPTX
pWriter->EndNode(m_namespace + _T(":bodyPr"));
}
void Merge(BodyPr& bodyPr)const
void Merge(nullable<BodyPr>& bodyPr)const
{
if (!bodyPr.IsInit())
{
bodyPr = new PPTX::Logic::BodyPr();
}
if(Fit.type != TextFit::FitEmpty)
Fit.Merge(bodyPr.Fit);
Fit.Merge(bodyPr->Fit);
/*
nullable_property<PrstTxWarp> prstTxWarp;
nullable_property<Scene3d> scene3d;
@ -184,43 +252,43 @@ namespace PPTX
*/
// Attributes
if(anchor.IsInit())
bodyPr.anchor = *anchor;
bodyPr->anchor = *anchor;
if(anchorCtr.IsInit())
bodyPr.anchorCtr = *anchorCtr;
bodyPr->anchorCtr = *anchorCtr;
if(bIns.IsInit())
bodyPr.bIns = *bIns;
bodyPr->bIns = *bIns;
if(compatLnSpc.IsInit())
bodyPr.compatLnSpc = *compatLnSpc;
bodyPr->compatLnSpc = *compatLnSpc;
if(forceAA.IsInit())
bodyPr.forceAA = *forceAA;
bodyPr->forceAA = *forceAA;
if(fromWordArt.IsInit())
bodyPr.fromWordArt = *fromWordArt;
bodyPr->fromWordArt = *fromWordArt;
if(horzOverflow.IsInit())
bodyPr.horzOverflow = *horzOverflow;
bodyPr->horzOverflow = *horzOverflow;
if(lIns.IsInit())
bodyPr.lIns = *lIns;
bodyPr->lIns = *lIns;
if(numCol.IsInit())
bodyPr.numCol = *numCol;
bodyPr->numCol = *numCol;
if(rIns.IsInit())
bodyPr.rIns = *rIns;
bodyPr->rIns = *rIns;
if(rot.IsInit())
bodyPr.rot = *rot;
bodyPr->rot = *rot;
if(rtlCol.IsInit())
bodyPr.rtlCol = *rtlCol;
bodyPr->rtlCol = *rtlCol;
if(spcCol.IsInit())
bodyPr.spcCol = *spcCol;
bodyPr->spcCol = *spcCol;
if(spcFirstLastPara.IsInit())
bodyPr.spcFirstLastPara = *spcFirstLastPara;
bodyPr->spcFirstLastPara = *spcFirstLastPara;
if(tIns.IsInit())
bodyPr.tIns = *tIns;
bodyPr->tIns = *tIns;
if(upright.IsInit())
bodyPr.upright = *upright;
bodyPr->upright = *upright;
if(vert.IsInit())
bodyPr.vert = *vert;
bodyPr->vert = *vert;
if(vertOverflow.IsInit())
bodyPr.vertOverflow = *vertOverflow;
bodyPr->vertOverflow = *vertOverflow;
if(wrap.IsInit())
bodyPr.wrap = *wrap;
bodyPr->wrap = *wrap;
}
virtual void toPPTY(NSBinPptxRW::CBinaryFileWriter* pWriter) const

View File

@ -43,7 +43,8 @@ namespace PPTX
class BuAutoNum : public WrapperWritingElement
{
public:
PPTX_LOGIC_BASE(BuAutoNum)
WritingElement_AdditionConstructors(BuAutoNum)
PPTX_LOGIC_BASE2(BuAutoNum)
BuAutoNum& operator=(const BuAutoNum& oSrc)
{
@ -55,8 +56,14 @@ namespace PPTX
return *this;
}
public:
virtual void fromXML(XmlUtils::CXmlLiteReader& oReader)
{
ReadAttributes( oReader );
}
virtual OOX::EElementType getType() const
{
return OOX::et_a_buChar;
}
virtual void fromXML(XmlUtils::CXmlNode& node)
{
node.ReadAttributeBase(L"type", type);
@ -64,7 +71,15 @@ namespace PPTX
Normalize();
}
void ReadAttributes(XmlUtils::CXmlLiteReader& oReader)
{
WritingElement_ReadAttributes_Start ( oReader )
WritingElement_ReadAttributes_Read_if ( oReader, L"startAt", startAt)
WritingElement_ReadAttributes_Read_else_if( oReader, L"type", type)
WritingElement_ReadAttributes_End ( oReader )
Normalize();
}
virtual std::wstring toXML() const
{
XmlUtils::CAttribute oAttr;

View File

@ -43,7 +43,8 @@ namespace PPTX
class BuBlip : public WrapperWritingElement
{
public:
PPTX_LOGIC_BASE(BuBlip)
WritingElement_AdditionConstructors(BuBlip)
PPTX_LOGIC_BASE2(BuBlip)
BuBlip& operator=(const BuBlip& oSrc)
{
@ -54,7 +55,28 @@ namespace PPTX
return *this;
}
public:
virtual void fromXML(XmlUtils::CXmlLiteReader& oReader)
{
if ( oReader.IsEmptyNode() )
return;
int nCurDepth = oReader.GetDepth();
while( oReader.ReadNextSiblingNode( nCurDepth ) )
{
std::wstring strName = XmlUtils::GetNameNoNS(oReader.GetName());
if (strName == L"blip")
{
blip = oReader;
break;
}
}
}
virtual OOX::EElementType getType () const
{
return OOX::et_a_buBlip;
}
virtual void fromXML(XmlUtils::CXmlNode& node)
{
blip = node.ReadNodeNoNS(_T("blip"));

View File

@ -42,7 +42,8 @@ namespace PPTX
class BuChar : public WrapperWritingElement
{
public:
PPTX_LOGIC_BASE(BuChar)
WritingElement_AdditionConstructors(BuChar)
PPTX_LOGIC_BASE2(BuChar)
BuChar& operator=(const BuChar& oSrc)
{
@ -52,13 +53,27 @@ namespace PPTX
Char = oSrc.Char;
return *this;
}
virtual OOX::EElementType getType() const
{
return OOX::et_a_buAutoNum;
}
virtual void fromXML(XmlUtils::CXmlLiteReader& oReader)
{
ReadAttributes( oReader );
public:
if ( oReader.IsEmptyNode() )
return;
}
void ReadAttributes(XmlUtils::CXmlLiteReader& oReader)
{
WritingElement_ReadAttributes_Start( oReader )
WritingElement_ReadAttributes_ReadSingle ( oReader, L"char", Char)
WritingElement_ReadAttributes_End( oReader )
}
virtual void fromXML(XmlUtils::CXmlNode& node)
{
Char = node.GetAttribute(_T("char"));
}
virtual std::wstring toXML() const
{
XmlUtils::CAttribute oAttr;

View File

@ -43,7 +43,32 @@ namespace PPTX
class BuClr : public WrapperWritingElement
{
public:
PPTX_LOGIC_BASE(BuClr)
WritingElement_AdditionConstructors(BuClr)
PPTX_LOGIC_BASE2(BuClr)
virtual void fromXML(XmlUtils::CXmlLiteReader& oReader)
{
ReadAttributes( oReader );
if ( oReader.IsEmptyNode() )
return;
int nCurDepth = oReader.GetDepth();
while( oReader.ReadNextSiblingNode( nCurDepth ) )
{
std::wstring sName = oReader.GetName();
}
}
virtual OOX::EElementType getType () const
{
return OOX::et_a_buClr;
}
void ReadAttributes(XmlUtils::CXmlLiteReader& oReader)
{
WritingElement_ReadAttributes_Start ( oReader )
WritingElement_ReadAttributes_End ( oReader )
}
BuClr& operator=(const BuClr& oSrc)
{
@ -59,7 +84,6 @@ namespace PPTX
virtual DWORD GetBGRA()const{return Color.GetBGRA();};
virtual DWORD GetABGR()const{return Color.GetABGR();};
public:
virtual void fromXML(XmlUtils::CXmlNode& node)
{
Color.GetColorFrom(node);

View File

@ -42,7 +42,8 @@ namespace PPTX
class BuClrTx : public WrapperWritingElement
{
public:
PPTX_LOGIC_BASE(BuClrTx)
WritingElement_AdditionConstructors(BuClrTx)
PPTX_LOGIC_BASE2(BuClrTx)
BuClrTx& operator=(const BuClrTx& oSrc)
{
@ -51,8 +52,29 @@ namespace PPTX
return *this;
}
virtual OOX::EElementType getType () const
{
return OOX::et_a_buClrTx;
}
virtual void fromXML(XmlUtils::CXmlLiteReader& oReader)
{
ReadAttributes( oReader );
public:
if ( oReader.IsEmptyNode() )
return;
int nCurDepth = oReader.GetDepth();
while( oReader.ReadNextSiblingNode( nCurDepth ) )
{
std::wstring sName = oReader.GetName();
}
}
void ReadAttributes(XmlUtils::CXmlLiteReader& oReader)
{
WritingElement_ReadAttributes_Start ( oReader )
WritingElement_ReadAttributes_End ( oReader )
}
virtual void fromXML(XmlUtils::CXmlNode& node)
{
}

View File

@ -42,7 +42,8 @@ namespace PPTX
class BuFontTx : public WrapperWritingElement
{
public:
PPTX_LOGIC_BASE(BuFontTx)
WritingElement_AdditionConstructors(BuFontTx)
PPTX_LOGIC_BASE2(BuFontTx)
BuFontTx& operator=(const BuFontTx& oSrc)
{
@ -50,8 +51,31 @@ namespace PPTX
parentElement = oSrc.parentElement;
return *this;
}
virtual void fromXML(XmlUtils::CXmlLiteReader& oReader)
{
ReadAttributes( oReader );
if ( oReader.IsEmptyNode() )
return;
int nCurDepth = oReader.GetDepth();
while( oReader.ReadNextSiblingNode( nCurDepth ) )
{
std::wstring sName = oReader.GetName();
}
}
virtual OOX::EElementType getType () const
{
return OOX::et_a_buFontTx;
}
void ReadAttributes(XmlUtils::CXmlLiteReader& oReader)
{
WritingElement_ReadAttributes_Start ( oReader )
WritingElement_ReadAttributes_End ( oReader )
}
public:
virtual void fromXML(XmlUtils::CXmlNode& node)
{
}

View File

@ -42,7 +42,8 @@ namespace PPTX
class BuNone : public WrapperWritingElement
{
public:
PPTX_LOGIC_BASE(BuNone)
WritingElement_AdditionConstructors(BuNone)
PPTX_LOGIC_BASE2(BuNone)
BuNone& operator=(const BuNone& oSrc)
{
@ -51,8 +52,13 @@ namespace PPTX
return *this;
}
public:
virtual OOX::EElementType getType() const
{
return OOX::et_a_buNone;
}
virtual void fromXML(XmlUtils::CXmlLiteReader& oReader)
{
}
virtual void fromXML(XmlUtils::CXmlNode& node)
{
}

View File

@ -42,7 +42,8 @@ namespace PPTX
class BuSzPct : public WrapperWritingElement
{
public:
PPTX_LOGIC_BASE(BuSzPct)
WritingElement_AdditionConstructors(BuSzPct)
PPTX_LOGIC_BASE2(BuSzPct)
BuSzPct& operator=(const BuSzPct& oSrc)
{
@ -52,8 +53,22 @@ namespace PPTX
val = oSrc.val;
return *this;
}
public:
virtual OOX::EElementType getType() const
{
return OOX::et_a_buSzPct;
}
virtual void fromXML(XmlUtils::CXmlLiteReader& oReader)
{
ReadAttributes( oReader );
}
void ReadAttributes(XmlUtils::CXmlLiteReader& oReader)
{
WritingElement_ReadAttributes_Start( oReader )
WritingElement_ReadAttributes_ReadSingle ( oReader, _T("val"), val)
WritingElement_ReadAttributes_End( oReader )
Normalize();
}
virtual void fromXML(XmlUtils::CXmlNode& node)
{
val = node.ReadAttributeInt(_T("val"));
@ -79,19 +94,24 @@ namespace PPTX
pWriter->StartRecord(BULLET_TYPE_SIZE_PCT);
pWriter->WriteBYTE(NSBinPptxRW::g_nodeAttributeStart);
pWriter->WriteInt1(0, val);
pWriter->WriteInt1(0, val.get_value_or(0));
pWriter->WriteBYTE(NSBinPptxRW::g_nodeAttributeEnd);
pWriter->EndRecord();
}
public:
int val;
nullable_int val;
protected:
virtual void FillParentPointersForChilds(){};
AVSINLINE void Normalize()
{
normalize_value(val, 25000, 400000);
if (val.IsInit())
{
int tmp = *val;
normalize_value(tmp, 25000, 400000);
val = tmp;
}
}
};
} // namespace Logic

View File

@ -42,7 +42,8 @@ namespace PPTX
class BuSzPts : public WrapperWritingElement
{
public:
PPTX_LOGIC_BASE(BuSzPts)
WritingElement_AdditionConstructors(BuSzPts)
PPTX_LOGIC_BASE2(BuSzPts)
BuSzPts& operator=(const BuSzPts& oSrc)
{
@ -52,8 +53,20 @@ namespace PPTX
val = oSrc.val;
return *this;
}
public:
virtual OOX::EElementType getType() const
{
return OOX::et_a_buSzPts;
}
virtual void fromXML(XmlUtils::CXmlLiteReader& oReader)
{
ReadAttributes( oReader );
}
void ReadAttributes(XmlUtils::CXmlLiteReader& oReader)
{
WritingElement_ReadAttributes_Start( oReader )
WritingElement_ReadAttributes_ReadSingle ( oReader, _T("val"), val)
WritingElement_ReadAttributes_End( oReader )
}
virtual void fromXML(XmlUtils::CXmlNode& node)
{
val = node.ReadAttributeInt(_T("val"));
@ -79,18 +92,23 @@ namespace PPTX
pWriter->StartRecord(BULLET_TYPE_SIZE_PTS);
pWriter->WriteBYTE(NSBinPptxRW::g_nodeAttributeStart);
pWriter->WriteInt1(0, val);
pWriter->WriteInt1(0, val.get_value_or(0));
pWriter->WriteBYTE(NSBinPptxRW::g_nodeAttributeEnd);
pWriter->EndRecord();
}
public:
int val;
nullable_int val;
protected:
virtual void FillParentPointersForChilds(){};
AVSINLINE void Normalize()
{
normalize_value(val, 100, 400000);
if (val.IsInit())
{
int tmp = *val;
normalize_value(tmp, 100, 400000);
val = tmp;
}
}
};
} // namespace Logic

View File

@ -42,7 +42,8 @@ namespace PPTX
class BuSzTx : public WrapperWritingElement
{
public:
PPTX_LOGIC_BASE(BuSzTx)
WritingElement_AdditionConstructors(BuSzTx)
PPTX_LOGIC_BASE2(BuSzTx)
BuSzTx& operator=(const BuSzTx& oSrc)
{
@ -51,8 +52,13 @@ namespace PPTX
return *this;
}
public:
virtual OOX::EElementType getType() const
{
return OOX::et_a_buSzTx;
}
virtual void fromXML(XmlUtils::CXmlLiteReader& oReader)
{
}
virtual void fromXML(XmlUtils::CXmlNode& node)
{
}

View File

@ -46,7 +46,8 @@ namespace PPTX
class Bullet : public WrapperWritingElement
{
public:
PPTX_LOGIC_BASE(Bullet)
WritingElement_AdditionConstructors(Bullet)
PPTX_LOGIC_BASE2(Bullet)
Bullet& operator=(const Bullet& oSrc)
{
@ -57,8 +58,27 @@ namespace PPTX
return *this;
}
virtual OOX::EElementType getType () const
{
if (m_Bullet.IsInit())
return m_Bullet->getType();
return OOX::et_Unknown;
}
virtual void fromXML(XmlUtils::CXmlLiteReader& oReader)
{
std::wstring strName = XmlUtils::GetNameNoNS(oReader.GetName());
public:
if (strName == _T("buNone"))
m_Bullet.reset(new Logic::BuNone(oReader));
else if (strName == _T("buChar"))
m_Bullet.reset(new Logic::BuChar(oReader));
else if (strName == _T("buAutoNum"))
m_Bullet.reset(new Logic::BuAutoNum(oReader));
else if (strName == _T("buBlip"))
m_Bullet.reset(new Logic::BuBlip(oReader));
else
m_Bullet.reset();
}
virtual void fromXML(XmlUtils::CXmlNode& node)
{
std::wstring strName = XmlUtils::GetNameNoNS(node.GetName());
@ -71,7 +91,8 @@ namespace PPTX
m_Bullet.reset(new Logic::BuAutoNum(node));
else if (strName == _T("buBlip"))
m_Bullet.reset(new Logic::BuBlip(node));
else m_Bullet.reset();
else
m_Bullet.reset();
}
virtual void ReadBulletFrom(XmlUtils::CXmlNode& element)
@ -85,7 +106,8 @@ namespace PPTX
m_Bullet.reset(new Logic::BuAutoNum(oNode));
else if (element.GetNode(_T("a:buBlip"), oNode))
m_Bullet.reset(new Logic::BuBlip(oNode));
else m_Bullet.reset();
else
m_Bullet.reset();
}
virtual bool is_init()const{return (m_Bullet.IsInit());};

View File

@ -44,7 +44,8 @@ namespace PPTX
class BulletColor : public WrapperWritingElement
{
public:
PPTX_LOGIC_BASE(BulletColor)
WritingElement_AdditionConstructors(BulletColor)
PPTX_LOGIC_BASE2(BulletColor)
BulletColor& operator=(const BulletColor& oColor)
{
@ -55,8 +56,23 @@ namespace PPTX
return *this;
}
virtual OOX::EElementType getType() const
{
if (m_Color.IsInit())
return m_Color->getType();
return OOX::et_Unknown;
}
virtual void fromXML(XmlUtils::CXmlLiteReader& oReader)
{
std::wstring strName = oReader.GetName();
public:
if (strName == _T("a:buClrTx"))
m_Color.reset(new Logic::BuClrTx(oReader));
else if (strName == _T("a:buClr"))
m_Color.reset(new Logic::BuClr(oReader));
else
m_Color.reset();
}
virtual void fromXML(XmlUtils::CXmlNode& node)
{
std::wstring strName = node.GetName();
@ -65,7 +81,8 @@ namespace PPTX
m_Color.reset(new Logic::BuClrTx(node));
else if (strName == _T("a:buClr"))
m_Color.reset(new Logic::BuClr(node));
else m_Color.reset();
else
m_Color.reset();
}
void ReadBulletColorFrom(XmlUtils::CXmlNode& element)
@ -75,7 +92,8 @@ namespace PPTX
m_Color.reset(new Logic::BuClrTx(oNode));
else if (element.GetNode(_T("a:buClr"), oNode))
m_Color.reset(new Logic::BuClr(oNode));
else m_Color.reset();
else
m_Color.reset();
}
virtual void toPPTY(NSBinPptxRW::CBinaryFileWriter* pWriter) const
{

View File

@ -45,7 +45,8 @@ namespace PPTX
class BulletSize : public WrapperWritingElement
{
public:
PPTX_LOGIC_BASE(BulletSize)
WritingElement_AdditionConstructors(BulletSize)
PPTX_LOGIC_BASE2(BulletSize)
BulletSize& operator=(const BulletSize& oSrc)
{
@ -56,8 +57,26 @@ namespace PPTX
return *this;
}
virtual OOX::EElementType getType () const
{
if (m_Size.IsInit())
return m_Size->getType();
return OOX::et_Unknown;
}
virtual void fromXML(XmlUtils::CXmlLiteReader& oReader)
{
std::wstring strName = oReader.GetName();
if (strName == _T("a:buSzTx"))
m_Size.reset(new Logic::BuSzTx(oReader));
else if (strName == _T("a:buSzPct"))
m_Size.reset(new Logic::BuSzPct(oReader));
else if (strName == _T("a:buSzPts"))
m_Size.reset(new Logic::BuSzPts(oReader));
else
m_Size.reset();
}
public:
virtual void fromXML(XmlUtils::CXmlNode& node)
{
std::wstring strName = node.GetName();
@ -68,7 +87,8 @@ namespace PPTX
m_Size.reset(new Logic::BuSzPct(node));
else if (strName == _T("a:buSzPts"))
m_Size.reset(new Logic::BuSzPts(node));
else m_Size.reset();
else
m_Size.reset();
}
virtual void ReadBulletSizeFrom(XmlUtils::CXmlNode& element)
@ -80,7 +100,8 @@ namespace PPTX
m_Size.reset(new Logic::BuSzPct(oNode));
else if(element.GetNode(_T("a:buSzPts"), oNode))
m_Size.reset(new Logic::BuSzPts(oNode));
else m_Size.reset();
else
m_Size.reset();
}
virtual bool is_init()const{return (m_Size.IsInit());};
virtual bool has_spec_size()const{return ((is_init()) && (!is<BuSzTx>()));};

View File

@ -44,7 +44,8 @@ namespace PPTX
class BulletTypeface : public WrapperWritingElement
{
public:
PPTX_LOGIC_BASE(BulletTypeface)
WritingElement_AdditionConstructors(BulletTypeface)
PPTX_LOGIC_BASE2(BulletTypeface)
BulletTypeface& operator=(const BulletTypeface& oSrc)
{
@ -55,8 +56,22 @@ namespace PPTX
return *this;
}
public:
virtual OOX::EElementType getType () const
{
if (m_Typeface.IsInit())
return m_Typeface->getType();
return OOX::et_Unknown;
}
virtual void fromXML(XmlUtils::CXmlLiteReader& oReader)
{
std::wstring strName = oReader.GetName();
if (strName == _T("a:buFontTx"))
m_Typeface.reset(new Logic::BuFontTx(oReader));
else if (strName == _T("a:buFont"))
m_Typeface.reset(new Logic::TextFont(oReader));
else
m_Typeface.reset();
}
virtual void fromXML(XmlUtils::CXmlNode& node)
{
std::wstring strName = node.GetName();
@ -65,7 +80,8 @@ namespace PPTX
m_Typeface.reset(new Logic::BuFontTx(node));
else if (strName == _T("a:buFont"))
m_Typeface.reset(new Logic::TextFont(node));
else m_Typeface.reset();
else
m_Typeface.reset();
}
virtual void ReadBulletTypefaceFrom(XmlUtils::CXmlNode& element)

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");
@ -66,40 +105,39 @@ namespace PPTX
Normalize();
}
virtual std::wstring toXML() const
std::wstring toXML2(std::wstring node_name) const
{
XmlUtils::CAttribute oAttr;
oAttr.Write(_T("id"), id);
oAttr.Write(_T("name"), name);
oAttr.Write(_T("descr"), descr);
oAttr.Write(_T("hidden"), hidden);
oAttr.Write(_T("title"), title);
oAttr.Write(_T("id"), id);
oAttr.Write(_T("name"), XmlUtils::EncodeXmlString(name));
if (descr.IsInit()) oAttr.Write(_T("descr"), XmlUtils::EncodeXmlString(descr.get()));
oAttr.Write(_T("hidden"), hidden);
if (title.IsInit()) oAttr.Write(_T("title"), XmlUtils::EncodeXmlString(title.get()));
XmlUtils::CNodeValue oValue;
oValue.WriteNullable(hlinkClick);
oValue.WriteNullable(hlinkHover);
return XmlUtils::CreateNode(_T("p:cNvPr"), oAttr, oValue);
return XmlUtils::CreateNode(node_name.empty() ? (m_namespace + L":cNvPr") : node_name, oAttr, oValue);
}
virtual std::wstring toXML() const
{
return toXML2(L"");
}
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);
}
void toXmlWriter2(const std::wstring& strNS, NSBinPptxRW::CXmlWriter* pWriter) const
{
//if (pWriter->m_lDocType == XMLWRITER_DOC_TYPE_DOCX && id == -1)
// return;
pWriter->StartNode(strNS + _T(":cNvPr"));
int _id = id;
@ -117,11 +155,11 @@ namespace PPTX
}
pWriter->StartAttributes();
pWriter->WriteAttribute (_T("id"), _id);
pWriter->WriteAttribute2(_T("name"), name);
pWriter->WriteAttribute2(_T("descr"), descr);
pWriter->WriteAttribute (_T("hidden"), hidden);
pWriter->WriteAttribute (_T("title"), title);
pWriter->WriteAttribute (_T("id"), _id);
pWriter->WriteAttribute (_T("name"), XmlUtils::EncodeXmlString(name));
if (descr.IsInit()) pWriter->WriteAttribute (_T("descr"), XmlUtils::EncodeXmlString(descr.get()));
pWriter->WriteAttribute (_T("hidden"), hidden);
if (title.IsInit()) pWriter->WriteAttribute (_T("title"), XmlUtils::EncodeXmlString(title.get()));
pWriter->EndAttributes();
@ -196,7 +234,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,15 @@ namespace PPTX
class CSld : public WrapperWritingElement
{
public:
PPTX_LOGIC_BASE(CSld)
WritingElement_AdditionConstructors(CSld)
CSld() : spTree(L"p")
{
}
public:
virtual void fromXML(XmlUtils::CXmlLiteReader& oReader)
{
}
virtual void fromXML(XmlUtils::CXmlNode& node)
{
node.ReadAttributeBase(L"name", attrName);
@ -146,7 +152,6 @@ namespace PPTX
}
case 1:
{
spTree.m_name = _T("p:spTree");
spTree.fromPPTY(pReader);
break;
}
@ -161,7 +166,6 @@ namespace PPTX
pReader->Seek(_end_rec);
}
public:
nullable_string attrName;
nullable<Bg> bg;

View File

@ -45,9 +45,41 @@ namespace PPTX
class Camera : public WrapperWritingElement
{
public:
PPTX_LOGIC_BASE(Camera)
WritingElement_AdditionConstructors(Camera)
PPTX_LOGIC_BASE2(Camera)
public:
virtual OOX::EElementType getType() const
{
return OOX::et_a_camera;
}
void fromXML(XmlUtils::CXmlLiteReader& oReader)
{
ReadAttributes( oReader );
if ( oReader.IsEmptyNode() )
return;
int nCurDepth = oReader.GetDepth();
while( oReader.ReadNextSiblingNode( nCurDepth ) )
{
std::wstring strName = oReader.GetName();
if (strName == L"a:rot")
{
rot = oReader;
break;
}
}
FillParentPointersForChilds();
}
void ReadAttributes(XmlUtils::CXmlLiteReader& 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)
WritingElement_ReadAttributes_End( oReader )
}
virtual void fromXML(XmlUtils::CXmlNode& node)
{
prst = node.GetAttribute(_T("prst"));

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

@ -42,8 +42,40 @@ namespace PPTX
class ColorModifier : public WrapperWritingElement
{
public:
PPTX_LOGIC_BASE(ColorModifier)
public:
WritingElement_AdditionConstructors(ColorModifier)
PPTX_LOGIC_BASE2(ColorModifier)
virtual OOX::EElementType getType() const
{
return OOX::et_a_prstClr;
}
void fromXML(XmlUtils::CXmlLiteReader& oReader)
{
name = oReader.GetName();
ReadAttributes( oReader );
if (XmlUtils::GetNameNoNS(name) == _T("alpha"))
{
ReadAttributes2( oReader );
}
}
void ReadAttributes2(XmlUtils::CXmlLiteReader& oReader)
{
nullable_string sTmp;
WritingElement_ReadAttributes_Start_No_NS( oReader )
WritingElement_ReadAttributes_ReadSingle ( oReader, _T("val"), sTmp)
WritingElement_ReadAttributes_End( oReader )
if (val.is_init() && sTmp.is_init() && sTmp->find(wchar_t('%')) != -1)
*val = (*val) * 1000;
}
void ReadAttributes(XmlUtils::CXmlLiteReader& oReader)
{
WritingElement_ReadAttributes_Start_No_NS( oReader )
WritingElement_ReadAttributes_ReadSingle ( oReader, _T("val"), val)
WritingElement_ReadAttributes_End( oReader )
}
virtual void fromXML(XmlUtils::CXmlNode& node)
{
name = node.GetName();

View File

@ -43,9 +43,36 @@ namespace PPTX
class PrstClr : public ColorBase
{
public:
PPTX_LOGIC_BASE(PrstClr)
WritingElement_AdditionConstructors(PrstClr)
PPTX_LOGIC_BASE2(PrstClr)
public:
virtual OOX::EElementType getType() const
{
return OOX::et_a_prstClr;
}
void fromXML(XmlUtils::CXmlLiteReader& oReader)
{
ReadAttributes( oReader );
if ( oReader.IsEmptyNode() )
return;
int nCurDepth = oReader.GetDepth();
while( oReader.ReadNextSiblingNode( nCurDepth ) )
{
std::wstring strName = oReader.GetName();
ColorModifier m;
Modifiers.push_back(m);
Modifiers.back().fromXML(oReader);
}
}
void ReadAttributes(XmlUtils::CXmlLiteReader& oReader)
{
WritingElement_ReadAttributes_Start_No_NS( oReader )
WritingElement_ReadAttributes_ReadSingle ( oReader, _T("val"), val)
WritingElement_ReadAttributes_End( oReader )
}
virtual void fromXML(XmlUtils::CXmlNode& node)
{
val = node.GetAttribute(_T("val"));

View File

@ -49,6 +49,23 @@ namespace PPTX
Modifiers.clear();
node.LoadArray(_T("*"), Modifiers);
}
void SchemeClr::fromXML(XmlUtils::CXmlLiteReader& oReader)
{
ReadAttributes( oReader );
if ( oReader.IsEmptyNode() )
return;
int nCurDepth = oReader.GetDepth();
while( oReader.ReadNextSiblingNode( nCurDepth ) )
{
std::wstring strName = oReader.GetName();
ColorModifier m;
Modifiers.push_back(m);
Modifiers.back().fromXML(oReader);
}
}
std::wstring SchemeClr::toXML() const
{

View File

@ -44,12 +44,24 @@ namespace PPTX
class SchemeClr : public ColorBase
{
public:
PPTX_LOGIC_BASE(SchemeClr)
WritingElement_AdditionConstructors(SchemeClr)
PPTX_LOGIC_BASE2(SchemeClr)
public:
virtual void fromXML(XmlUtils::CXmlLiteReader& oReader);
virtual void fromXML(XmlUtils::CXmlNode& node);
virtual std::wstring toXML() const;
virtual OOX::EElementType getType() const
{
return OOX::et_a_schemeClr;
}
void ReadAttributes(XmlUtils::CXmlLiteReader& oReader)
{
WritingElement_ReadAttributes_Start_No_NS( oReader )
WritingElement_ReadAttributes_Read_if ( oReader, _T("val"), val)
WritingElement_ReadAttributes_End( oReader )
}
virtual void toXmlWriter(NSBinPptxRW::CXmlWriter* pWriter) const
{
std::wstring sNodeNamespace;

View File

@ -43,9 +43,47 @@ namespace PPTX
class SrgbClr : public ColorBase
{
public:
PPTX_LOGIC_BASE(SrgbClr)
WritingElement_AdditionConstructors(SrgbClr)
PPTX_LOGIC_BASE2(SrgbClr)
public:
virtual OOX::EElementType getType() const
{
return OOX::et_a_srgbClr;
}
void ReadAttributes(XmlUtils::CXmlLiteReader& oReader)
{
std::wstring val;
WritingElement_ReadAttributes_Start_No_NS( oReader )
WritingElement_ReadAttributes_Read_if ( oReader, _T("val"), val)
WritingElement_ReadAttributes_End( oReader )
if (6 == val.length())
{
red = HexString2Int(val.substr(0, 2));
green = HexString2Int(val.substr(2, 2));
blue = HexString2Int(val.substr(4, 2));
}
}
void fromXML(XmlUtils::CXmlLiteReader& oReader)
{
ReadAttributes( oReader );
if ( oReader.IsEmptyNode() )
return;
int nCurDepth = oReader.GetDepth();
while( oReader.ReadNextSiblingNode( nCurDepth ) )
{
std::wstring strName = oReader.GetName();
ColorModifier m;
Modifiers.push_back(m);
Modifiers.back().fromXML(oReader);
}
}
virtual void fromXML(XmlUtils::CXmlNode& node)
{
std::wstring val = node.GetAttribute(_T("val"));

View File

@ -44,7 +44,8 @@ namespace PPTX
class SysClr : public ColorBase
{
public:
PPTX_LOGIC_BASE(SysClr)
WritingElement_AdditionConstructors(SysClr)
PPTX_LOGIC_BASE2(SysClr)
virtual DWORD GetRGBA(DWORD RGBA) const
{
@ -146,7 +147,33 @@ namespace PPTX
Modifiers.clear();
node.LoadArray(_T("*"), Modifiers);
}
virtual OOX::EElementType getType() const
{
return OOX::et_a_sysClr;
}
void fromXML(XmlUtils::CXmlLiteReader& oReader)
{
ReadAttributes( oReader );
if ( oReader.IsEmptyNode() )
return;
int nCurDepth = oReader.GetDepth();
while( oReader.ReadNextSiblingNode( nCurDepth ) )
{
std::wstring strName = oReader.GetName();
ColorModifier m;
Modifiers.push_back(m);
Modifiers.back().fromXML(oReader);
}
}
void ReadAttributes(XmlUtils::CXmlLiteReader& oReader)
{
WritingElement_ReadAttributes_Start_No_NS( oReader )
WritingElement_ReadAttributes_Read_if ( oReader, _T("val"), val)
WritingElement_ReadAttributes_End( oReader )
}
virtual std::wstring toXML() const
{

View File

@ -47,7 +47,8 @@ namespace PPTX
class CustGeom : public WrapperWritingElement
{
public:
PPTX_LOGIC_BASE(CustGeom)
WritingElement_AdditionConstructors(CustGeom)
PPTX_LOGIC_BASE2(CustGeom)
CustGeom& operator=(const CustGeom& oSrc)
{
@ -65,7 +66,107 @@ namespace PPTX
return *this;
}
public:
virtual OOX::EElementType getType() const
{
return OOX::et_a_custGeom;
}
virtual void fromXML(XmlUtils::CXmlLiteReader& oReader)
{
if ( oReader.IsEmptyNode() )
return;
int nParentDepth = oReader.GetDepth();
while( oReader.ReadNextSiblingNode( nParentDepth ) )
{
std::wstring sName = oReader.GetName();
if (sName == L"a:avLst")
{
int nParentDepth1 = oReader.GetDepth();
while( oReader.ReadNextSiblingNode( nParentDepth1 ) )
{
std::wstring sName1 = oReader.GetName();
if (sName1 == L"a:gd")
{
Gd gd;
avLst.push_back(gd);
avLst.back().fromXML(oReader);
}
}
}
else if (sName == L"a:gdLst")
{
int nParentDepth1 = oReader.GetDepth();
while( oReader.ReadNextSiblingNode( nParentDepth1 ) )
{
std::wstring sName1 = oReader.GetName();
if (sName1 == L"a:gd")
{
Gd gd;
gdLst.push_back(gd);
gdLst.back().fromXML(oReader);
}
}
}
else if (sName == L"a:rect")
rect = oReader;
else if (sName == L"a:pathLst")
{
int nParentDepth1 = oReader.GetDepth();
while( oReader.ReadNextSiblingNode( nParentDepth1 ) )
{
std::wstring sName1 = oReader.GetName();
if (sName1 == L"a:path")
{
Path2D gd;
pathLst.push_back(gd);
pathLst.back().fromXML(oReader);
}
}
}
else if (sName == L"a:ahLst")
{
int nParentDepth1 = oReader.GetDepth();
while( oReader.ReadNextSiblingNode( nParentDepth1 ) )
{
std::wstring sName1 = oReader.GetName();
if (sName1 == L"a:ahPolar")
{
AhBase gd;
ahLst.push_back(gd);
ahLst.back().fromXML(oReader);
}
else if (sName1 == L"a:ahXY")
{
AhBase gd;
ahLst.push_back(gd);
ahLst.back().fromXML(oReader);
}
}
}
else if (sName == L"a:cxnLst")
{
int nParentDepth1 = oReader.GetDepth();
while( oReader.ReadNextSiblingNode( nParentDepth1 ) )
{
std::wstring sName1 = oReader.GetName();
if (sName1 == L"a:cxn")
{
Cxn gd;
cxnLst.push_back(gd);
cxnLst.back().fromXML(oReader);
}
}
}
}
FillParentPointersForChilds();
}
virtual void fromXML(XmlUtils::CXmlNode& node)
{
XmlUtils::CXmlNode oNode;

View File

@ -43,7 +43,8 @@ namespace PPTX
class Cxn : public WrapperWritingElement
{
public:
PPTX_LOGIC_BASE(Cxn)
WritingElement_AdditionConstructors(Cxn)
PPTX_LOGIC_BASE2(Cxn)
Cxn& operator=(const Cxn& oSrc)
{
@ -55,8 +56,41 @@ namespace PPTX
ang = oSrc.ang;
return *this;
}
virtual OOX::EElementType getType() const
{
return OOX::et_a_cxn;
}
virtual void fromXML(XmlUtils::CXmlLiteReader& oReader)
{
ReadAttributes( oReader );
public:
if ( oReader.IsEmptyNode() )
return;
int nParentDepth = oReader.GetDepth();
while( oReader.ReadNextSiblingNode( nParentDepth ) )
{
std::wstring sName = oReader.GetName();
if (sName == L"a:pos")
{
ReadAttributes2(oReader);
}
}
}
void ReadAttributes(XmlUtils::CXmlLiteReader& oReader)
{
WritingElement_ReadAttributes_Start( oReader )
WritingElement_ReadAttributes_ReadSingle( oReader, _T("ang"), ang )
WritingElement_ReadAttributes_End( oReader )
}
void ReadAttributes2(XmlUtils::CXmlLiteReader& oReader)
{
WritingElement_ReadAttributes_Start( oReader )
WritingElement_ReadAttributes_Read_if ( oReader, _T("x"), x )
WritingElement_ReadAttributes_Read_else_if ( oReader, _T("y"), y )
WritingElement_ReadAttributes_End( oReader )
}
virtual void fromXML(XmlUtils::CXmlNode& node)
{
ang = node.GetAttribute(_T("ang"));
@ -110,7 +144,7 @@ namespace PPTX
public:
std::wstring GetODString()const
{
return _T("<cxn ang=\"") + ang + _T("\"><pos x=\"") + x + _T("\" y=\"") + y + _T("\" /></cxn>");
return _T("<cxn ang=\"") + ang + _T("\"><pos x=\"") + x + _T("\" y=\"") + y + _T("\"/></cxn>");
}
};
} // namespace Logic

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

@ -46,7 +46,11 @@ namespace PPTX
class DefaultShapeDefinition : public WrapperWritingElement
{
public:
PPTX_LOGIC_BASE(DefaultShapeDefinition)
WritingElement_AdditionConstructors(DefaultShapeDefinition)
DefaultShapeDefinition()
{
}
DefaultShapeDefinition& operator=(const DefaultShapeDefinition& oSrc)
{
@ -61,11 +65,32 @@ namespace PPTX
return *this;
}
virtual void fromXML(XmlUtils::CXmlLiteReader& oReader)
{
m_name = XmlUtils::GetNameNoNS(oReader.GetName());
if ( oReader.IsEmptyNode() )
return;
int nCurDepth = oReader.GetDepth();
while( oReader.ReadNextSiblingNode( nCurDepth ) )
{
std::wstring strName = XmlUtils::GetNameNoNS(oReader.GetName());
if (_T("spPr") == strName)
spPr.fromXML(oReader);
else if (_T("bodyPr") == strName)
bodyPr = oReader;
else if (_T("lstStyle") == strName)
lstStyle.fromXML(oReader);
else if (_T("style") == strName)
style = oReader;
}
}
public:
virtual void fromXML(XmlUtils::CXmlNode& node)
{
m_name = XmlUtils::GetNameNoNS(node.GetName());
m_name = XmlUtils::GetNameNoNS(node.GetName());
XmlUtils::CXmlNodes oNodes;
if (node.GetNodes(_T("*"), oNodes))
@ -95,7 +120,7 @@ namespace PPTX
{
XmlUtils::CNodeValue oValue;
oValue.Write(spPr);
oValue.Write(bodyPr);
oValue.WriteNullable(bodyPr);
oValue.Write(lstStyle);
oValue.WriteNullable(style);
@ -105,7 +130,7 @@ namespace PPTX
virtual void toPPTY(NSBinPptxRW::CBinaryFileWriter* pWriter) const
{
pWriter->WriteRecord1(0, spPr);
pWriter->WriteRecord1(1, bodyPr);
pWriter->WriteRecord2(1, bodyPr);
pWriter->WriteRecord1(2, lstStyle);
pWriter->WriteRecord2(3, style);
}
@ -127,8 +152,8 @@ namespace PPTX
}
case 1:
{
bodyPr.m_namespace = _T("a");
bodyPr.fromPPTY(pReader);
bodyPr = BodyPr(L"a");
bodyPr->fromPPTY(pReader);
break;
}
case 2:
@ -139,8 +164,7 @@ namespace PPTX
}
case 3:
{
style = new ShapeStyle();
style->m_ns = _T("a");
style = new ShapeStyle(L"a");
style->fromPPTY(pReader);
break;
}
@ -160,7 +184,9 @@ namespace PPTX
pWriter->m_lFlag = 0x04;
spPr.toXmlWriter(pWriter);
pWriter->m_lFlag = 0;
bodyPr.toXmlWriter(pWriter);
if (bodyPr.IsInit())
bodyPr->toXmlWriter(pWriter);
lstStyle.toXmlWriter(pWriter);
pWriter->Write(style);
@ -169,16 +195,19 @@ namespace PPTX
public:
SpPr spPr;
BodyPr bodyPr;
nullable<BodyPr> bodyPr;
TextListStyle lstStyle;
nullable<ShapeStyle> style;
public:
std::wstring m_name;
std::wstring m_name;
protected:
virtual void FillParentPointersForChilds()
{
spPr.SetParentPointer(this);
bodyPr.SetParentPointer(this);
if (bodyPr.IsInit())
bodyPr->SetParentPointer(this);
lstStyle.SetParentPointer(this);
if(style.IsInit())
style->SetParentPointer(this);

View File

@ -35,7 +35,24 @@ namespace PPTX
{
namespace Logic
{
void EffectDag::fromXML(XmlUtils::CXmlLiteReader& oReader)
{
Effects.clear();
ReadAttributes( oReader );
if ( oReader.IsEmptyNode() )
return;
int nCurDepth = oReader.GetDepth();
while( oReader.ReadNextSiblingNode( nCurDepth ) )
{
std::wstring sName = oReader.GetName();
UniEffect uni;
Effects.push_back(uni);
Effects.back().fromXML(oReader);
}
}
void EffectDag::fromXML(XmlUtils::CXmlNode& node)
{
m_name = node.GetName();

View File

@ -44,10 +44,10 @@ namespace PPTX
class EffectDag : public WrapperWritingElement
{
public:
public:
WritingElement_AdditionConstructors(EffectDag)
PPTX_LOGIC_BASE2(EffectDag)
PPTX_LOGIC_BASE(EffectDag)
EffectDag& operator=(const EffectDag& oSrc)
{
parentFile = oSrc.parentFile;
@ -59,11 +59,22 @@ namespace PPTX
m_name = oSrc.m_name;
return *this;
}
virtual OOX::EElementType getType () const
{
return OOX::et_a_effectDag;
}
virtual void fromXML(XmlUtils::CXmlLiteReader& oReader);
void ReadAttributes(XmlUtils::CXmlLiteReader& 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 )
}
public:
virtual void fromXML(XmlUtils::CXmlNode& node);
virtual std::wstring toXML() const;
virtual void toPPTY(NSBinPptxRW::CBinaryFileWriter* pWriter) const
@ -93,7 +104,7 @@ namespace PPTX
std::vector<UniEffect> Effects;
nullable_string name;
nullable_limit<Limit::EffectContainerType> type;
std::wstring m_name;
std::wstring m_name;
protected:
virtual void FillParentPointersForChilds();
};

View File

@ -35,8 +35,6 @@ namespace PPTX
{
namespace Logic
{
void EffectLst::fromXML(XmlUtils::CXmlNode& node)
{
blur = node.ReadNode(_T("a:blur"));
@ -50,7 +48,37 @@ namespace PPTX
FillParentPointersForChilds();
}
void EffectLst::fromXML(XmlUtils::CXmlLiteReader& oReader)
{
ReadAttributes( oReader );
if ( oReader.IsEmptyNode() )
return;
int nCurDepth = oReader.GetDepth();
while( oReader.ReadNextSiblingNode( nCurDepth ) )
{
std::wstring strName = oReader.GetName();
if (strName == L"a:blur")
blur = oReader;
if (strName == L"a:fillOverlay")
fillOverlay = oReader;
if (strName == L"a:glow")
glow = oReader;
if (strName == L"a:innerShdw")
innerShdw = oReader;
if (strName == L"a:outerShdw")
outerShdw = oReader;
if (strName == L"a:prstShdw")
prstShdw = oReader;
if (strName == L"a:reflection")
reflection = oReader;
if (strName == L"a:softEdge")
softEdge = oReader;
}
}
std::wstring EffectLst::toXML() const
{
std::wstring str = _T("<a:effectLst>");

View File

@ -47,17 +47,25 @@ namespace PPTX
{
namespace Logic
{
class EffectLst : public WrapperWritingElement
{
public:
PPTX_LOGIC_BASE(EffectLst)
public:
WritingElement_AdditionConstructors(EffectLst)
PPTX_LOGIC_BASE2(EffectLst)
EffectLst& operator=(const EffectLst& oSrc);
public:
virtual void fromXML(XmlUtils::CXmlNode& node);
virtual OOX::EElementType getType () const
{
return OOX::et_a_effectLst;
}
virtual void fromXML(XmlUtils::CXmlLiteReader& oReader);
void ReadAttributes(XmlUtils::CXmlLiteReader& oReader)
{
}
virtual void fromXML(XmlUtils::CXmlNode& node);
virtual std::wstring toXML() const;
@ -78,14 +86,14 @@ namespace PPTX
}
public:
nullable<Blur> blur;
nullable<FillOverlay> fillOverlay;
nullable<Glow> glow;
nullable<InnerShdw> innerShdw;
nullable<OuterShdw> outerShdw;
nullable<PrstShdw> prstShdw;
nullable<Reflection> reflection;
nullable<SoftEdge> softEdge;
nullable<Blur> blur;
nullable<FillOverlay> fillOverlay;
nullable<Glow> glow;
nullable<InnerShdw> innerShdw;
nullable<OuterShdw> outerShdw;
nullable<PrstShdw> prstShdw;
nullable<Reflection> reflection;
nullable<SoftEdge> softEdge;
protected:
virtual void FillParentPointersForChilds();

View File

@ -44,7 +44,8 @@ namespace PPTX
class EffectProperties : public WrapperWritingElement
{
public:
PPTX_LOGIC_BASE(EffectProperties)
WritingElement_AdditionConstructors(EffectProperties)
PPTX_LOGIC_BASE2(EffectProperties)
EffectProperties& operator=(const EffectProperties& oSrc)
{
@ -54,7 +55,23 @@ namespace PPTX
return *this;
}
public:
virtual OOX::EElementType getType () const
{
if (List.IsInit())
return List->getType();
return OOX::et_Unknown;
}
virtual void fromXML(XmlUtils::CXmlLiteReader& oReader)
{
std::wstring strName = XmlUtils::GetNameNoNS(oReader.GetName());
if (strName == _T("effectLst"))
List.reset(new Logic::EffectLst(oReader));
else if(strName == _T("effectDag"))
List.reset(new Logic::EffectDag(oReader));
else
List.reset();
}
virtual bool is_init() const {return (List.IsInit());};

View File

@ -44,7 +44,24 @@ namespace PPTX
FillParentPointersForChilds();
}
void EffectStyle::fromXML(XmlUtils::CXmlLiteReader& oReader)
{
if ( oReader.IsEmptyNode() )
return;
int nCurDepth = oReader.GetDepth();
while( oReader.ReadNextSiblingNode( nCurDepth ) )
{
std::wstring strName = oReader.GetName();
if (strName == L"a:scene3d")
scene3d = oReader;
else if (strName == L"a:sp3d")
sp3d = oReader;
else
EffectList.fromXML(oReader);
}
FillParentPointersForChilds();
}
std::wstring EffectStyle::toXML() const
{

View File

@ -46,7 +46,8 @@ namespace PPTX
class EffectStyle : public WrapperWritingElement
{
public:
PPTX_LOGIC_BASE(EffectStyle)
WritingElement_AdditionConstructors(EffectStyle)
PPTX_LOGIC_BASE2(EffectStyle)
EffectStyle& operator=(const EffectStyle& oSrc)
{
@ -58,8 +59,11 @@ namespace PPTX
sp3d = oSrc.sp3d;
return *this;
}
public:
virtual OOX::EElementType getType() const
{
return OOX::et_a_effectStyle;
}
virtual void fromXML(XmlUtils::CXmlLiteReader& oReader);
virtual void fromXML(XmlUtils::CXmlNode& node);
virtual std::wstring toXML() const;

View File

@ -43,7 +43,8 @@ namespace PPTX
class AlphaBiLevel : public WrapperWritingElement
{
public:
PPTX_LOGIC_BASE(AlphaBiLevel)
WritingElement_AdditionConstructors(AlphaBiLevel)
PPTX_LOGIC_BASE2(AlphaBiLevel)
AlphaBiLevel& operator=(const AlphaBiLevel& oSrc)
{
@ -54,7 +55,22 @@ namespace PPTX
return *this;
}
public:
virtual OOX::EElementType getType() const
{
return OOX::et_a_alphaBiLevel;
}
void fromXML(XmlUtils::CXmlLiteReader& oReader)
{
ReadAttributes( oReader );
}
void ReadAttributes(XmlUtils::CXmlLiteReader& oReader)
{
WritingElement_ReadAttributes_Start_No_NS( oReader )
WritingElement_ReadAttributes_ReadSingle ( oReader, _T("thresh"), thresh)
WritingElement_ReadAttributes_End( oReader )
Normalize();
}
virtual void fromXML(XmlUtils::CXmlNode& node)
{
node.ReadAttributeBase(L"thresh", thresh);

View File

@ -43,7 +43,8 @@ namespace PPTX
class AlphaCeiling : public WrapperWritingElement
{
public:
PPTX_LOGIC_BASE(AlphaCeiling)
WritingElement_AdditionConstructors(AlphaCeiling)
PPTX_LOGIC_BASE2(AlphaCeiling)
AlphaCeiling& operator=(const AlphaCeiling& oSrc)
{
@ -59,7 +60,13 @@ namespace PPTX
pWriter->EndRecord();
}
public:
virtual OOX::EElementType getType() const
{
return OOX::et_a_alphaCeiling;
}
void fromXML(XmlUtils::CXmlLiteReader& oReader)
{
}
virtual void fromXML(XmlUtils::CXmlNode& node)
{
}

View File

@ -43,7 +43,8 @@ namespace PPTX
class AlphaFloor : public WrapperWritingElement
{
public:
PPTX_LOGIC_BASE(AlphaFloor)
WritingElement_AdditionConstructors(AlphaFloor)
PPTX_LOGIC_BASE2(AlphaFloor)
AlphaFloor& operator=(const AlphaFloor& oSrc)
{
@ -52,12 +53,16 @@ namespace PPTX
return *this;
}
public:
virtual OOX::EElementType getType() const
{
return OOX::et_a_alphaFloor;
}
void fromXML(XmlUtils::CXmlLiteReader& oReader)
{
}
virtual void fromXML(XmlUtils::CXmlNode& node)
{
}
virtual std::wstring toXML() const
{
return _T("<a:alphaFloor/>");

View File

@ -44,7 +44,8 @@ namespace PPTX
class AlphaInv : public WrapperWritingElement
{
public:
PPTX_LOGIC_BASE(AlphaInv)
WritingElement_AdditionConstructors(AlphaInv)
PPTX_LOGIC_BASE2(AlphaInv)
AlphaInv& operator=(const AlphaInv& oSrc)
{
@ -55,7 +56,23 @@ namespace PPTX
return *this;
}
public:
virtual OOX::EElementType getType() const
{
return OOX::et_a_alphaInv;
}
void fromXML(XmlUtils::CXmlLiteReader& oReader)
{
if ( oReader.IsEmptyNode() )
return;
int nCurDepth = oReader.GetDepth();
while( oReader.ReadNextSiblingNode( nCurDepth ) )
{
std::wstring strName = oReader.GetName();
Color.fromXML(oReader);
}
}
virtual void fromXML(XmlUtils::CXmlNode& node)
{
Color.GetColorFrom(node);

View File

@ -44,7 +44,8 @@ namespace PPTX
class AlphaMod : public WrapperWritingElement
{
public:
PPTX_LOGIC_BASE(AlphaMod)
WritingElement_AdditionConstructors(AlphaMod)
PPTX_LOGIC_BASE2(AlphaMod)
AlphaMod& operator=(const AlphaMod& oSrc)
{
@ -54,8 +55,28 @@ namespace PPTX
cont = oSrc.cont;
return *this;
}
virtual OOX::EElementType getType() const
{
return OOX::et_a_alphaMod;
}
void fromXML(XmlUtils::CXmlLiteReader& oReader)
{
if ( oReader.IsEmptyNode() )
return;
int nCurDepth = oReader.GetDepth();
while( oReader.ReadNextSiblingNode( nCurDepth ) )
{
std::wstring strName = oReader.GetName();
if (strName == L"a:cont")
{
cont = oReader;
break;
}
}
FillParentPointersForChilds();
}
public:
virtual void fromXML(XmlUtils::CXmlNode& node)
{
cont = node.ReadNode(_T("a:cont"));

View File

@ -43,8 +43,8 @@ namespace PPTX
class AlphaModFix : public WrapperWritingElement
{
public:
PPTX_LOGIC_BASE(AlphaModFix)
WritingElement_AdditionConstructors(AlphaModFix)
PPTX_LOGIC_BASE2(AlphaModFix)
AlphaModFix& operator=(const AlphaModFix& oSrc)
{
@ -53,9 +53,23 @@ namespace PPTX
amt = oSrc.amt;
return *this;
}
virtual OOX::EElementType getType() const
{
return OOX::et_a_alphaModFix;
}
void fromXML(XmlUtils::CXmlLiteReader& oReader)
{
ReadAttributes( oReader );
}
void ReadAttributes(XmlUtils::CXmlLiteReader& oReader)
{
WritingElement_ReadAttributes_Start_No_NS( oReader )
WritingElement_ReadAttributes_Read_if ( oReader, _T("amt"), amt)
WritingElement_ReadAttributes_End( oReader )
Normalize();
}
public:
virtual void fromXML(XmlUtils::CXmlNode& node)
{
node.ReadAttributeBase(L"amt", amt);

View File

@ -44,7 +44,8 @@ namespace PPTX
{
public:
PPTX_LOGIC_BASE(AlphaOutset)
WritingElement_AdditionConstructors(AlphaOutset)
PPTX_LOGIC_BASE2(AlphaOutset)
AlphaOutset& operator=(const AlphaOutset& oSrc)
{
@ -54,8 +55,20 @@ namespace PPTX
rad = oSrc.rad;
return *this;
}
public:
virtual OOX::EElementType getType() const
{
return OOX::et_a_alphaOutset;
}
void fromXML(XmlUtils::CXmlLiteReader& oReader)
{
ReadAttributes( oReader );
}
void ReadAttributes(XmlUtils::CXmlLiteReader& oReader)
{
WritingElement_ReadAttributes_Start_No_NS( oReader )
WritingElement_ReadAttributes_Read_if ( oReader, _T("rad"), rad)
WritingElement_ReadAttributes_End( oReader )
}
virtual void fromXML(XmlUtils::CXmlNode& node)
{
node.ReadAttributeBase(L"rad", rad);

View File

@ -43,7 +43,8 @@ namespace PPTX
class AlphaRepl : public WrapperWritingElement
{
public:
PPTX_LOGIC_BASE(AlphaRepl)
WritingElement_AdditionConstructors(AlphaRepl)
PPTX_LOGIC_BASE2(AlphaRepl)
AlphaRepl& operator=(const AlphaRepl& oSrc)
{
@ -53,8 +54,22 @@ namespace PPTX
a = oSrc.a;
return *this;
}
public:
virtual OOX::EElementType getType() const
{
return OOX::et_a_alphaRepl;
}
void fromXML(XmlUtils::CXmlLiteReader& oReader)
{
ReadAttributes( oReader );
}
void ReadAttributes(XmlUtils::CXmlLiteReader& oReader)
{
WritingElement_ReadAttributes_Start_No_NS( oReader )
WritingElement_ReadAttributes_Read_if ( oReader, _T("a"), a)
WritingElement_ReadAttributes_End( oReader )
Normalize();
}
virtual void fromXML(XmlUtils::CXmlNode& node)
{
node.ReadAttributeBase(L"a", a);

View File

@ -44,7 +44,8 @@ namespace PPTX
{
public:
PPTX_LOGIC_BASE(BiLevel)
WritingElement_AdditionConstructors(BiLevel)
PPTX_LOGIC_BASE2(BiLevel)
BiLevel& operator=(const BiLevel& oSrc)
{
@ -54,8 +55,22 @@ namespace PPTX
thresh = oSrc.thresh;
return *this;
}
public:
virtual OOX::EElementType getType() const
{
return OOX::et_a_biLevel;
}
void fromXML(XmlUtils::CXmlLiteReader& oReader)
{
ReadAttributes( oReader );
}
void ReadAttributes(XmlUtils::CXmlLiteReader& oReader)
{
WritingElement_ReadAttributes_Start_No_NS( oReader )
WritingElement_ReadAttributes_Read_if ( oReader, _T("thresh"), thresh)
WritingElement_ReadAttributes_End( oReader )
Normalize();
}
virtual void fromXML(XmlUtils::CXmlNode& node)
{
node.ReadAttributeBase(L"thresh", thresh);

View File

@ -45,8 +45,8 @@ namespace PPTX
class Blend : public WrapperWritingElement
{
public:
PPTX_LOGIC_BASE(Blend)
WritingElement_AdditionConstructors(Blend)
PPTX_LOGIC_BASE2(Blend)
Blend& operator=(const Blend& oSrc)
{
@ -57,8 +57,32 @@ namespace PPTX
blend = oSrc.blend;
return *this;
}
virtual OOX::EElementType getType() const
{
return OOX::et_a_blend;
}
void fromXML(XmlUtils::CXmlLiteReader& oReader)
{
ReadAttributes( oReader );
if ( oReader.IsEmptyNode() )
return;
public:
int nCurDepth = oReader.GetDepth();
while( oReader.ReadNextSiblingNode( nCurDepth ) )
{
std::wstring strName = oReader.GetName();
if (strName == L"a:cont")
cont = oReader;
}
FillParentPointersForChilds();
}
void ReadAttributes(XmlUtils::CXmlLiteReader& oReader)
{
WritingElement_ReadAttributes_Start_No_NS( oReader )
WritingElement_ReadAttributes_Read_if ( oReader, _T("blend"), blend)
WritingElement_ReadAttributes_End( oReader )
}
virtual void fromXML(XmlUtils::CXmlNode& node)
{
cont = node.ReadNode(_T("a:cont"));

View File

@ -43,7 +43,8 @@ namespace PPTX
{
public:
PPTX_LOGIC_BASE(Blur)
WritingElement_AdditionConstructors(Blur)
PPTX_LOGIC_BASE2(Blur)
Blur& operator=(const Blur& oSrc)
{
@ -55,7 +56,21 @@ namespace PPTX
return *this;
}
public:
virtual OOX::EElementType getType() const
{
return OOX::et_a_blur;
}
void fromXML(XmlUtils::CXmlLiteReader& oReader)
{
ReadAttributes( oReader );
}
void ReadAttributes(XmlUtils::CXmlLiteReader& 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 )
}
virtual void fromXML(XmlUtils::CXmlNode& node)
{
node.ReadAttributeBase(L"rad", rad);

View File

@ -44,7 +44,8 @@ namespace PPTX
class ClrChange : public WrapperWritingElement
{
public:
PPTX_LOGIC_BASE(ClrChange)
WritingElement_AdditionConstructors(ClrChange)
PPTX_LOGIC_BASE2(ClrChange)
ClrChange& operator=(const ClrChange& oSrc)
{
@ -56,8 +57,35 @@ namespace PPTX
useA = oSrc.useA;
return *this;
}
virtual OOX::EElementType getType() const
{
return OOX::et_a_clrChange;
}
void fromXML(XmlUtils::CXmlLiteReader& oReader)
{
ReadAttributes( oReader );
if ( oReader.IsEmptyNode() )
return;
int nCurDepth = oReader.GetDepth();
while( oReader.ReadNextSiblingNode( nCurDepth ) )
{
std::wstring strName = oReader.GetName();
if (strName == L"a:clrTo")
ClrTo.fromXMLParent(oReader);
else if (strName == L"a:clrFrom")
ClrFrom.fromXMLParent(oReader);
}
FillParentPointersForChilds();
}
void ReadAttributes(XmlUtils::CXmlLiteReader& oReader)
{
WritingElement_ReadAttributes_Start_No_NS( oReader )
WritingElement_ReadAttributes_Read_if ( oReader, _T("useA"), useA)
WritingElement_ReadAttributes_End( oReader )
}
public:
virtual void fromXML(XmlUtils::CXmlNode& node)
{
XmlUtils::CXmlNode node1 = node.ReadNode(_T("a:clrFrom"));

View File

@ -45,7 +45,8 @@ namespace PPTX
{
public:
PPTX_LOGIC_BASE(ClrRepl)
WritingElement_AdditionConstructors(ClrRepl)
PPTX_LOGIC_BASE2(ClrRepl)
ClrRepl& operator=(const ClrRepl& oSrc)
{
@ -55,8 +56,24 @@ namespace PPTX
Color = oSrc.Color;
return *this;
}
virtual OOX::EElementType getType() const
{
return OOX::et_a_clrRepl;
}
void fromXML(XmlUtils::CXmlLiteReader& oReader)
{
if ( oReader.IsEmptyNode() )
return;
public:
int nCurDepth = oReader.GetDepth();
while( oReader.ReadNextSiblingNode( nCurDepth ) )
{
std::wstring strName = oReader.GetName();
Color.fromXML(oReader);
}
FillParentPointersForChilds();
}
virtual void fromXML(XmlUtils::CXmlNode& node)
{
Color.GetColorFrom(node);

View File

@ -43,7 +43,8 @@ namespace PPTX
class Duotone : public WrapperWritingElement
{
public:
PPTX_LOGIC_BASE(Duotone)
WritingElement_AdditionConstructors(Duotone)
PPTX_LOGIC_BASE2(Duotone)
Duotone& operator=(const Duotone& oSrc)
{
@ -53,15 +54,32 @@ namespace PPTX
Colors = oSrc.Colors;
return *this;
}
virtual OOX::EElementType getType() const
{
return OOX::et_a_duotone;
}
void fromXML(XmlUtils::CXmlLiteReader& oReader)
{
if ( oReader.IsEmptyNode() )
return;
public:
int nCurDepth = oReader.GetDepth();
while( oReader.ReadNextSiblingNode( nCurDepth ) )
{
std::wstring strName = oReader.GetName();
UniColor col;
Colors.push_back(col);
Colors.back().fromXML(oReader);
}
FillParentPointersForChilds();
}
virtual void fromXML(XmlUtils::CXmlNode& node)
{
Colors.clear();
node.LoadArray(_T("*"), Colors);
FillParentPointersForChilds();
}
virtual std::wstring toXML() const
{
XmlUtils::CNodeValue oValue;

View File

@ -44,7 +44,8 @@ namespace PPTX
{
public:
PPTX_LOGIC_BASE(EffectElement)
WritingElement_AdditionConstructors(EffectElement)
PPTX_LOGIC_BASE2(EffectElement)
EffectElement& operator=(const EffectElement& oSrc)
{
@ -54,8 +55,21 @@ namespace PPTX
ref = oSrc.ref;
return *this;
}
virtual OOX::EElementType getType() const
{
return OOX::et_a_effect;
}
void fromXML(XmlUtils::CXmlLiteReader& oReader)
{
ReadAttributes( oReader );
}
void ReadAttributes(XmlUtils::CXmlLiteReader& oReader)
{
WritingElement_ReadAttributes_Start_No_NS( oReader )
WritingElement_ReadAttributes_Read_if ( oReader, _T("ref"), ref)
WritingElement_ReadAttributes_End( oReader )
}
public:
virtual void fromXML(XmlUtils::CXmlNode& node)
{
node.ReadAttributeBase(L"ref", ref);

View File

@ -44,7 +44,8 @@ namespace PPTX
{
public:
PPTX_LOGIC_BASE(FillEffect)
WritingElement_AdditionConstructors(FillEffect)
PPTX_LOGIC_BASE2(FillEffect)
FillEffect& operator=(const FillEffect& oSrc)
{
@ -54,8 +55,24 @@ namespace PPTX
Fill = oSrc.Fill;
return *this;
}
virtual OOX::EElementType getType() const
{
return OOX::et_a_fill;
}
void fromXML(XmlUtils::CXmlLiteReader& oReader)
{
if ( oReader.IsEmptyNode() )
return;
public:
int nCurDepth = oReader.GetDepth();
while( oReader.ReadNextSiblingNode( nCurDepth ) )
{
std::wstring strName = oReader.GetName();
Fill.fromXML(oReader);
}
FillParentPointersForChilds();
}
virtual void fromXML(XmlUtils::CXmlNode& node)
{
Fill.GetFillFrom(node);

View File

@ -46,7 +46,8 @@ namespace PPTX
{
public:
PPTX_LOGIC_BASE(FillOverlay)
WritingElement_AdditionConstructors(FillOverlay)
PPTX_LOGIC_BASE2(FillOverlay)
FillOverlay& operator=(const FillOverlay& oSrc)
{
@ -58,7 +59,32 @@ namespace PPTX
return *this;
}
public:
virtual OOX::EElementType getType() const
{
return OOX::et_a_fillOverlay;
}
void fromXML(XmlUtils::CXmlLiteReader& oReader)
{
ReadAttributes( oReader );
if ( oReader.IsEmptyNode() )
return;
int nCurDepth = oReader.GetDepth();
while( oReader.ReadNextSiblingNode( nCurDepth ) )
{
std::wstring strName = oReader.GetName();
Fill.fromXML(oReader);
}
FillParentPointersForChilds();
}
void ReadAttributes(XmlUtils::CXmlLiteReader& oReader)
{
WritingElement_ReadAttributes_Start_No_NS( oReader )
WritingElement_ReadAttributes_Read_if ( oReader, _T("blend"), blend)
WritingElement_ReadAttributes_End( oReader )
}
virtual void fromXML(XmlUtils::CXmlNode& node)
{
Fill.GetFillFrom(node);

View File

@ -40,11 +40,11 @@ namespace PPTX
{
namespace Logic
{
class Glow : public WrapperWritingElement
{
public:
PPTX_LOGIC_BASE(Glow)
WritingElement_AdditionConstructors(Glow)
PPTX_LOGIC_BASE2(Glow)
Glow& operator=(const Glow& oSrc)
{
@ -55,14 +55,40 @@ namespace PPTX
rad = oSrc.rad;
return *this;
}
virtual OOX::EElementType getType() const
{
return OOX::et_a_clrRepl;
}
void fromXML(XmlUtils::CXmlLiteReader& oReader)
{
ReadAttributes( oReader );
public:
if ( oReader.IsEmptyNode() )
return;
int nCurDepth = oReader.GetDepth();
while( oReader.ReadNextSiblingNode( nCurDepth ) )
{
std::wstring strName = oReader.GetName();
Color.fromXML(oReader);
}
FillParentPointersForChilds();
}
void ReadAttributes(XmlUtils::CXmlLiteReader& oReader)
{
WritingElement_ReadAttributes_Start_No_NS( oReader )
WritingElement_ReadAttributes_Read_if ( oReader, _T("rad"), rad)
WritingElement_ReadAttributes_End( oReader )
Normalize();
}
virtual void fromXML(XmlUtils::CXmlNode& node)
{
Color.GetColorFrom(node);
node.ReadAttributeBase(L"rad", rad);
FillParentPointersForChilds();
Normalize();
}

View File

@ -43,7 +43,8 @@ namespace PPTX
class Grayscl : public WrapperWritingElement
{
public:
PPTX_LOGIC_BASE(Grayscl)
WritingElement_AdditionConstructors(Grayscl)
PPTX_LOGIC_BASE2(Grayscl)
Grayscl& operator=(const Grayscl& oSrc)
{
@ -52,8 +53,13 @@ namespace PPTX
return *this;
}
public:
virtual OOX::EElementType getType() const
{
return OOX::et_a_grayscl;
}
void fromXML(XmlUtils::CXmlLiteReader& oReader)
{
}
virtual void fromXML(XmlUtils::CXmlNode& node)
{
}

View File

@ -43,7 +43,8 @@ namespace PPTX
class HslEffect : public WrapperWritingElement
{
public:
PPTX_LOGIC_BASE(HslEffect)
WritingElement_AdditionConstructors(HslEffect)
PPTX_LOGIC_BASE2(HslEffect)
HslEffect& operator=(const HslEffect& oSrc)
{
@ -55,8 +56,24 @@ namespace PPTX
sat = oSrc.sat;
return *this;
}
public:
virtual OOX::EElementType getType() const
{
return OOX::et_a_hsl;
}
void fromXML(XmlUtils::CXmlLiteReader& oReader)
{
ReadAttributes( oReader );
}
void ReadAttributes(XmlUtils::CXmlLiteReader& 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)
WritingElement_ReadAttributes_End( oReader )
Normalize();
}
virtual void fromXML(XmlUtils::CXmlNode& node)
{
node.ReadAttributeBase(L"hue", hue);

View File

@ -44,7 +44,8 @@ namespace PPTX
class InnerShdw : public WrapperWritingElement
{
public:
PPTX_LOGIC_BASE(InnerShdw)
WritingElement_AdditionConstructors(InnerShdw)
PPTX_LOGIC_BASE2(InnerShdw)
InnerShdw& operator=(const InnerShdw& oSrc)
{
@ -57,8 +58,36 @@ namespace PPTX
dist = oSrc.dist;
return *this;
}
virtual OOX::EElementType getType() const
{
return OOX::et_a_innerShdw;
}
void fromXML(XmlUtils::CXmlLiteReader& oReader)
{
ReadAttributes( oReader );
if ( oReader.IsEmptyNode() )
return;
public:
int nCurDepth = oReader.GetDepth();
while( oReader.ReadNextSiblingNode( nCurDepth ) )
{
std::wstring strName = oReader.GetName();
Color.fromXML(oReader);
}
FillParentPointersForChilds();
}
void ReadAttributes(XmlUtils::CXmlLiteReader& 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)
WritingElement_ReadAttributes_End( oReader )
Normalize();
}
virtual void fromXML(XmlUtils::CXmlNode& node)
{
Color.GetColorFrom(node);
@ -66,8 +95,8 @@ namespace PPTX
node.ReadAttributeBase(L"dir", dir);
node.ReadAttributeBase(L"dist", dist);
FillParentPointersForChilds();
Normalize();
FillParentPointersForChilds();
}
virtual std::wstring toXML() const

View File

@ -43,7 +43,8 @@ namespace PPTX
class LumEffect : public WrapperWritingElement
{
public:
PPTX_LOGIC_BASE(LumEffect)
WritingElement_AdditionConstructors(LumEffect)
PPTX_LOGIC_BASE2(LumEffect)
LumEffect& operator=(const LumEffect& oSrc)
{
@ -54,8 +55,21 @@ namespace PPTX
contrast = oSrc.contrast;
return *this;
}
public:
virtual OOX::EElementType getType() const
{
return OOX::et_a_lum;
}
void fromXML(XmlUtils::CXmlLiteReader& oReader)
{
ReadAttributes( oReader );
}
void ReadAttributes(XmlUtils::CXmlLiteReader& 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 )
}
virtual void fromXML(XmlUtils::CXmlNode& node)
{
node.ReadAttributeBase(L"bright", bright);

View File

@ -45,7 +45,8 @@ namespace PPTX
class OuterShdw : public WrapperWritingElement
{
public:
PPTX_LOGIC_BASE(OuterShdw)
WritingElement_AdditionConstructors(OuterShdw)
PPTX_LOGIC_BASE2(OuterShdw)
OuterShdw& operator=(const OuterShdw& oSrc)
{
@ -66,8 +67,42 @@ namespace PPTX
return *this;
}
virtual OOX::EElementType getType() const
{
return OOX::et_a_innerShdw;
}
void fromXML(XmlUtils::CXmlLiteReader& oReader)
{
ReadAttributes( oReader );
if ( oReader.IsEmptyNode() )
return;
public:
int nCurDepth = oReader.GetDepth();
while( oReader.ReadNextSiblingNode( nCurDepth ) )
{
std::wstring strName = oReader.GetName();
Color.fromXML(oReader);
}
FillParentPointersForChilds();
}
void ReadAttributes(XmlUtils::CXmlLiteReader& 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)
WritingElement_ReadAttributes_Read_else_if( oReader, _T("algnt"), algn)
WritingElement_ReadAttributes_Read_else_if( oReader, _T("kx"), kx)
WritingElement_ReadAttributes_Read_else_if( oReader, _T("ky"), ky)
WritingElement_ReadAttributes_Read_else_if( oReader, _T("rotWithShape"), rotWithShape)
WritingElement_ReadAttributes_Read_else_if( oReader, _T("sx"), sx)
WritingElement_ReadAttributes_Read_else_if( oReader, _T("sy"), sy)
WritingElement_ReadAttributes_End( oReader )
Normalize();
}
virtual void fromXML(XmlUtils::CXmlNode& node)
{
Color.GetColorFrom(node);

View File

@ -45,7 +45,8 @@ namespace PPTX
class PrstShdw : public WrapperWritingElement
{
public:
PPTX_LOGIC_BASE(PrstShdw)
WritingElement_AdditionConstructors(PrstShdw)
PPTX_LOGIC_BASE2(PrstShdw)
PrstShdw& operator=(const PrstShdw& oSrc)
{
@ -60,8 +61,37 @@ namespace PPTX
return *this;
}
virtual OOX::EElementType getType() const
{
return OOX::et_a_prstShdw;
}
void fromXML(XmlUtils::CXmlLiteReader& oReader)
{
ReadAttributes( oReader );
if ( oReader.IsEmptyNode() )
return;
public:
int nCurDepth = oReader.GetDepth();
while( oReader.ReadNextSiblingNode( nCurDepth ) )
{
std::wstring strName = oReader.GetName();
Color.fromXML(oReader);
}
Normalize();
FillParentPointersForChilds();
}
void ReadAttributes(XmlUtils::CXmlLiteReader& 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)
WritingElement_ReadAttributes_End( oReader )
Normalize();
}
virtual void fromXML(XmlUtils::CXmlNode& node)
{
Color.GetColorFrom(node);

View File

@ -44,7 +44,8 @@ namespace PPTX
class Reflection : public WrapperWritingElement
{
public:
PPTX_LOGIC_BASE(Reflection)
WritingElement_AdditionConstructors(Reflection)
PPTX_LOGIC_BASE2(Reflection)
Reflection& operator=(const Reflection& oSrc)
{
@ -68,8 +69,35 @@ namespace PPTX
return *this;
}
public:
virtual OOX::EElementType getType() const
{
return OOX::et_a_reflection;
}
void fromXML(XmlUtils::CXmlLiteReader& oReader)
{
ReadAttributes( oReader );
}
void ReadAttributes(XmlUtils::CXmlLiteReader& 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)
WritingElement_ReadAttributes_Read_else_if( oReader, _T("dist"), dist)
WritingElement_ReadAttributes_Read_else_if( oReader, _T("algnt"), algn)
WritingElement_ReadAttributes_Read_else_if( oReader, _T("kx"), kx)
WritingElement_ReadAttributes_Read_else_if( oReader, _T("ky"), ky)
WritingElement_ReadAttributes_Read_else_if( oReader, _T("rotWithShape"), rotWithShape)
WritingElement_ReadAttributes_Read_else_if( oReader, _T("sx"), sx)
WritingElement_ReadAttributes_Read_else_if( oReader, _T("sy"), sy)
WritingElement_ReadAttributes_Read_else_if( oReader, _T("stA"), stA)
WritingElement_ReadAttributes_Read_else_if( oReader, _T("endA"), endA)
WritingElement_ReadAttributes_Read_else_if( oReader, _T("stPos"), stPos)
WritingElement_ReadAttributes_Read_else_if( oReader, _T("endPos"), endPos)
WritingElement_ReadAttributes_End( oReader )
Normalize();
}
virtual void fromXML(XmlUtils::CXmlNode& node)
{
node.ReadAttributeBase(L"algn", algn);

View File

@ -43,7 +43,8 @@ namespace PPTX
class RelOff : public WrapperWritingElement
{
public:
PPTX_LOGIC_BASE(RelOff)
WritingElement_AdditionConstructors(RelOff)
PPTX_LOGIC_BASE2(RelOff)
RelOff& operator=(const RelOff& oSrc)
{
@ -54,8 +55,21 @@ namespace PPTX
ty = oSrc.ty;
return *this;
}
public:
virtual OOX::EElementType getType() const
{
return OOX::et_a_relOff;
}
void fromXML(XmlUtils::CXmlLiteReader& oReader)
{
ReadAttributes( oReader );
}
void ReadAttributes(XmlUtils::CXmlLiteReader& 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 )
}
virtual void fromXML(XmlUtils::CXmlNode& node)
{
node.ReadAttributeBase(L"tx", tx);

View File

@ -43,7 +43,8 @@ namespace PPTX
class SoftEdge : public WrapperWritingElement
{
public:
PPTX_LOGIC_BASE(SoftEdge)
WritingElement_AdditionConstructors(SoftEdge)
PPTX_LOGIC_BASE2(SoftEdge)
SoftEdge& operator=(const SoftEdge& oSrc)
{
@ -53,8 +54,20 @@ namespace PPTX
rad = oSrc.rad;
return *this;
}
public:
virtual OOX::EElementType getType() const
{
return OOX::et_a_softEdge;
}
void fromXML(XmlUtils::CXmlLiteReader& oReader)
{
ReadAttributes( oReader );
}
void ReadAttributes(XmlUtils::CXmlLiteReader& oReader)
{
WritingElement_ReadAttributes_Start_No_NS( oReader )
WritingElement_ReadAttributes_ReadSingle ( oReader, _T("rad"), rad)
WritingElement_ReadAttributes_End( oReader )
}
virtual void fromXML(XmlUtils::CXmlNode& node)
{
node.ReadAttributeBase(L"rad", rad);

View File

@ -43,7 +43,8 @@ namespace PPTX
class TintEffect : public WrapperWritingElement
{
public:
PPTX_LOGIC_BASE(TintEffect)
WritingElement_AdditionConstructors(TintEffect)
PPTX_LOGIC_BASE2(TintEffect)
TintEffect& operator=(const TintEffect& oSrc)
{
@ -54,8 +55,23 @@ namespace PPTX
hue = oSrc.hue;
return *this;
}
public:
virtual OOX::EElementType getType() const
{
return OOX::et_a_tint;
}
void fromXML(XmlUtils::CXmlLiteReader& oReader)
{
ReadAttributes( oReader );
}
void ReadAttributes(XmlUtils::CXmlLiteReader& 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 )
Normalize();
}
virtual void fromXML(XmlUtils::CXmlNode& node)
{
node.ReadAttributeBase(L"amt", amt);

View File

@ -43,7 +43,8 @@ namespace PPTX
class XfrmEffect : public WrapperWritingElement
{
public:
PPTX_LOGIC_BASE(XfrmEffect)
WritingElement_AdditionConstructors(XfrmEffect)
PPTX_LOGIC_BASE2(XfrmEffect)
XfrmEffect& operator=(const XfrmEffect& oSrc)
{
@ -59,8 +60,27 @@ namespace PPTX
return *this;
}
public:
virtual OOX::EElementType getType() const
{
return OOX::et_a_xfrm;
}
void fromXML(XmlUtils::CXmlLiteReader& oReader)
{
ReadAttributes( oReader );
}
void ReadAttributes(XmlUtils::CXmlLiteReader& 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)
WritingElement_ReadAttributes_Read_else_if( oReader, _T("sy"), sy)
WritingElement_ReadAttributes_Read_else_if( oReader, _T("tx"), tx)
WritingElement_ReadAttributes_Read_else_if( oReader, _T("ty"), ty)
WritingElement_ReadAttributes_End( oReader )
Normalize();
}
virtual void fromXML(XmlUtils::CXmlNode& node)
{
node.ReadAttributeBase(L"kx", kx);

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