/* * (c) Copyright Ascensio System SIA 2010-2023 * * This program is a free software product. You can redistribute it and/or * modify it under the terms of the GNU Affero General Public License (AGPL) * version 3 as published by the Free Software Foundation. In accordance with * Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect * that Ascensio System SIA expressly excludes the warranty of non-infringement * of any third-party rights. * * This program is distributed WITHOUT ANY WARRANTY; without even the implied * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For * details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html * * You can contact Ascensio System SIA at 20A-6 Ernesta Birznieka-Upish * street, Riga, Latvia, EU, LV-1050. * * The interactive user interfaces in modified source and object code versions * of the Program must display Appropriate Legal Notices, as required under * Section 5 of the GNU AGPL version 3. * * Pursuant to Section 7(b) of the License you must retain the original Product * logo when distributing the program. Pursuant to Section 7(e) we decline to * grant you any rights under trademark law for use of our trademarks. * * All the Product's GUI elements, including illustrations and icon sets, as * well as technical writing content are licensed under the terms of the * Creative Commons Attribution-ShareAlike 4.0 International. See the License * terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode * */ #pragma once #include "../../DesktopEditor/xml/include/xmlutils.h" #include "../Base/SmartPtr.h" namespace NSBinPptxRW { class CBinaryFileWriter; class CBinaryFileReader; class CXmlWriter; } namespace OOX { #define AssignPtrXmlContentNoMain(Ptr, Class, Content) \ {\ Ptr = new Class();\ Class *pClass = dynamic_cast(Ptr);\ *pClass = Content;\ } #define AssignPtrXmlContent(Ptr, Class, Content) \ {\ Ptr = new Class(WritingElement::m_pMainDocument);\ Class *pClass = dynamic_cast(Ptr);\ *pClass = Content;\ } #define WritingElement_AdditionMethods(Class) \ const Class& operator =(const XmlUtils::CXmlNode &oNode)\ {\ fromXML( (XmlUtils::CXmlNode &)oNode );\ return *this;\ }\ const Class& operator =(const XmlUtils::CXmlLiteReader& oReader)\ {\ fromXML( (XmlUtils::CXmlLiteReader&)oReader );\ return *this;\ }\ const Class& operator =(XmlUtils::CXmlNode& node)\ {\ m_pMainDocument = NULL;\ fromXML(node);\ return *this;\ }\ #define WritingElement_XlsbConstructors(Class) \ explicit Class(XLS::BaseObjectPtr& obj)\ {\ m_pMainDocument = NULL;\ fromBin(obj);\ }\ const Class& operator =(XLS::BaseObjectPtr& obj)\ {\ m_pMainDocument = NULL;\ fromBin(obj);\ return *this;\ }\ #define WritingElement_XlsbVectorConstructors(Class) \ explicit Class(std::vector& obj)\ {\ m_pMainDocument = NULL;\ fromBin(obj);\ }\ const Class& operator =(std::vector& obj)\ {\ m_pMainDocument = NULL;\ fromBin(obj);\ return *this;\ }\ #define WritingElement_ReadNode( oRootNode, oChildNode, sNodeName, oValue ) \ if ( oRootNode.GetNode( sNodeName, oChildNode ) )\ oValue = oChildNode; #define WritingElement_WriteNode_1( sStartNodeString, oValue ) \ if ( oValue.IsInit() )\ {\ sResult += sStartNodeString;\ sResult += oValue->ToString();\ sResult += _T("/>");\ } #define WritingElement_WriteNode_2( oValue ) \ if ( oValue.IsInit() )\ sResult += oValue->toXML(); #define WritingElement_WriteNode_3( sStartNodeString, oValue ) \ if ( oValue.IsInit() )\ {\ sResult += sStartNodeString;\ sResult += oValue->ToString(false);\ sResult += _T("/>");\ } //----------------------------------------------------------------------------------------------- #define WritingElement_ReadAttributes_ReadSingle2(Reader, AttrName, Value) \ if ( Reader.GetAttributesCount() > 0 ){\ if ( Reader.MoveToFirstAttribute() ){\ std::wstring wsName = Reader.GetName();\ while( !wsName.empty() )\ {\ if ( AttrName == wsName )\ {\ Value = Reader.GetText();\ break;\ }\ if ( !Reader.MoveToNextAttribute() ) \ break;\ wsName = Reader.GetName();\ }\ Reader.MoveToElement();}} // Следующие 3 define используются для чтения аттрибутов через CXmlLiteReader #define WritingElement_ReadAttributes_Start(Reader) \ if ( Reader.GetAttributesCount() <= 0 )\ return;\ if ( !Reader.MoveToFirstAttribute() )\ return;\ std::wstring wsName = Reader.GetName();\ while( !wsName.empty() )\ { #define WritingElement_ReadAttributes_StartChar(Reader) \ if ( Reader.GetAttributesCount() <= 0 )\ return;\ if ( !Reader.MoveToFirstAttribute() )\ return;\ const char* wsName = Reader.GetNameChar();\ while( strlen(wsName) != 0 )\ { #define WritingElement_ReadAttributes_StartChar_No_NS(Reader) \ if ( Reader.GetAttributesCount() <= 0 )\ return;\ if ( !Reader.MoveToFirstAttribute() )\ return;\ const char* wsName = XmlUtils::GetNameNoNS(Reader.GetNameChar());\ while( strlen(wsName) != 0 )\ { #define WritingElement_ReadAttributes_Start_No_NS(Reader) \ if ( Reader.GetAttributesCount() <= 0 )\ return;\ if ( !Reader.MoveToFirstAttribute() )\ return;\ std::wstring wsName = XmlUtils::GetNameNoNS(Reader.GetName());\ while( !wsName.empty() )\ { #define WritingElement_ReadAttributes_Read_if(Reader, AttrName, Value) \ if ( AttrName == wsName )\ {\ Value = Reader.GetText();\ } #define WritingElement_ReadAttributes_Read_ifChar(Reader, AttrName, Value) \ if ( strcmp(AttrName, wsName) == 0 )\ {\ Value = Reader.GetText();\ } #define WritingElement_ReadAttributesA_Read_ifChar(Reader, AttrName, Value) \ if ( strcmp(AttrName, wsName) == 0 )\ {\ Value = Reader.GetTextA();\ } #define WritingElement_ReadAttributes_Read_else_if(Reader, AttrName, Value) \ else if ( AttrName == wsName )\ Value = Reader.GetText(); #define WritingElement_ReadAttributes_Read_else_ifChar(Reader, AttrName, Value) \ else if ( strcmp(AttrName, wsName) == 0 )\ Value = Reader.GetText(); #define WritingElement_ReadAttributesA_Read_else_ifChar(Reader, AttrName, Value) \ else if ( strcmp(AttrName, wsName) == 0 )\ Value = Reader.GetTextA(); #define WritingElement_ReadAttributes_ReadSingle(Reader, AttrName, Value) \ if ( AttrName == wsName )\ {\ Value = Reader.GetText();\ break;\ } #define WritingElement_ReadAttributes_End(Reader) \ if ( !Reader.MoveToNextAttribute() ) \ break;\ wsName = Reader.GetName();\ }\ Reader.MoveToElement(); #define WritingElement_ReadAttributes_EndChar(Reader) \ if ( !Reader.MoveToNextAttribute() ) \ break;\ wsName = Reader.GetNameChar();\ }\ Reader.MoveToElement(); #define WritingElement_ReadAttributes_EndChar_No_NS(Reader) \ if ( !Reader.MoveToNextAttribute() ) \ break;\ wsName = XmlUtils::GetNameNoNS(Reader.GetNameChar());\ }\ Reader.MoveToElement(); #define WritingElement_ReadAttributes_End_No_NS(Reader) \ if ( !Reader.MoveToNextAttribute() ) \ break;\ wsName = XmlUtils::GetNameNoNS(Reader.GetName());\ }\ Reader.MoveToElement(); enum EElementType { et_Unknown, et_Default, // et_Override, // et_Relationship, // et_a_accent1, // et_a_accent2, // et_a_accent3, // et_a_accent4, // et_a_accent5, // et_a_accent6, // et_a_ahLst, // et_a_ahPolar, // et_a_ahXY, // et_a_alpha, // et_a_alphaBiLevel, // et_a_alphaCeiling, // et_a_alphaFloor, // et_a_alphaInv, // et_a_alphaMod, // et_a_alphaModFix, // et_a_alphaOff, // et_a_alphaOutset, // et_a_alphaRepl, // et_a_anchor, // et_a_arcTo, // et_a_avLst, // et_a_backdrop, // et_a_bevel, // et_a_bevelB, // et_a_bevelT, // et_a_bgClr, // et_a_bgFillStyleLst, // et_a_biLevel, // et_a_blend, // et_a_blip, // et_a_blipFill, // et_a_blue, // et_a_blueMod, // et_a_blueOff, // et_a_blur, // et_a_bodyPr, // et_a_camera, // et_a_close, // et_a_clrChange, // et_a_clrFrom, // et_a_clrMap, // et_a_clrMapOvr, // et_a_clrRepl, // et_a_clrScheme, // et_a_clrTo, // et_a_cNvPicPr, // et_a_comp, // et_a_cont, // et_a_contourClr, // et_a_cs, // et_a_cubicBezTo, // et_a_custDash, // et_a_custClr, // et_a_custClrLst, // et_a_custGeom, // et_a_cxn, // et_a_cxnLst, // et_a_dk1, // et_a_dk2, // et_a_ds, // et_a_duotone, // et_a_ea, // et_a_effect, // et_a_effectDag, // et_a_effectLst, // et_a_effectRef, // et_a_effectStyle, // et_a_effectStyleLst, // et_a_compatExt, et_a_ext, // et_a_extLst, // et_a_extraClrScheme, // et_a_extraClrSchemeLst, // et_a_extrusionClr, // et_a_fgClr, // et_a_fill, // et_a_fillOverlay, // et_a_fillRect, // et_a_fillRef, // et_a_fillStyleLst, // et_a_fillToRect, // et_a_flatTx, // et_a_fmtScheme, // et_a_folHlink, // et_a_font, // et_a_fontRef, // et_a_fontScheme, // et_a_gamma, // et_a_gd, // et_a_gdLst, // et_a_glow, // et_a_gradFill, // et_a_graphic, // et_a_graphicFrame, et_a_graphicData, et_a_graphicFrameLocks, // et_a_gray, // et_a_grayscl, // et_a_green, // et_a_greenMod, // et_a_greenOff, // et_a_grpFill, // et_a_gs, // et_a_gsLst, // et_a_headEnd, // et_a_hlink, // et_a_hlinkClick, // et_a_hlinkHover, // et_a_hsl, // et_a_hslClr, // et_a_hue, // et_a_hueMod, // et_a_hueOff, // et_a_innerShdw, // et_a_inv, // et_a_invGamma, // et_a_latin, // et_a_lightRig, // et_a_lin, // et_a_lineTo, // et_a_ln, // et_a_lnDef, // et_a_lnRef, // et_a_lnStyleLst, // et_a_lnTo, // et_a_lt1, // et_a_lt2, // et_a_lum, // et_a_lumMod, // et_a_lumOff, // et_a_majorFont, // et_a_minorFont, // et_a_masterClrMapping, // et_a_miter, // et_a_moveTo, // et_a_noAutofit, // et_a_noFill, // et_a_norm, // et_a_normAutofit, // et_a_objectDefaults, // et_a_outerShdw, // et_a_overrideClrMapping, // et_a_path, // et_a_pathLst, // et_a_pattFill, // et_a_picLocks, // et_a_pos, // et_a_prstClr, // et_a_prstDash, // et_a_prstGeom, // et_a_prstShdw, // et_a_prstTxWarp, // et_a_pt, // et_a_quadBezTo, // et_a_rect, // et_a_red, // et_a_redMod, // et_a_redOff, // et_a_reflection, // et_a_relOff, // et_a_rot, // et_a_round, // et_a_sat, // et_a_satMod, // et_a_satOff, // et_a_scene3d, // et_a_schemeClr, // et_a_scrgbClr, // et_a_styleClr, et_a_shade, // et_a_snd, // et_a_softEdge, // et_a_solidFill, // et_a_sp3d, // et_a_spAutoFit, // et_a_spDef, // et_a_spPr, // et_a_srcRect, // et_a_srgbClr, // et_a_stretch, // et_a_style, // et_a_sym, // et_a_sysClr, // et_a_tailEnd, // et_a_themeElements, // et_a_tile, // et_a_tileRect, // et_a_tint, // et_a_txDef, // et_a_up, // et_a_xfrm, // et_a_uFillTx, et_a_highlight, et_a_groupSpPr, // et_a_Shape, // et_a_GroupShape, // et_a_TextShape, // et_a_TextShapeBody, // et_a_LockedCanvas, // et_a_GroupShapeNonVisual, et_a_ConnectionNonVisualShapeProps, et_a_ShapeNonVisual, et_a_Slicer, et_dgm_DiagrammParts, // et_dgm_ptLst, // et_dgm_pt, // et_dgm_prSet, // et_dgm_spPr, // et_dgm_t, // et_dgm_cxnLst, et_dgm_cxn, et_dgm_VariableList, et_dgm_Shape, et_dgm_AdjLst, et_dgm_ShapeAdjust, et_dgm_PresOf, et_dgm_Choose, et_dgm_Else, et_dgm_If, et_dgm_Alg, et_dgm_Param, et_dgm_ConstrLst, et_dgm_Constraint, et_dgm_RuleLst, et_dgm_Rule, et_dgm_ForEach, et_dgm_LayoutNode, et_dgm_DiferentData, et_dgm_styleLbl, et_dgm_ClrLst, et_dgm_Whole, et_dgm_Bg, et_dgm_DataModel, et_dgm_Cat, et_dgm_CatLst, et_dgm_ResizeHandles, et_dgm_OrgChart, et_dgm_HierBranch, et_dgm_Direction, et_dgm_chPref, et_dgm_chMax, et_dgm_BulletEnabled, et_dgm_AnimOne, et_dgm_AnimLvl, et_dgm_ComplexType, et_dgm_text, et_dgm_ColorStyleLbl, et_dsp_Shape, // et_dsp_ShapeTree, // et_dsp_spPr, // et_dsp_style, // et_dsp_groupSpPr, // et_dsp_cNvPr, et_dsp_txXfrm, et_lc_LockedCanvas, // et_graphicFrame, // <...:graphicFrame> et_pic, // <...:pic> et_cxnSp, // <...:cxnSp> et_oleobject, et_p_cNvPicPr, // et_p_cNvPr, // et_p_pic, // et_p_Shape, // et_p_ShapeTree, // et_p_spPr, // et_p_style, // et_p_groupSpPr, // et_p_NvGrpSpPr, et_p_xfrm, et_p_r, et_p_fld, et_p_br, et_p_MathPara, et_p_EmptyTransition, et_p_OrientationTransition, et_p_EightDirectionTransition, et_p_OptionalBlackTransition, et_p_CornerDirectionTransition, et_p_SideDirectionTransition, et_p_WheelTransition, et_p_SplitTransition, et_p_ZoomTransition, et_p_par, et_p_seq, et_p_audio, et_p_video, et_p_excl, et_p_anim, et_p_animClr, et_p_animEffect, et_p_animMotion, et_p_animRot, et_p_animScale, et_p_cmd, et_p_set, et_p_bldP, et_p_bldDgm, et_p_bldGraphic, et_p_bldOleChart, et_a_textFit, et_a_hyperlink, et_a_fld, et_a_p, // et_a_pPr, // et_a_r, // et_a_rPr, // et_a_t, // et_a_br, // et_a_spcPts, // et_a_spcPct, // et_a_spcAft, // et_a_spcBef, // et_a_lnSpc, // et_a_tab, et_a_rtl, et_a_buNone, et_a_buChar, et_a_buAutoNum, et_a_buClr, et_a_buClrTx, et_a_buFontTx, et_a_buBlip, et_a_buSzPct, et_a_buSzPts, et_a_buSzTx, et_ds_customXmlProps, et_ds_schemaRefs, // et_ds_schemaRef, // et_m_acc, //m:acc et_m_accPr, //m:accPr et_m_aln, //m:aln et_m_alnScr, //m:alnScr et_m_argPr, //m:argPr et_m_argSz, //m:argSz et_m_bar, //m:bar et_m_barPr, //m:barPr et_m_baseJc, //m:baseJc et_m_begChr, //m:begChr et_m_borderBox, //m:borderBox et_m_borderBoxPr, //m:borderBoxPr et_m_box, //m:box et_m_boxPr, //m:boxPr et_m_brk, //m:brk et_m_brkBin, //m:brkBin et_m_brkBinSub, //m:brkBinSub et_m_cGp, //m:cGp et_m_cGpRule, //m:cGpRule et_m_chr, //m:chr et_m_count, //m:count et_m_cSp, //m:cSp et_m_ctrlPr, //m:ctrlPr et_m_d, //m:d et_m_defJc, //m:defJc et_m_deg, //m:deg et_m_degHide, //m:degHide et_m_den, //m:den et_m_diff, //m:diff et_m_dispDef, //m:dispDef et_m_dPr, //m:dPr et_m_e, //m:e et_m_endChr, //m:endChr et_m_eqArr, //m:eqArr et_m_eqArrPr, //m:eqArrPr et_m_f, //m:f et_m_fName, //m:fName et_m_fPr, //m:fPr et_m_func, //m:func et_m_funcPr, //m:funcPr et_m_groupChr, //m:groupChr et_m_groupChrPr, //m:groupChrPr et_m_grow, //m:grow et_m_hideBot, //m:hideBot et_m_hideLeft, //m:hideLeft et_m_hideRight, //m:hideRight et_m_hideTop, //m:hideTop et_m_interSp, //m:interSp et_m_intLim, //m:intLim et_m_intraSp, //m:intraSp et_m_jc, //m:jc et_m_lim, //m:lim et_m_limLoc, //m:limLoc et_m_limLow, //m:limLow et_m_limLowPr, //m:limLowPr et_m_limUpp, //m:limUpp et_m_limUppPr, //m:limUppPr et_m_lit, //m:lit et_m_lMargin, //m:lMargin et_m_m, //m:m et_m_mathFont, //m:mathFont et_m_mathPr, //m:mathPr et_m_maxDist, //m:maxDist et_m_mc, //m:mc et_m_mcJc, //m:mcJc et_m_mcPr, //m:mPr et_m_mcs, //m:mcs et_m_mPr, //m:mPr et_m_mr, //m:mr et_m_nary, //m:nary et_m_naryLim, //m:naryLim et_m_naryPr, //m:naryPr et_m_noBreak, //m:noBreak et_m_nor, //m:nor et_m_num, //m:num et_m_objDist, //m:objDist et_m_oMath, //m:oMath et_m_oMathPara, // m:oMathPara et_m_oMathParaPr, //m:oMathParaPr et_m_opEmu, //m:opEmu et_m_phant, //m:phant et_m_phantPr, //m:phantPr et_m_plcHide, //m:plcHide et_m_pos, //m:pos et_m_postSp, //m:postSp et_m_preSp, //m:preSp et_m_r, //m:r et_m_rad, //m:rad et_m_radPr, //m:radPr et_m_rMargin, //m:rMargin et_m_rPr, //m:rPr et_m_rSp, //m:rSp et_m_rSpRule, //m:rSpRule et_m_scr, //m:scr et_m_sepChr, //m:sepChr et_m_show, //m:show et_m_shp, //m:shp et_m_smallFrac, //m:smallFrac et_m_sPre, //m:sPre et_m_sPrePr, //m:sPrePr et_m_sSub, //m:sSub et_m_sSubPr, //m:sSubPr et_m_sSubSup, //m:sSubSup et_m_sSubSupPr, //m:sSubSupPr et_m_sSup, //m:sSup et_m_sSupPr, //m:sSupPr et_m_strikeBLTR, //m:strikeBLTR et_m_strikeH, //m:strikeH et_m_strikeTLBR, //m:strikeTLBR et_m_strikeV, //m:strikeV et_m_sty, //m:sty et_m_sub, //m:sub et_m_subHide, //m:subHide et_m_sup, //m:sup et_m_supHide, //m:supHide et_m_t, //m:t et_m_transp, //m:transp et_m_type, //m:type et_m_vertJc, //m:vertJc et_m_wrapIndent, //m:wrapIndent et_m_wrapRight, //m:wrapRight et_m_zeroAsc, //m:zeroAsc et_m_zeroDesc, //m:zeroDesc et_m_zeroWid, //m:zeroWid et_mc_alternateContent, // et_o_bottom, // et_o_callout, // et_o_clippath, // et_o_colormenu, // et_o_colormru, // et_o_column, // et_o_complex, // et_o_diagram, // et_o_entry, // et_o_equationXml, // et_o_extrusion, // et_o_FieldCodes, // et_o_fill, // et_o_idmap, // et_o_ink, // et_o_left, // et_o_LinkType, // et_o_lock, // et_o_LockedField, // et_o_OLEObject, // et_o_proxy, // et_o_r, // et_o_regrouptable, // et_o_rel, // et_o_relationtable, // et_o_right, // et_o_rules, // et_o_shapedefaults, // et_o_shapelayout, // et_o_signatureline, // et_o_skew, // et_o_top, // et_pic_blipFill, // et_pic_cNvPicPr, // et_pic_cNvPr, // et_pic_nvPicPr, // et_pic_spPr, // et_pic_pic, // et_x_cNvPr, // et_x_spPr, // et_x_groupSpPr, // et_c_chart, // et_c_spPr, et_sl_schema, // et_sl_schemaLibrary, // et_v_arc, // et_v_background, // et_v_curve, // et_v_f, // et_v_fill, // et_v_formulas, // et_v_group, // et_v_h, // et_v_handles, // et_v_image, // et_v_imagedata, // et_v_line, // et_v_oval, // et_v_path, // et_v_polyline, // et_v_rect, // et_v_roundrect, // et_v_shadow, // et_v_shape, // et_v_shapetype, // et_v_stroke, // et_v_textbox, // et_v_textpath, // et_v_ClientData, // et_v_shape_elements, et_v_shape_attrs, et_w_abstractNum, // et_w_activeWritingStyle, // et_w_annotationRef, // et_w_autoCaption, // et_w_autoCaptions, // et_w_background, // et_w_bdo, // et_w_binData, // et_w_bgPict, // et_w_docSuppData, // et_w_bookmarkEnd, // et_w_bookmarkStart, // et_w_br, // et_w_caption, // et_w_captions, // et_w_characterSpacingControl, // et_w_checkBox, // et_w_clrSchemeMapping, // et_w_cols, // et_w_comboBox, // et_w_textFormPr, // custom! et_w_formPr,// custom! et_w_complexFormPr, // custom! et_w_comment, // et_w_commentRangeEnd, // et_w_commentRangeStart, // et_w_commentReference, // et_w_compat, // et_w_compatSetting, // et_w_contentPart, // et_w_nvContentPartPr, // et_w_continuationSeparator, // et_w_control, // et_w_customXmlDelRangeEnd, // et_w_customXmlDelRangeStart, // et_w_customXmlInsRangeEnd, // et_w_customXmlInsRangeStart, // et_w_customXmlMoveFromRangeEnd, // et_w_customXmlMoveFromRangeStart, // et_w_customXmlMoveToRangeEnd, // et_w_customXmlMoveToRangeStart, // et_w_cr, // et_w_date, // et_w_dayLong, // et_w_dayShort, // et_w_ddList, // et_w_del, // et_w_delInstrText, // et_w_delText, // et_w_drawing, // et_w_docDefaults, // et_w_docPartList, // et_w_documentProtection, // et_w_documentType, // et_w_docVar, // et_w_docVars, // et_w_dropDownList, // et_w_endnote, // et_w_endnotePr, // et_w_endnoteRef, // et_w_endnoteReference, // et_w_ffData, // et_w_fldChar, // et_w_fldSimple, // et_w_fonts, // et_w_font, // et_w_footnote, // et_w_footnotePr, // et_w_footnoteRef, // et_w_footnoteReference, // et_w_ftr, // et_w_hdr, // et_w_hdrShapeDefaults, // et_w_headers, // et_w_hyperlink, // et_w_altChunk, // et_w_altChunkPr, // et_w_ins, // et_w_instrText, // et_w_latentStyles, // et_w_lastRenderedPageBreak, // et_w_lvl, // et_w_lvlOverride, // et_w_monthLong, // et_w_monthShort, // et_w_moveFrom, // et_w_moveTo, // et_w_moveFromRangeEnd, // et_w_moveFromRangeStart, // et_w_moveToRangeEnd, // et_w_moveToRangeStart, // et_w_numbering, // et_w_num, // et_w_numPicBullet, // et_w_numPr, // et_w_noLineBreaksAfter, // et_w_noLineBreaksBefore, // et_w_nonBreakHyphen, // et_w_object, // et_w_p, // et_w_pBdr, // et_w_permEnd, // et_w_permStart, // et_w_pgBorders, // et_w_pgNum, // et_w_pict, // et_w_placeholder, // et_w_pPr, // et_w_pPrChange, // et_w_proofErr, // et_w_proofState, // et_w_ptab, // et_w_r, // et_w_readModeInkLockDown, // et_w_revisionView, // et_w_rsids, // et_w_rPr, // et_w_rPrChange, // et_w_ruby, // et_w_saveThroughXslt, // et_w_sdt, // et_w_sdtContent, // et_w_dir, // et_w_sdtEndPr, // et_w_sdtPr, // et_w_sdtCheckbox, // et_w_sdtPicture, // et_w_sdtCheckboxSymbol, // et_w_sectPr, // et_w_sectPrChange, // et_w_separator, // et_w_shapeDefaults, // et_w_smartTag, // et_w_smartTagType, // et_w_softHyphen, // et_w_wordDocument, // et_w_document, // et_w_settings, // et_w_style, // et_w_styles, // et_w_stylePaneFormatFilter, // et_w_stylePaneSortMethod, // et_w_sym, // et_w_t, // et_w_tab, // et_w_tabs, // et_w_tbl, // et_w_tblBorders, // et_w_tblCellMar, // et_w_tblGrid, // et_w_tblGridChange, // et_w_tblPr, // et_w_tblPrChange, // et_w_tblPrEx, // et_w_tblPrExChange, // et_w_tblStylePr, // et_w_tc, // et_w_tcBorders, // et_w_tcMar, // et_w_tcPr, // et_w_tcPrChange, // et_w_textInput, // et_w_tr, // et_w_trPr, // et_w_trPrChange, // et_w_txbxContent, // et_w_writeProtection, // et_w_yearLong, // et_w_yearShort, // et_w_zoom, // et_w_docParts, et_w_docPart, et_w_docPartBody, et_w_docPartPr, et_w_docPartCategory, et_w_docPartTypes, et_w_docPartBehaviors, et_w_stylisticSets, et_wd_anchorLock, // et_wd_borderbottom, // et_wd_borderleft, // et_wd_borderright, // et_wd_bordertop, // et_wd_wrap, // et_wp_anchor, // et_wp_cNvGraphicFramePr, // et_wp_docPr, // et_wp_effectExtent, // et_wp_extent, // et_wp_inline, // et_wp_positionH, // et_wp_positionV, // et_wp_sizeRelH, // et_wp_sizeRelV, // et_wp_wrapNone, // et_wp_wrapPolygon, // et_wp_wrapSquare, // et_wp_wrapThrough, // et_wp_wrapTight, // et_wp_wrapTopAndBottom, // et_w15_presenceInfo, // et_w15_person, // et_w15_commentEx, // et_w16_commentId, // et_w16_commentExtensible, // et_w_ShapeTextBody, // et_w_Shape, // et_w_GroupShape, // et_w_LockedCanvas, // et_w_cNvPr, // et_w_spPr, // et_w_groupSpPr, // et_w_ConnectionNonVisualShapeProps,// et_w_NonVisualGroupShapeDrawingProps,// et_w_ConnectionNonVisualConnShapeProps, et_w_ShapeNonVisual, // et_ct_extlst, et_ct_ChartSpace, et_ct_boolean, et_ct_relid, et_ct_pagesetup, et_ct_pagemargins, et_ct_headerfooter, et_ct_printsettings, et_ct_externaldata, et_ct_dispblanksas, et_ct_unsignedint, et_ct_extension, et_ct_layout, et_ct_manuallayout, et_ct_layouttarget, et_ct_layoutmode, et_ct_double, et_ct_dtable, et_ct_serax, et_ct_scaling, et_ct_logbase, et_ct_orientation, et_ct_axpos, et_ct_chartlines, et_ct_title, et_ct_tx, et_ct_strref, et_ct_strdata, et_ct_strval, et_ct_numfmt, et_ct_tickmark, et_ct_ticklblpos, et_ct_crosses, et_ct_skip, et_ct_timeunit, et_ct_dateax, et_ct_lbloffset, et_ct_axisunit, et_ct_lblalgn, et_ct_catax, et_ct_dispunitslbl, et_ct_builtinunit, et_ct_dispunits, et_ct_crossbetween, et_ct_valax, et_ct_sizerepresents, et_ct_bubblescale, et_ct_bubbleser, et_ct_sertx, et_ct_dpt, et_ct_marker, et_ct_markerstyle, et_ct_markersize, et_ct_pictureoptions, et_ct_pictureformat, et_ct_picturestackunit, et_ct_dlbls, et_ct_dlbl, et_ct_dlblpos, et_ct_trendline, et_ct_trendlinetype, et_ct_order, et_ct_period, et_ct_trendlinelbl, et_ct_errbars, et_ct_errdir, et_ct_errbartype, et_ct_errvaltype, et_ct_numdatasource, et_ct_numdata, et_ct_numval, et_ct_numref, et_ct_axdatasource, et_ct_multilvlstrref, et_ct_lvl, et_ct_multilvlstrdata, et_ct_bubblechart, et_ct_bandfmts, et_ct_surface3dchart, et_ct_surfaceser, et_ct_bandfmt, et_ct_surfacechart, et_ct_secondpiesize, et_ct_splittype, et_ct_ofpietype, et_ct_custsplit, et_ct_ofpiechart, et_ct_pieser, et_ct_gapamount, et_ct_bar3dchart, et_ct_bardir, et_ct_bargrouping, et_ct_barser, et_ct_shape, et_ct_overlap, et_ct_barchart, et_ct_holesize, et_ct_doughnutchart, et_ct_firstsliceang, et_ct_pie3dchart, et_ct_piechart, et_ct_scatterser, et_ct_scatterstyle, et_ct_scatterchart, et_ct_radarser, et_ct_radarstyle, et_ct_radarchart, et_ct_stockchart, et_ct_lineser, et_ct_updownbars, et_ct_updownbar, et_ct_line3dchart, et_ct_grouping, et_ct_linechart, et_ct_area3dchart, et_ct_areaser, et_ct_areachart, et_ct_thickness, et_ct_surface, et_ct_perspective, et_ct_depthpercent, et_ct_roty, et_ct_hpercent, et_ct_rotx, et_ct_view3d, et_ct_pivotfmt, et_ct_pivotfmts, et_ct_protection, et_ct_pivotsource, et_ct_style1, et_ct_style, et_ct_textlanguageid, et_ct_Chart, et_ct_ChartStyle, et_ct_Title, et_ct_Tx, et_ct_Rich, et_ct_Legend, et_ct_Overlay, et_ct_LegendPos, et_ct_LegendEntry, et_ct_Layout, et_ct_ManualLayout, et_ct_PlotArea, et_ct_CatAx, et_ct_ValAx, et_ct_CatAy, et_ct_ValAy, et_ct_BasicChart, et_ct_Series, et_ct_NumPoint, et_ct_NumCache, et_ct_NumCacheRef, et_ct_NumCacheValues, et_ct_SeriesCat, et_ct_StrCacheRef, et_ct_SeriesTx, et_ct_SeriesMarker, et_ct_SeriesDataLabels, et_ct_SeriesShapeProperties, et_ct_SeriesShapeIndex, et_ct_SeriesShapeOrder, et_ct_SeriesShapeOutline, et_ct_alternatecontent, et_ct_alternatecontentchoice, et_ct_alternatecontentfallback, et_ct_CategoryFilterExceptions, et_ct_CategoryFilterException, et_ct_SeriesDataLabelsRange, et_ct_SeriesFiltering, et_ct_TickMarks, et_ct_Gridlines, et_ct_DataPoint, et_ct_DataLabels, et_ct_DataLabel, et_ct_DataLabelHidden, et_ct_NumberFormat, et_ct_SeriesLayoutProperties, et_ct_Subtotals, et_ct_Statistics, et_ct_Binning, et_ct_DataLabelVisibilities, et_ct_SeriesElementVisibilities, et_ct_StringValue, et_ct_StringLevel, et_ct_NumericValue, et_ct_NumericLevel, et_ct_Text, et_ct_TextData, et_ct_Formula, et_ct_CatScaling, et_ct_ValScaling, et_ct_AxisUnitsLabel, et_ct_AxisUnit, et_ct_Axis, et_ct_PlotSurface, et_ct_PlotAreaRegion, et_ct_Data, et_ct_StrDimension, et_ct_NumDimension, et_ct_ChartData, et_ct_ExternalData, et_cs_ChartStyle, et_cs_StyleEntry, et_cs_MarkerLayout, et_cs_ColorStyle, et_cs_SchemeClr, et_cs_Variation, et_cdr_FromTo, et_cdr_Ext, et_cdr_RelSizeAnchor, et_cdr_AbsSizeAnchor, et_x_Unknown, et_x_SpreadsheetFlat, et_x_BookViews, // et_x_Workbook, et_x_WorkbookPr, et_x_WorkbookProtection, et_x_WorkbookView, // et_x_FileSharing, et_x_DefinedNames, // et_x_DefinedName, // et_x_Sheets, // et_x_Sheet, // et_x_ExternalReference, et_x_ExternalReferences, et_x_Si, // et_x_PhoneticPr, // et_x_r, // et_x_rPr, // et_x_rPh, // et_x_t, // et_x_Borders, // et_x_Border, et_x_BorderProp, et_x_CalcPr, // et_x_CellStyles, et_x_CellStyle, et_x_CellStyleXfs, et_x_CellXfs, et_x_Xfs, et_x_Aligment, et_x_Protection, et_x_Colors, et_x_Color, et_x_RgbColor, et_x_IndexedColors, et_x_MruColors, et_x_Dxfs, et_x_Dxf, et_x_Fills, et_x_Fill, et_x_GradientFill, et_x_GradientStop, et_x_PatternFill, et_x_BgColor, et_x_FgColor, et_x_Fonts, et_x_Font, et_x_NumFmts, et_x_NumFmt, et_x_TableStyles, et_x_TableStyle, et_x_TableStyleElement, et_x_SheetData, et_x_Row, et_x_Cell, et_x_Formula, et_x_Data, et_x_Cols, et_x_Col, et_x_Hyperlinks, et_x_Hyperlink, et_x_PageMargins, et_x_PageSetup, et_x_PrintOptions, et_x_MergeCells, et_x_MergeCell, et_x_Dimension, et_x_SheetFormatPr, et_x_CellAnchor, et_x_Pic, et_x_BlipFill, et_x_Blip, et_x_FromTo, et_x_Pos, et_x_Ext, et_x_ClientData, et_x_CalcCell, et_x_SheetViews, et_x_SheetView, et_x_ProtectedRanges, et_x_ProtectedRange, et_x_CellWatches, et_x_CellWatch, et_x_GraphicFrame, et_x_Graphic, et_x_GraphicData, et_x_OleObjects, et_x_OleObject, et_x_OleObjectPr, et_x_ExtAnchor, et_x_Controls, et_x_Control, et_x_ControlPr, et_x_OcxPr, et_x_QueryTable, et_x_QueryTableField, et_x_QueryTableFields, et_x_QueryTableRefresh, et_x_QueryTableDeletedFields, et_x_QueryTableDeletedField, et_x_Connections, et_x_Connection, et_x_rangePr, et_x_dbPr, et_x_textPr, et_x_olapPr, et_x_webPr, et_x_parameter, et_x_parameters, et_x_textFields, et_x_textField, et_x_TableParts, et_x_TablePart, et_x_Table, et_x_TableColumns, et_x_TableColumn, et_x_TableStyleInfo, et_x_xmlColumnPr, et_x_AltTextTable, et_x_SortState, et_x_SortCondition, et_x_Autofilter, et_x_FilterColumn, et_x_ColorFilter, et_x_DynamicFilter, et_x_CustomFilters, et_x_Filters, et_x_Filter, et_x_DateGroupItem, et_x_Authors, et_x_CommentList, et_x_Comment, et_x_ThreadedComments, et_x_ThreadedComment, et_x_ThreadedCommentMentions, et_x_ThreadedCommentMention, et_x_PersonList, et_x_Person, et_x_ConditionalFormatting, et_x_ConditionalFormattingRule, et_x_ColorScale, et_x_DataBar, et_x_FormulaCF, et_x_IconSet, et_x_ConditionalFormatValueObject, et_x_ConditionalFormatIconSet, et_x_PageSetUpPr, et_x_OutlinePr, et_x_SheetPr, et_x_Pane, et_x_ExternalBook, et_x_ExternalSheetNames, et_x_ExternalDefinedNames, et_x_ExternalDefinedName, et_x_ExternalSheetDataSet, et_x_ExternalSheetData, et_x_ExternalRow, et_x_ExternalCell, et_x_AlternateUrls, et_x_OleLink, et_x_OleItems, et_x_OleItem, et_x_DdeLink, et_x_DdeItems, et_x_DdeItem, et_x_DdeValues, et_x_DdeValue, et_x_Selection, et_x_LegacyDrawingWorksheet, et_x_LegacyDrawingHFWorksheet, et_x_PictureWorksheet, et_x_HeaderFooterWorksheet, et_x_HeaderFooterElementWorksheet, et_x_Break, et_x_RowColBreaks, et_x_SheetProtection, et_x_DataValidations, et_x_DataValidation, et_x_DataValidationFormula, et_x_DataConsolidate, et_x_DataRefs, et_x_DataRef, et_x_FormControlPr, et_x_ListItems, et_x_ListItem, et_x_UserProtectedRange, et_x_UserProtectedRanges, et_x_WorkbookPivotCache, et_x_WorkbookPivotCaches, et_x_PivotTableDefinition, et_x_PivotCacheDefinition, et_x_PivotCacheDefinitionExt, et_x_PivotCacheRecords, et_x_ColumnRowFields, et_x_ColumnRowItems, et_x_Field, et_x_ColumnRowItem, et_x_DataField, et_x_DataFields, et_x_PageField, et_x_PageFields, et_x_PivotField, et_x_PivotFields, et_x_FieldItem, et_x_FieldItems, et_x_AutoSortScope, et_x_PivotArea, et_x_References, et_x_Reference, et_x_PivotTableLocation, et_x_PivotTableFormats, et_x_PivotTableFormat, et_x_PivotTableStyleInfo, et_x_PivotTableFilters, et_x_PivotTableFilter, et_x_PivotCacheFields, et_x_PivotCacheField, et_x_SharedItems, et_x_FieldGroupProperties, et_x_DiscreteGroupingProperties, et_x_RangeGroupingProperties, et_x_OLAPGroupItems, et_x_PivotCacheSource, et_x_WorksheetSource, et_x_ConsolidationSource, et_x_PageItemValues, et_x_PageItems, et_x_PageItem, et_x_RangeSets, et_x_RangeSet, et_x_PivotCharacterValue, et_x_PivotBooleanValue, et_x_PivotErrorValue, et_x_PivotDateTimeValue, et_x_PivotNoValue, et_x_PivotNumericValue, et_x_PivotCacheRecord, et_x_SharedItemsIndex, et_x_MemberPropertyIndex, et_x_SlicerCacheDefinition, et_x_SlicerCachePivotTable, et_x_SlicerCacheData, et_x_OlapSlicerCache, et_x_TabularSlicerCache, et_x_OlapSlicerCacheLevelsData, et_x_OlapSlicerCacheSelections, et_x_TabularSlicerCacheItems, et_x_OlapSlicerCacheLevelData, et_x_OlapSlicerCacheSelection, et_x_TabularSlicerCacheItem, et_x_OlapSlicerCacheRange, et_x_OlapSlicerCacheItemParent, et_x_OlapSlicerCacheItem, et_x_SlicerCacheOlapLevelName, et_x_SlicerCacheHideNoData, et_x_TableSlicerCache, et_x_SlicerStyleElement, et_x_Slicer, et_x_SlicerCache, et_x_SlicerRef, et_x_SlicerStyle, et_x_Slicers, et_x_SlicerCaches, et_x_SlicerRefs, et_x_SlicerStyles, et_x_SortRule, et_x_SortRules, et_x_ColumnFilter, et_x_NsvFilter, et_x_NamedSheetView, et_x_NamedSheetViews, et_x_SparklineGroups, et_x_SparklineGroup, et_x_Sparklines, et_x_Sparkline, et_x_Style2003, et_x_TimelineCachePivotTable, et_x_TimelineRange, et_x_TimelineCachePivotTables, et_x_Timeline, et_x_Timelines, et_x_TimelineCacheDefinition, et_x_TimelinePivotFilter, et_x_TimelineState, et_x_TimelineRefs, et_x_TimelineRef, et_x_TimelineCacheRefs, et_x_TimelineCacheRef, et_x_Timeslicer, et_x_TimelineStyles, et_x_TimelineStyle, et_x_TimelineStyleElement, et_x_Metadata, et_x_FutureMetadata, et_x_FutureMetadataBlock, et_x_MetadataType, et_x_MetadataTypes, et_x_MetadataBlocks, et_x_MetadataBlock, et_x_MetadataRecord, et_x_MetadataString, et_x_MetadataStrings, et_x_MdxMetadata, et_x_Mdx, et_x_MdxTuple, et_x_MetadataStringIndex, et_x_MdxSet, et_x_MdxMemeberProp, et_x_MdxKPI, et_x_DynamicArrayProperties, et_x_RichValueBlock, et_x_MapInfo, et_x_Schema, et_x_Map, et_x_DataBinding, et_x_SingleXmlCells, et_x_SingleXmlCell, et_x_xmlCellPr, et_x_xmlPr, et_dr_Masters, et_dr_Pages, et_dr_DocumentSettings, et_dr_ColorEntry, et_dr_Colors, et_dr_FaceName, et_dr_FaceNames, et_dr_StyleSheet, et_dr_StyleSheets, et_dr_EventItem, et_dr_EventList, et_dr_DocumentSheet, et_dr_HeaderFooter, et_dr_Shapes, et_dr_Shape, et_dr_Cell, et_dr_Trigger, et_dr_Section, et_dr_Row, et_dr_Text, et_dr_text_cp, et_dr_text_pp, et_dr_text_tp, et_dr_text_fld, et_dr_text_text, et_dr_ForeignData, et_dr_Rel, et_dr_RefBy, et_dr_Connects, et_dr_Connect, et_dr_Page, et_dr_Master, et_dr_PageSheet, et_dr_Icon, et_dr_DataConnections, et_dr_DataConnection, et_dr_DataRecordSets, et_dr_DataRecordSet, et_dr_DataColumns, et_dr_DataColumn, et_dr_PrimaryKey, et_dr_RowKeyValue, et_dr_RowMap, et_dr_RefreshConflict, et_dr_AutoLinkComparison, et_dr_ADOData, et_dr_Windows, et_dr_Window, et_dr_SnapAngles, et_dr_SnapAngle, et_dr_PublishSettings, et_dr_PublishedPage, et_dr_RefreshableData, et_dr_Solutions, et_dr_Solution, et_dr_Issues, et_dr_Issue, et_dr_IssueTarget, et_dr_RuleInfo, et_dr_Rule, et_dr_RuleSet, et_dr_RuleSets, et_dr_CRuleFormula, et_dr_RuleSetFlags, et_dr_ValidationProperties, et_dr_Comments, et_dr_CommentList, et_dr_AuthorList, et_dr_CommentEntry, et_dr_AuthorEntry }; class File; class Document { public: Document(); virtual ~Document(); std::wstring m_sDocumentPath; std::wstring m_sTempPath; std::map> m_mapContent; }; class WritingElement { public: WritingElement(OOX::Document *pMain = NULL); virtual ~WritingElement(); virtual void fromXML(XmlUtils::CXmlNode& node) = 0; virtual std::wstring toXML() const = 0; virtual EElementType getType() const { return OOX::et_Unknown; } virtual void fromXML(XmlUtils::CXmlLiteReader& oReader) {} virtual void fromPPTY(NSBinPptxRW::CBinaryFileReader* pReader); virtual void toPPTY(NSBinPptxRW::CBinaryFileWriter* pWriter) const; virtual void toXmlWriter(NSBinPptxRW::CXmlWriter* pWriter) const; public: OOX::Document *m_pMainDocument; }; template class WritingElementWithChilds : public WritingElement { public: std::vector m_arrItems; WritingElementWithChilds(OOX::Document *pMain = NULL) : WritingElement(pMain){} virtual ~WritingElementWithChilds() { ClearItems(); } virtual void ClearItems() { for (size_t i = 0; i < m_arrItems.size(); ++i) { if (m_arrItems[i]) delete m_arrItems[i]; } m_arrItems.clear(); } }; }