Files
Yajbir Singh f1b860b25c
Some checks failed
check / markdownlint (push) Has been cancelled
check / spellchecker (push) Has been cancelled
updated
2025-12-11 19:03:17 +05:30

793 lines
28 KiB
C++

/*
* (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 "../../Common/CPOptional.h"
#include "../../../OOXML/Base/SmartPtr.h"
#include "../../../OOXML/DocxFormat/Math/oMathContent.h"
#include "../../../OOXML/DocxFormat/Logic/VmlWord.h"
#include <vector>
#include <string>
namespace cpdoccore
{
namespace odf_types
{
class color;
class length;
class text_align;
class font_size;
class length_or_percent;
}
namespace odf_writer
{
class odf_conversion_context;
class text_format_properties;
class paragraph_format_properties;
class chart_format_properties;
class graphic_format_properties;
class style_graphic_properties;
class style_section_properties;
class style_table_properties;
class style_table_cell_properties;
class style_table_row_properties;
class style_table_column_properties;
class style_drawing_page_properties;
namespace package
{
class odf_document;
}
}
}
namespace OOX
{
class WritingElement;
class IFileContainer;
class File;
class JsaProject;
namespace Drawing
{
//class CDiagrammParts;
//class CPresetTextShape;
class CInline;
class CAnchor;
class COfficeArtExtensionList;
class COfficeArtExtension;
}
namespace Spreadsheet
{
class IFileContainer;
class CChartSpace;
class CT_extLst;
class CT_ChartSpace;
class CT_Boolean;
class CT_RelId;
class CT_PageSetup;
class CT_PageMargins;
class CT_HeaderFooter;
class CT_PrintSettings;
class CT_ExternalData;
class CT_DispBlanksAs;
class CT_LegendEntry;
class CT_UnsignedInt;
class CT_Extension;
class CT_LegendPos;
class CT_Legend;
class CT_Layout;
class CT_ManualLayout;
class CT_LayoutTarget;
class CT_LayoutMode;
class CT_Double;
class CT_DTable;
class CT_SerAx;
class CT_Scaling;
class CT_LogBase;
class CT_Orientation;
class CT_AxPos;
class CT_ChartLines;
class CT_Title;
class CT_Tx;
class CT_StrRef;
class CT_StrData;
class CT_StrVal;
class CT_NumFmt;
class CT_TickMark;
class CT_TickLblPos;
class CT_Crosses;
class CT_Skip;
class CT_TimeUnit;
class CT_DateAx;
class CT_LblOffset;
class CT_AxisUnit;
class CT_LblAlgn;
class CT_CatAx;
class CT_DispUnitsLbl;
class CT_BuiltInUnit;
class CT_DispUnits;
class CT_CrossBetween;
class CT_ValAx;
class CT_SizeRepresents;
class CT_BubbleScale;
class CT_BubbleSer;
class CT_SerTx;
class CT_DPt;
class CT_Marker;
class CT_MarkerStyle;
class CT_MarkerSize;
class CT_PictureOptions;
class CT_PictureFormat;
class CT_PictureStackUnit;
class CT_DLbls;
class CT_DLbl;
class CT_DLblPos;
class CT_Trendline;
class CT_TrendlineType;
class CT_Order;
class CT_Period;
class CT_TrendlineLbl;
class CT_ErrBars;
class CT_ErrDir;
class CT_ErrBarType;
class CT_ErrValType;
class CT_NumDataSource;
class CT_NumData;
class CT_NumVal;
class CT_NumRef;
class CT_AxDataSource;
class CT_MultiLvlStrRef;
class CT_lvl;
class CT_MultiLvlStrData;
class CT_BubbleChart;
class CT_bandFmts;
class CT_Surface3DChart;
class CT_SurfaceSer;
class CT_BandFmt;
class CT_SurfaceChart;
class CT_SecondPieSize;
class CT_SplitType;
class CT_OfPieType;
class CT_custSplit;
class CT_OfPieChart;
class CT_PieSer;
class CT_GapAmount;
class CT_Bar3DChart;
class CT_BarDir;
class CT_BarGrouping;
class CT_BarSer;
class CT_Shape;
class CT_Overlap;
class CT_BarChart;
class CT_HoleSize;
class CT_DoughnutChart;
class CT_FirstSliceAng;
class CT_Pie3DChart;
class CT_PieChart;
class CT_ScatterSer;
class CT_ScatterStyle;
class CT_ScatterChart;
class CT_RadarSer;
class CT_RadarStyle;
class CT_RadarChart;
class CT_StockChart;
class CT_LineSer;
class CT_UpDownBars;
class CT_UpDownBar;
class CT_Line3DChart;
class CT_Grouping;
class CT_LineChart;
class CT_Area3DChart;
class CT_AreaSer;
class CT_AreaChart;
class CT_PlotArea;
class CT_Thickness;
class CT_Surface;
class CT_Perspective;
class CT_DepthPercent;
class CT_RotY;
class CT_HPercent;
class CT_RotX;
class CT_View3D;
class CT_PivotFmt;
class CT_pivotFmts;
class CT_Chart;
class CT_Protection;
class CT_PivotSource;
class CT_Style1;
class CT_Style;
class CT_TextLanguageID;
class CTextProperties;
class CBaseSer;
namespace ChartEx
{
class CChartSpace;
class CChart;
class CChartData;
class CData;
class CDimension;
class CPlotArea;
class CLegend;
class CAxis;
class CTickMarks;
class CGridlines;
class CValScaling;
class CCatScaling;
class CSeries;
class CDataLabels;
class CTitle;
}
}
class CSizeAnchor;
namespace Vml
{
class CShapeType;
class CShape;
class CImage;
class CImageData;
class CArc;
class CBackground;
class CCurve;
class CFill;
class CLine;
class COval;
class CPath ;
class CPolyLine ;
class CRect;
class CRoundRect;
class CShadow;
class CStroke;
class CTextbox;
class CTextPath;
class CGroup;
class CVmlCommonElements;
class CFormulas;
}
namespace VmlWord
{
class CWrap;
}
namespace Logic
{
class CDeg;
class CDen;
class CElement;
class CFName;
class CLim;
class CNum;
class COMath;
class CSub;
class CSup;
class CCtrlPr;
class CAcc;
class CAccPr;
class CArgPr;
class CBar;
class CBarPr;
class CBorderBox;
class CBorderBoxPr;
class CBox;
class CBoxPr;
class CBrk;
class CDelimiter;
class CDelimiterPr;
class CEqArr;
class CEqArrPr;
class CFPr;
class CFraction;
class CFunc;
class CFuncPr;
class CGroupChr;
class CGroupChrPr;
class CLimLow;
class CLimLowPr;
class CLimUpp;
class CLimUppPr;
class CMathFont;
class CMathPr;
class CMatrix;
class CMc;
class CMcPr;
class CMcs;
class CMDel;
class CMIns;
class CMPr;
class CMr;
class CMRPr;
class CMRun;
class CMText;
class CNary;
class CNaryPr;
class COMathPara;
class COMathParaPr;
class CPhant;
class CPhantPr;
class CRad;
class CRadPr;
class CSPre;
class CSPrePr;
class CSSub;
class CSSubPr;
class CSSubSup;
class CSSubSupPr;
class CSSup;
class CSSupPr;
//class CType;
//class CSupHide;
//class CSubHide;
//class CBegChr;
//class CEndChr;
//class CDiff;
//class CDegHide;
//class CChr;
//class CArgSz;
}
}
namespace SimpleTypes
{
namespace Vml
{
class CCssStyle;
}
}
namespace PPTX
{
class Theme;
namespace Logic
{
class Bullet;
class ClrMap;
class SpTreeElem;
class GraphicFrame;
class SpTree;
class Shape;
class CxnSp;
class Pic;
class SmartArt;
class ChartRec;
class SpPr;
class GrpSpPr;
class Xfrm;
class ShapeStyle;
class PrstTxWarp;
class PrstGeom;
class CustGeom;
class BlipFill;
class GradFill;
class SolidFill;
class PattFill;
class EffectLst;
class EffectDag;
class FontRef;
class StyleRef;
class Ln;
class Path2D;
class PathBase;
class TxBody;
class BodyPr;
class UniFill;
class UniColor;
class NvSpPr;
class CNvPr;
class CNvSpPr;
class CNvCxnSpPr;
class CNvGrpSpPr;
class NvCxnSpPr;
class NvGrpSpPr;
class NvPr;
class Paragraph;
class TxBody;
class TextListStyle;
class TextParagraphPr;
class TextSpacing;
class RunProperties;
class Run;
class Fld;
class Br;
class MathParaWrapper;
class NvGraphicFramePr;
class LineTo;
class MoveTo;
class ArcTo;
class QuadBezTo;
class CubicBezTo;
class Close;
class AhXY;
class AhPolar;
class EffectStyle;
class InnerShdw;
class OuterShdw;
class PrstShdw;
class AlphaModFix;
class Blur;
class FillOverlay;
class Glow;
class Reflection;
class SoftEdge;
class Grayscl;
class Duotone;
}
}
using namespace cpdoccore;
namespace Oox2Odf
{
struct returnValues
{
returnValues() : colorFlag(false), auxFlag(false), naryChr(false), narySubHide(false), narySupHide(false), begEndChrs(L"(", L")"), str(L"")
{}
bool colorFlag;
bool auxFlag;
bool naryChr;
bool narySubHide;
bool narySupHide;
std::pair<std::wstring, std::wstring> begEndChrs;
std::wstring str;
~returnValues() {}
};
class OoxConverter
{
public:
virtual bool convertDocument() = 0;
bool write(const std::wstring & out_path, const std::wstring & temp_path, const std::wstring & password, const std::wstring & documentID);
OoxConverter() : output_document(NULL), oox_current_child_document(NULL)
{
}
virtual ~OoxConverter()
{
m_mapVmlShapeTypes.clear();
}
void set_fonts_directory (const std::wstring & fontsPath);
void set_temp_directory (const std::wstring & tempPath);
bool encrypt_document (const std::wstring &password, const std::wstring & srcPath, const std::wstring & dstPath);
bool encrypt_file (const std::wstring &password, const std::wstring & srcPath, const std::wstring & dstPath, std::wstring &encrypt_info, int &size);
std::vector<double> current_font_size;
//.......................................................................................................................
virtual OOX::IFileContainer *current_document() = 0;
virtual cpdoccore::odf_writer::odf_conversion_context *odf_context() = 0;
virtual PPTX::Theme *oox_theme() = 0;
virtual PPTX::Logic::ClrMap *oox_clrMap() {return NULL;}
cpdoccore::odf_writer::package::odf_document *output_document;
std::wstring find_link_by (NSCommon::smart_ptr<OOX::File> & oFile, int type, bool & bExternal);
virtual std::wstring find_link_by_id(const std::wstring & sId, int type, bool & bExternal) = 0;
virtual NSCommon::smart_ptr<OOX::File> find_file_by_id(const std::wstring & sId) = 0;
OOX::IFileContainer *oox_current_child_document;
void convert_customs(OOX::IFileContainer* container);
void convert_meta(OOX::CApp *app, OOX::CCore *core);
void convert (OOX::JsaProject *jsaProject);
void convert (double oox_font_size, _CP_OPT(cpdoccore::odf_types::font_size) & odf_font_size);
bool convert (std::wstring sSchemeColor, DWORD & argb);
void convert_font(PPTX::Theme *theme, std::wstring & font);
//.......................................................................................................................
void convert(OOX::WritingElement *oox_unknown);
//drawingML & pptx................................................................................................................................
void convert(PPTX::Logic::SpTreeElem *oox_element);
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::CxnSp *oox_connect);
void convert(PPTX::Logic::Pic *oox_pic);
void convert(PPTX::Logic::GrpSpPr *oox_grpSpPr);
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);
void convert(PPTX::Logic::Xfrm *oox_xfrm);
void convert(PPTX::Logic::Xfrm *oox_txbx, PPTX::Logic::Xfrm *oox_xfrm);
int convert(PPTX::Logic::PrstTxWarp *oox_text_preset);
void convert(PPTX::Logic::PrstGeom *oox_geom);
void convert(PPTX::Logic::CustGeom *oox_geom);
void convert(PPTX::Logic::BlipFill *oox_fill);
void convert(PPTX::Logic::GradFill *oox_fill, DWORD ARGB = 0);
void convert(PPTX::Logic::SolidFill *oox_fill, DWORD ARGB = 0);
void convert(PPTX::Logic::PattFill *oox_fill, DWORD ARGB = 0);
void convert(PPTX::Logic::Ln *oox_line, DWORD ARGB = 0, PPTX::Logic::ShapeStyle* oox_sp_style = NULL);
void convert(PPTX::Logic::FontRef *oox_fontRef);
void convert(PPTX::Logic::StyleRef *oox_styleRef, int type);
void convert(PPTX::Logic::Path2D *oox_path2D);
void convert(PPTX::Logic::PathBase *oox_path);
void convert(PPTX::Logic::UniFill *oox_fill, DWORD ARGB = 0);
void convert(PPTX::Logic::UniColor *color, DWORD & nARGB);
void convert(PPTX::Logic::UniColor *color, std::wstring & hexString, _CP_OPT(double) & opacity, DWORD ARGB = 0);
void convert(PPTX::Logic::NvSpPr *oox_nvSpPr);
void convert(PPTX::Logic::CNvPr *oox_cnvPr);
void convert(PPTX::Logic::CNvCxnSpPr *oox_cnvPr);
void convert(PPTX::Logic::CNvSpPr *oox_cnvSpPr);
void convert(PPTX::Logic::CNvGrpSpPr *oox_cnvGrpSpPr);
void convert(PPTX::Logic::NvCxnSpPr *oox_nvSpPr);
void convert(PPTX::Logic::NvGrpSpPr *oox_nvSpPr);
void convert(PPTX::Logic::NvPr *oox_nvPr);
void convert(PPTX::Logic::Paragraph *oox_para, PPTX::Logic::TextListStyle *oox_list_style = NULL);
void convert(PPTX::Logic::TextListStyle *oox_list_style);
void convert(PPTX::Logic::Hyperlink *oox_hyperlink);
void convert_list_level (PPTX::Logic::TextParagraphPr *oox_para_props, int level);
void convert(PPTX::Logic::TextListStyle *oox_list_style, int level, cpdoccore::odf_writer::paragraph_format_properties *paragraph_properties,
cpdoccore::odf_writer::text_format_properties *text_properties);
void convert(PPTX::Logic::TextParagraphPr *oox_para_props, cpdoccore::odf_writer::paragraph_format_properties *paragraph_properties,
cpdoccore::odf_writer::text_format_properties *text_properties);
void convert(PPTX::Logic::RunProperties *oox_run_props, cpdoccore::odf_writer::text_format_properties *text_properties);
void convert(PPTX::Logic::Run *oox_run);
void convert(PPTX::Logic::Fld *oox_fld);
void convert(PPTX::Logic::Br *oox_br);
void convert(PPTX::Logic::TxBody *oox_txBody, PPTX::Logic::ShapeStyle* oox_style = NULL);
void convert_chart_text(PPTX::Logic::TxBody *oox_txBody, bool only_properties = false);
void convert(PPTX::Logic::BodyPr *oox_bodyPr);
void convert_chart_text(PPTX::Logic::BodyPr *oox_bodyPr);
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::LineTo *oox_geom_path);
void convert(PPTX::Logic::MoveTo *oox_geom_path);
void convert(PPTX::Logic::ArcTo *oox_geom_path);
void convert(PPTX::Logic::QuadBezTo *oox_geom_path);
void convert(PPTX::Logic::CubicBezTo *oox_geom_path);
void convert(PPTX::Logic::Close *oox_geom_path);
void convert(PPTX::Logic::AhXY *oox_handle);
void convert(PPTX::Logic::AhPolar *oox_handle);
void convert(PPTX::Logic::EffectStyle *oox_effect, DWORD ARGB = 0);
void convert(PPTX::Logic::EffectLst *oox_effect_list, DWORD ARGB = 0);
void convert(PPTX::Logic::EffectDag *oox_effect_dag, DWORD ARGB = 0);
void convert(PPTX::Logic::InnerShdw *oox_effect, DWORD ARGB = 0);
void convert(PPTX::Logic::OuterShdw *oox_effect, DWORD ARGB = 0);
void convert(PPTX::Logic::PrstShdw *oox_effect, DWORD ARGB = 0);
void convert(PPTX::Logic::AlphaModFix *oox_effect, DWORD ARGB = 0);
void convert(PPTX::Logic::Blur *oox_effect, DWORD ARGB = 0);
void convert(PPTX::Logic::FillOverlay *oox_effect, DWORD ARGB = 0);
void convert(PPTX::Logic::Glow *oox_effect, DWORD ARGB = 0);
void convert(PPTX::Logic::Reflection *oox_effect, DWORD ARGB = 0);
void convert(PPTX::Logic::SoftEdge *oox_effect, DWORD ARGB = 0);
void convert(PPTX::Logic::Grayscl *oox_effect, DWORD ARGB = 0);
void convert(PPTX::Logic::Duotone *oox_effect, DWORD ARGB = 0);
//.chart............................................................................................................................
void convert(OOX::Spreadsheet::CT_ChartSpace *oox_chart);
void convert(OOX::Spreadsheet::CT_View3D *oox_view3D);
void convert(OOX::Spreadsheet::CT_Title *ct_title);
void convert(OOX::Spreadsheet::CT_Legend *ct_legend);
void convert(OOX::Spreadsheet::CT_LegendEntry *ct_legend);
void convert(OOX::Spreadsheet::CT_PlotArea *ct_plotArea);
void convert(OOX::Spreadsheet::CT_Surface *ct_surface, int type, bool chart3D);
void convert(OOX::Spreadsheet::CT_CatAx *ct_catAx);
void convert(OOX::Spreadsheet::CT_SerAx *ct_serAx);
void convert(OOX::Spreadsheet::CT_DateAx *ct_dateAx);
void convert(OOX::Spreadsheet::CT_ValAx *ct_valAx);
void convert(OOX::Spreadsheet::CT_Area3DChart *chart);
void convert(OOX::Spreadsheet::CT_AreaChart *chart);
void convert(OOX::Spreadsheet::CT_Bar3DChart *chart);
void convert_before(OOX::Spreadsheet::CT_Bar3DChart *chart);
void convert(OOX::Spreadsheet::CT_BarChart *chart);
void convert_before(OOX::Spreadsheet::CT_BarChart *chart);
void convert(OOX::Spreadsheet::CT_Line3DChart *chart);
void convert(OOX::Spreadsheet::CT_LineChart *chart);
void convert(OOX::Spreadsheet::CT_Pie3DChart *chart);
void convert(OOX::Spreadsheet::CT_PieChart *chart);
void convert(OOX::Spreadsheet::CT_Surface3DChart *chart);
void convert(OOX::Spreadsheet::CT_SurfaceChart *chart);
void convert(OOX::Spreadsheet::CT_BubbleChart *chart);
void convert(OOX::Spreadsheet::CT_DoughnutChart *chart);
void convert(OOX::Spreadsheet::CT_ScatterChart *chart);
void convert(OOX::Spreadsheet::CT_RadarChart *chart);
void convert(OOX::Spreadsheet::CT_StockChart *chart);
void convert(OOX::Spreadsheet::CT_OfPieChart *chart);
void convert(OOX::Spreadsheet::CBaseSer *chart);
void convert(OOX::Spreadsheet::CT_AreaSer *ser);
void convert(OOX::Spreadsheet::CT_BubbleSer *ser);
void convert(OOX::Spreadsheet::CT_SurfaceSer *ser);
void convert(OOX::Spreadsheet::CT_PieSer *ser);
void convert(OOX::Spreadsheet::CT_BarSer *ser);
void convert(OOX::Spreadsheet::CT_ScatterSer *ser);
void convert(OOX::Spreadsheet::CT_RadarSer *ser);
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::CT_Tx *ct_tx);
void convert(OOX::Spreadsheet::CT_Layout *ct_layout);
void convert(OOX::Spreadsheet::CT_ManualLayout *ct_layout);
void convert(OOX::Spreadsheet::CT_ChartLines *grid, int type);
void convert(OOX::Spreadsheet::CT_SerTx *ser_tx);
void convert(OOX::Spreadsheet::CT_DLbls *ser_lbls);
void convert(OOX::Spreadsheet::CT_Marker *marker, bool bFill);
void convert(OOX::Spreadsheet::CT_Marker *marker, std::vector<OOX::Spreadsheet::CT_DPt*> & dPt);
void convert(OOX::Spreadsheet::CT_ExternalData *external_data);
void convert(OOX::Spreadsheet::CT_NumData *num_data, bool categories, bool label);
void convert(OOX::Spreadsheet::CT_StrData *str_data, bool categories, bool label);
void convert(OOX::Spreadsheet::CT_DTable *dTable);
void convert(OOX::CSizeAnchor *sz_anchor, double x0, double y0, double width, double height);
//.chart.ex...........................................................................................................................
void convert(OOX::Spreadsheet::ChartEx::CChartSpace *oox_chart);
void convert(OOX::Spreadsheet::ChartEx::CTitle *ct_title);
void convert(OOX::Spreadsheet::ChartEx::CChart *oox_chart);
void convert(OOX::Spreadsheet::ChartEx::CChartData *oox_chart_data);
void convert(OOX::Spreadsheet::ChartEx::CPlotArea *oox_plot_area);
//.vml............................................................................................................................
void convert(OOX::Vml::CShapeType *vml_shape_type);
void convert(OOX::Vml::CShape *vml_shape, OOX::VmlOffice::COLEObject* vml_object);
void convert(OOX::Vml::CImage *vml_image);
void convert(OOX::Vml::CImageData *vml_image_data);
void convert(OOX::Vml::CArc *vml_arc);
void convert(OOX::Vml::CBackground *vml_background);
void convert(OOX::Vml::CCurve *vml_curve);
void convert(OOX::Vml::CFill *vml_fill);
void convert(OOX::Vml::CLine *vml_line);
void convert(OOX::Vml::COval *vml_oval);
void convert(OOX::Vml::CPolyLine *vml_polyline);
void convert(OOX::Vml::CRect *vml_rect);
void convert(OOX::Vml::CRoundRect *vml_roundrect);
void convert(OOX::Vml::CShadow *vml_shadow);
void convert(OOX::Vml::CStroke *vml_stroke);
void convert(OOX::Vml::CTextbox *vml_textbox);
void convert(OOX::Vml::CTextPath *vml_textpath);
void convert(SimpleTypes::Vml::CCssStyle *vml_style);
void convert(OOX::VmlWord::CWrap *vml_wrap);
void convert(OOX::Vml::CGroup *vml_group);
void convert(OOX::Vml::CVmlCommonElements *vml_attr);
void convert(OOX::Drawing::COfficeArtExtensionList *ext_list);
void convert(OOX::Drawing::COfficeArtExtension *art_ext);
//math............................................................................................................................
std::vector<std::vector<std::wstring>>& brackets();
int& lvl_of_me();
std::vector<int>& end_counter();
void lvl_up_counter_increace(double val);
void lvl_up_counter_decreace(double val);
void lvl_down_counter_increace(double val);
void lvl_down_counter_decreace(double val);
void mrow();
void endOfMrow();
void resizeBrackets();
void convert(OOX::Logic::COMath *oox_math);
void convert(OOX::Logic::CMathPr *oox_math_pr);
returnValues convert(OOX::Logic::CCtrlPr *oox_ctrl_pr);
void convert(OOX::Logic::CAcc *oox_acc);
returnValues convert(OOX::Logic::CAccPr *oox_acc_pr);
void convert(OOX::Logic::CArgPr *oox_arg_pr);
void convert(OOX::Logic::CBar *oox_bar);
returnValues convert(OOX::Logic::CBarPr *oox_bar_pr);
void convert(OOX::Logic::CBorderBox *oox_border_box);
returnValues convert(OOX::Logic::CBorderBoxPr *oox_border_box_pr);
void convert(OOX::Logic::CBox *oox_box);
returnValues convert(OOX::Logic::CBoxPr *oox_box_pr);
void convert(OOX::Logic::CBrk *oox_brk);
void convert(OOX::Logic::CDelimiter *oox_del);
returnValues convert(OOX::Logic::CDelimiterPr *oox_del_pr);
void convert(OOX::Logic::CEqArr *oox_eq_arr);
returnValues convert(OOX::Logic::CEqArrPr *oox_eq_arr_pr);
void convert(OOX::Logic::CBaseJc *oox_base_jc);
void convert(OOX::Logic::CMaxDist *oox_max_dist);
void convert(OOX::Logic::CObjDist *oox_obj_dist);
void convert(OOX::Logic::CRSp *oox_r_sp);
void convert(OOX::Logic::CRSpRule *oox_r_sp_rule);
returnValues convert(OOX::Logic::CFPr *oox_f_pr);
void convert(OOX::Logic::CFraction *oox_fraction);
void convert(OOX::Logic::CFunc *oox_func);
returnValues convert(OOX::Logic::CFuncPr *oox_func_pr);
void convert(OOX::Logic::CGroupChr *oox_group_ch, OOX::Logic::CLim *oox_lim = NULL);
returnValues convert(OOX::Logic::CGroupChrPr *oox_group_ch_pr);
void convert(OOX::Logic::CLimLow *oox_lim_low, OOX::Logic::CElement *oox_elm = NULL);
returnValues convert(OOX::Logic::CLimLowPr *oox_lim_low_pr);
void convert(OOX::Logic::CLimUpp *oox_lim_upp);
returnValues convert(OOX::Logic::CLimUppPr *oox_lim_upp_pr);
void convert(OOX::Logic::CMathFont *oox_math_font);
void convert(OOX::Logic::CMatrix *oox_matrix);
void convert(OOX::Logic::CMc *oox_mc);
void convert(OOX::Logic::CMcPr *oox_mc_pr);
void convert(OOX::Logic::CMcs *oox_mcs);
void convert(OOX::Logic::CMDel *oox_m_del);
void convert(OOX::Logic::CMIns *oox_m_ins);
returnValues convert(OOX::Logic::CMPr *oox_m_pr);
void convert(OOX::Logic::CMr *oox_mr);
void convert(OOX::Logic::CMRun *oox_run);
void convert(OOX::Logic::CMText *oox_text);
void convert(OOX::Logic::CNary *oox_nary);
returnValues convert(OOX::Logic::CNaryPr *oox_nary_pr);
void convert(OOX::Logic::CGrow *oox_grow);
void convert(OOX::Logic::COMathPara *oox_math_para);
void convert(OOX::Logic::COMathParaPr *oox_math_para_pr);
void convert(OOX::Logic::CPhant *oox_phant);
void convert(OOX::Logic::CPhantPr *oox_phant_pr);
void convert(OOX::Logic::CRad *oox_rad);
returnValues convert(OOX::Logic::CRadPr *oox_rad_pr);
void convert(OOX::Logic::CSPre *oox_s_pre);
returnValues convert(OOX::Logic::CSPrePr *oox_s_pre_pr);
void convert(OOX::Logic::CSSub *oox_ssub);
returnValues convert(OOX::Logic::CSSubPr *oox_ssub_pr);
void convert(OOX::Logic::CSSubSup *oox_ssub_sup);
returnValues convert(OOX::Logic::CSSubSupPr *oox_ssub_sup_pr);
void convert(OOX::Logic::CAlnScr *oox_aln_scr);
void convert(OOX::Logic::CSSup *oox_ssup);
returnValues convert(OOX::Logic::CSSupPr *oox_ssup_pr);
void convert(OOX::Logic::CNum *oox_num);
void convert(OOX::Logic::CDen *oox_den);
std::wstring convert(OOX::Logic::CBegChr *oox_beg_chr);
std::wstring convert(OOX::Logic::CEndChr *oox_end_chr);
void convert(OOX::Logic::CElement *oox_elm);
bool convert(OOX::Logic::CDegHide *oox_deg_hide);
void convert(OOX::Logic::CDeg *oox_deg, OOX::Logic::CElement *oox_elm);
void convert(OOX::Logic::CSup *oox_sup, OOX::Logic::CElement *oox_elm);
void convert(OOX::Logic::CSub *oox_sub, OOX::Logic::CElement *oox_elm);
bool convert(OOX::Logic::CFName *oox_fname, OOX::Logic::CElement* oox_elm);
void convert(OOX::Logic::CLim *oox_lim);
bool convert(OOX::Logic::CChr *oox_chr);
void convert(OOX::Logic::CSup *oox_csup);
void convert(OOX::Logic::CSub *oox_csub);
bool convert(OOX::Logic::CSubHide *oox_subHide);
bool convert(OOX::Logic::CSupHide *oox_supHide);
std::wstring convert(OOX::Logic::CType *oox_type);
void convert(OOX::Logic::CDiff *oox_diff);
void convert(OOX::Logic::CArgSz *oox_arg_sz);
bool convert(OOX::Logic::COpEmu *oox_op_emu);
bool convert(OOX::Logic::CPos *oox_pos);
void convert(OOX::Logic::CVertJc *oox_vert_jc);
void convert(OOX::Logic::CNoBreak *oox_no_break);
void convert(OOX::Logic::CCount *oox_count);
void convert(OOX::Logic::CMcJc *oox_mc_jc);
void convert(OOX::Logic::CPlcHide *oox_plc_hide);
bool convert(OOX::Logic::CRunProperty *oox_r_pr);
//-----------------------------------
std::wstring GetImageIdFromVmlShape(OOX::Vml::CVmlCommonElements* pShape);
void RGB2HSL(DWORD argb, double& dH, double& dS, double& dL);
DWORD HSL2RGB(double dH, double dS, double dL);
private:
std::map<std::wstring, OOX::Vml::CShapeType*> m_mapVmlShapeTypes;
};
} // namespace Oox2Odf